本博客总结了网络研讨会《Supply Chain :攻击者利用的薄弱环节》的核心要点。点击此处观看完整研讨会。
随着企业日益依赖开源组件、外部软件包和自动化开发管道Software 风险已急剧攀升。那些曾经看似无害的细微漏洞如今会引发切实后果——尤其当依赖关系日益复杂且难以验证时。
这一转变的鲜明例证便是近期爆发的npmShai-Hulud蠕虫及其升级版Shai-Hulud 2.0。该恶意软件通过受感染的软件包传播,短短数小时内便波及数千个下游项目。此类事件清晰揭示了一个事实:供应链漏洞不再局限于局部范围,而是会像多米诺骨牌般蔓延至整个生态系统。
现代软件中70%至90%由开源组件构成,而开发者大多从未直接接触这些组件,因此细微问题可能迅速演变为重大风险。然而仅有15%的企业对其开源风险管理能力充满信心。预计到2025年,70%的恶意人工智能攻击将瞄准供应链,识别软件供应链中的薄弱环节已成为当务之急。
对工程和安全团队而言,其益处显而易见:掌握这些薄弱环节的位置意味着减少意外情况,加快响应速度,并大幅降低成为下一个供应链安全事件头条新闻的风险。
软件材料清单不再是可选项
为管理软件供应链风险并应对漏洞问题,企业需要清晰掌握其软件堆栈的构成。这种可视性的基础在于软件物料清单(SBOM),它能提供必要的透明度以理解组件风险,并在问题出现时迅速采取行动。
软件物料清单(SBOM)被定义为应用程序中所有闭源和开源组件、许可证及依赖项的详细清单。该清单为透明度、合规性和风险管理提供了关键数据。
今日看似无害或无恶意的事物,明日便可能变得脆弱或恶意。由于漏洞会持续被发现——包括旧版本中的漏洞——因此需要持续监控和清点。
George Prichici产品副总裁,OPSWAT
SBOM 与 SCA
一个关键点在于区分SBOM(Software )与SCA(Software 分析)。SBOM相当于组件清单或目录,而SCA则评估这些组件是否存在漏洞、过时或风险。二者结合能为组织提供必要洞察,助力其做出明智决策、更快响应安全问题,并强化整体风险管理。
| 类别 | SBOM | SCA |
|---|---|---|
目的 | 部件清单 |
识别组件中的漏洞
|
风险覆盖 | 合规性与可见性 | 安全风险、CVE漏洞、运行时风险 |
时机 | 部署前/采购 | 持续集成/构建与运行时 |
全球性举措——部分源于SolarWinds等攻击事件——如今要求软件物料清单(SBOM)的实施。随着美国网络安全与基础设施安全局(CISA)、国家安全局(NSA)、国家标准与技术研究院(NIST)等机构的监管推动,以及欧盟和北约盟国的政策导向,SBOM透明度已不再是可选项,而是对所有软件供应商的基本要求。
攻击者利用的7个关键薄弱环节
现代发展的迅猛速度,加之对第三方和开源代码的高度依赖,已催生出严重的漏洞。威胁行为者正利用七大主要薄弱环节:
1. 开源与依赖风险
当开发者优先考虑速度时,他们往往会直接使用大型开源库而不进行全面代码审查。单个组件可能引入额外的传递依赖。若仅监控顶层代码,就可能遗漏被注入到这些隐藏传递依赖中的恶意代码。
这种模式在开源生态系统中屡见不鲜。一个被入侵的软件包可能通过依赖链层层扩散,在无人察觉的情况下被下载数百万次。近期涉及加密恶意软件的npm供应链攻击事件,就生动展现了这种情况在现实中的发生过程。
最佳做法:
- 扫描所有开源软件包及其完整的依赖链,在漏洞、过时组件或隐藏的恶意软件进入您的代码库之前将其识别出来。
- 持续监控随时间变化的依赖项,因为安全组件可能因新出现的CVE漏洞或恶意更新而变得存在风险。
- 使用可信的软件源并验证软件包完整性,以确保您下载的软件包未被篡改。
- 实施策略以标记或阻止高风险许可证,确保不兼容或病毒式许可证条款不会混入您的构建中。
- 延迟使用新发布的软件包,直至其经过审核,以降低将未经审查或恶意版本引入环境的风险。
2. 许可风险
许可问题如今对工程领域的影响已不亚于法律领域。病毒式许可协议(如GPL)可能强制要求最终应用程序采用相同许可协议发布,这可能导致企业丧失自身知识产权(IP)。由于许可条款可能随时变更——即便是早期合规版本亦然——因此必须实施持续监控。
最佳做法:
- 使用自动许可证检测工具,在开发初期就标记高风险或不兼容的许可证。关于其重要性的深入解释详见此文:《许可证检测在开源安全中的关键作用》。
- 持续追踪许可证变更,及时发现可能影响合规性或知识产权暴露的变动。
- 在组件进入代码库之前,对其进行审查或阻止那些采用限制性或病毒式许可的组件。
- 保持所有在用许可证的清晰清单,以简化审计和风险评估流程。
3. 软件物料清单数据缺失或缺少软件物料清单
尽管法规要求共享软件物料清单(SBOM),但仅提供高层次清单远远不够。要实现有效的风险缓解与预防,必须包含详细数据点,包括作者、贡献者、发布频率及维护状态等信息。
最佳做法:
- 通过重新扫描组件来增强SBOM报告,使其包含更新的许可证数据、漏洞状态及其他关键元数据。具体操作示例详见CycloneDX SBOM报告验证与增强部分。
- 使用自动化工具验证并丰富软件物料清单(SBOM),确保信息完整、准确且可操作。
- 要求供应商提供完整的软件物料清单深度,包括传递性依赖项及所有相关元数据。
- 随着组件演变或新漏洞出现,持续更新并监控软件物料清单(SBOM)库存。
4. 第三方供应商
您所依赖的每个供应商都将成为供应链的一部分。若其交付过时或存在安全隐患的组件,您将直接承担相应风险。完整的软件物料清单(SBOM)——包括传递性依赖项——能让您快速掌握风险敞口,而非在安全事件发生后才匆忙追查供应商。近期发布的《Supply Chain依赖项漏洞》一文,深入探讨了团队如何强化这一环节的管控能力。
5. 人工智能Supply Chain
由于人工智能的快速普及,团队常绕过常规限制,这已成为主要攻击途径。攻击者将恶意代码植入机器学习模型、PICO文件或开源库中。在Pytorch等环境中,用户可能误拉取错误库,这种"拼写劫持"行为十分常见——此类库会传播恶意软件,最终在工程师设备上实现完整的远程代码执行。
6.Container
容器扫描必须超越仅关注漏洞的局限。现代安全防护还需检测恶意软件、加密货币挖矿程序以及公开容器镜像中发布的快速传播威胁。近期对 Container -2024-0Container 的分析表明,此类问题极易被忽视。
7. 机密与凭证泄露
当团队快速推进时,常会将访问密钥或凭证硬编码到源代码中用于测试。即便后续被覆盖,这些机密信息往往仍残留在Git历史记录中,攻击者可通过扫描轻易发现。本文《揭露隐蔽威胁:如何检测代码中的机密信息》将阐述此类泄露的成因,并指导团队采取防范措施。
构建Secure Software Supply Chain之路
为应对这些威胁,安全团队必须采用"左移"策略,即在开发周期更早阶段就实施与发布前相同的策略。目标是将安全作为覆盖层集成到现有的持续集成/持续交付(CI/CD)管道中。这种自动化方法能在必要时确保策略执行,同时不影响工程团队的生产效率。
一个全面的解决方案必须提供:
- 自动化供应链扫描贯穿整个流程
- 源代码、容器和供应商提供的文件的可见性
- 超越CVE漏洞的分析,用于检测恶意软件、许可证问题及暴露的机密信息
OPSWAT 如何OPSWAT 弥补这些漏洞
- Multiscanning 在管道早期阶段检测恶意软件
- 集成式CI/CD安全门禁系统,适用于GitHub、GitLab、TeamCity、Jenkins等平台
- 自动化SBOM生成与漏洞映射
- 工件签名与完整性验证
- 机密扫描与凭证卫生规范执行
立即联系我们的专家,为您量身定制技术栈解决方案。


