软件供应链攻击正变得越来越普遍,破坏力也越来越强。例如, Gartner公司 预测到 45 年,2025% 的企业将遭遇数据泄露。此外, 网络安全企业 强调了这一威胁的严重性,预计到 138 年,每年的损失将高达 2031 亿美元。总而言之,这些预测凸显了组织迫切需要优先考虑 software supply chain security 并实施强有力的措施来保护敏感数据、操作和声誉。
因为现代 pipeline严重依赖外部组件、第三方库的兴起、更快的软件开发周期、复杂的供应链、缺乏可见性、新的攻击技术、SaaS 的采用以及有限的资源都在推动 软件供应链攻击因此,组织必须采取全面、积极的方法来应对这些挑战并保护其软件供应链。
什么是软件供应链攻击?
ENISA 定义 软件供应链攻击 as “对特定资产(例如软件提供商的基础设施和商业软件)的攻击,间接损害特定目标(例如软件提供商的客户)。” 换句话说,软件供应链攻击是一种针对软件供应链的恶意活动,旨在破坏软件开发和分发流程,并在其中植入漏洞或恶意软件。因此,这类攻击利用了软件构建和交付过程中相互关联且通常复杂的流程、工具和实体网络。
与软件供应链攻击相关的关键组件和概念
网络威胁情报和信息安全文献经常出现故障 软件供应链攻击 将其划分为不同的类别,以便更好地分析和辩护。因此,本节介绍了由 MITRE 攻击模式目录。该目录构建了供应链攻击模式,以便于使用各种来源进行分析,包括 NIST 收集的对抗性威胁。
攻击行为:什么
攻击行为是向系统传递恶意负载或意图的具体行为,从而造成直接损害。
- 示例 1:在构建过程中将恶意软件插入系统软件。
- 示例 2:系统需求或设计文档被恶意更改。
攻击向量:如何
攻击向量是攻击者利用漏洞或进程弱点的方法。因此,它显示了攻击者如何访问和滥用攻击面。
- 示例 1:攻击者修改受损存储库中的源代码。
- 示例 2:攻击者未经授权访问内部技术文档。
进一步探索我们的 攻击媒介词汇表 以获得更多见解。
攻击来源:The Who
来源标识了攻击的来源。因此,它阐明了攻击者的角色、状态或与系统的关系。
- 示例 1:具有构建服务器特权访问权限的内部人员修改了脚本。
- 示例 2:外部威胁行为者将木马程序包上传到公共注册表。
攻击目标:为什么
目标解释了攻击背后的原因。最重要的是,它凸显了对手想要达到的目标。
- 中断:停止服务或建设。
- 腐败:通过改变工件或源代码来降低信任。
- 泄密:泄露敏感机密或知识产权。
攻击影响:后果
最后,影响描述了攻击的结果,显示了对软件提供商和客户造成的后果。
- 示例 1:任何使用错误程序的项目以后都会损坏。
- 示例 2:人们在不知情的情况下将恶意软件安装到他们的工作系统中。
最常见的软件供应链攻击
多种类型的 软件供应链攻击 存在,组织必须意识到生命周期每个阶段的各种威胁载体。基于 SLSA框架, 美国国家研究所 Standard和技术 (NIST)和 网络安全和基础设施安全局(CISA),这些威胁可以分为四类:源风险、构建风险、包风险和依赖风险。
源阶段的软件供应链攻击
- 提交错误代码 → 了解详情 Flask request.get 误用 or 不安全的反序列化缺陷 创建直接攻击面。
- 入侵源代码仓库
- 从修改后的源代码构建
- 编写不安全的代码
- 篡改关键文件 → 详见 chmod 777后门分析.
构建阶段的软件供应链攻击
在 构建阶段,开发人员编译并将代码集成到工作版本中。 计划 这一阶段非常关键,风险包括跳过安全检查 CI/CD pipeline、在版本控制之后更改代码或破坏构建过程。 所以,恶意代码可以悄无声息地潜入工件中。
- 绕道 CI/CD → 链接到 GitHub 预构建恶意软件.
- 在源代码控制之后修改代码
- 妥协构建过程→缓解 DevSecOps 预警检测.
- 破坏工件存储库
软件包阶段的软件供应链攻击
此 包装阶段 是将所有代码整合在一起,形成最终产品的过程。这部分存在风险,因为有人可能会使用不良软件包或更改我们获取软件包的在线渠道。攻击者甚至可以将流行软件包的有害版本上传到这些网站。
- 使用受损包→涵盖 恶意软件扫描器评估.
- 破坏软件包注册表
- 上传修改后的包→进行分析 Namso-gen 假生成器恶意软件.
依赖阶段的软件供应链攻击
在 依赖阶段,我们会将第三方库和软件包添加到我们的软件中。这个阶段是有风险的,因为这些部分中的任何问题都可能轻易且悄无声息地蔓延到项目的其余部分。
- 使用妥协依赖 → 解释 混淆依赖项中的 DoS 风险.
- 过时或易受攻击的依赖项
- 传递依赖风险
- 恶意软件包注册表 → 缓解 DevOps 安全工具 和 第三方风险管理.
供应链各阶段常见风险 SDLC
| 阶段 | 典型威胁 | 例如: |
|---|---|---|
| 来源 |
• 提交恶意或不安全的代码 • 篡改关键文件 • 破坏源代码存储库 |
XcodeGhost(2015): 恶意代码被注入 Apple 的 Xcode 编译器,并在 iOS 应用程序中传播。 |
| 构建 |
• 绕过 CI/CD 安全检查 • 源代码控制后修改代码 • 危及工件存储库 |
SolarWinds Orion(2020年): 攻击者入侵了该建筑 pipeline,在签名的软件更新中插入后门。 |
| 小包装 |
• 上传修改后的包 • 毒害软件包注册表 • 分发受损文物 |
EventStream NPM(2018): 攻击者将后门插入到下载了数千次的流行 NPM 包中。 |
| 依赖 |
• 使用过时或易受攻击的依赖项 • 利用传递依赖关系 • 发布恶意的相似软件包 |
XZ Utils 后门(2024): 一个被木马病毒感染的压缩库几乎被传送到 Linux 发行版中。 |
常见的软件供应链攻击技术
根据 CISA 和 NIST 报告显示,软件供应链攻击通常分为三类。
然而,最近发生的事件显示出开发人员必须了解的其他因素。
下面我们通过实际例子来详细说明最相关的技术。
劫持更新
攻击者破坏合法的更新机制来传播恶意软件。
例如,2017 年的 NotPetya 攻击滥用了乌克兰 MEDoc 税务软件更新服务器,
伪装成补丁的破坏性擦除恶意软件。为了防范这种风险,团队应该应用 DevOps 的威胁检测和响应 标记更新流中的异常行为的实践。
破坏代码签名
该技术涉及滥用或窃取有效的签名证书,使恶意代码看起来合法。
一个值得注意的案例是 2017 年的 CCleaner 漏洞,攻击者分发了使用有效证书签名的木马软件。
因此,组织需要统一的完整性控制,例如 网络安全平台策略
破坏开源代码
对手在流行的开源软件包中插入后门,随后将其引入数千个项目。
EventStream NPM 事件和 XZ Utils 后门(2024)说明了这个向量变得多么重要。
开发人员应该查看以下资源 NPM 安全常见问题解答 和 域名抢注包裹事件 学习如何避免有毒依赖。
依赖混乱
这种攻击由 Alex Birsan 于 2021 年首次描述,它利用内部和公共软件包注册表之间的命名冲突,诱骗构建系统拉取恶意版本而不是受信任的内部软件包。
域名抢注和恶意软件包
攻击者发布名称与流行库相似的恶意包(例如,“reqeusts”而不是“requests”)。
开发人员意外安装了这些内容,将恶意软件引入了他们的项目。
分析了一个真实的例子 Namso-gen恶意软件 在我们的列表中 开源恶意软件扫描程序。
构建 Pipeline 篡改
正如在 SolarWinds Orion 攻击事件中所见,攻击者可以渗透到构建服务器并在编译期间注入恶意代码。
这使得整个签名的工件链不可信。预防技术包括监控 CI/CD 诚信 预警检测 和分析
GitHub 预建恶意软件活动。
软件供应链攻击的典型案例:SolarWinds 案例
最重要的是,SolarWinds Orion 攻击是软件供应链泄露事件中最为著名的案例。它展示了攻击者如何在构建过程中一步步推进,最终将有害代码传播给数千名用户。
首先,攻击者进入了 SolarWinds 的构建服务器。
此后,他们悄悄地将恶意代码添加到 Orion 更新中。
由于这些更新是作为受信任的软件签名和发布的,因此许多公司在不了解风险的情况下安装了它们。
总而言之,超过 18,000 个组织受到影响,攻击者获得了非常敏感的系统的访问权限。
从开发人员的角度来看,这次攻击给出了三个简单的教训:
- 周边防御还不够:攻击者改变了构建 pipeline 本身。
- 持续检查至关重要: 安全的 build attestations、完整性检查和异常检测有助于阻止篡改。
- 一次中毒构建即可波及全球:单个 pipeline 妥协可能引发全球安全危机。
Xygeni:终极一体化 AppSec 平台
由于软件供应链攻击可以发生在软件供应链的每个环节 SDLC,
一体化 AppSec 平台, 西吉尼保护源代码、构建、打包和依赖项阶段。它为开发人员和安全团队提供了一个简便的平台来预防、检测和修复风险。因此,您无需再同时使用多个工具,Xygeni 覆盖了整个生命周期。
源级保护
在源头阶段,风险包括不安全 commits、中毒的存储库或更改的文件。 Xygeni实时扫描二维码 与深 SAST 和秘密检测。
它还可以阻止有害 commit通过 CI/CD guardrails.
这样,问题在离开存储库之前就会被阻止。
构建阶段保护
在构建阶段,攻击者可能会尝试绕过 pipeline或改变文物。
Xygeni 确保构建过程安全 具有符合 SLSA 标准的检查、完整性验证和无密钥签名。它还能监视内部的异常行为 CI/CD 工作。因此,被篡改的版本会被立即标记并在发布前被阻止。
包裹阶段保护
在打包阶段,受损的注册表或修改的库经常会引入恶意软件。 Xygeni 的恶意软件检测和许可证扫描 审查每件文物,同时 AutoFix 建议安全的升级路径 其补救风险分析。只有经过验证且合规的软件包才能继续进行 pipeline.
依赖阶段保护
第三方代码是最大的攻击面。 Xygeni 的软件组成分析 (SCA) 它不仅列出 CVE,还能检查高风险代码是否真的可以被利用。它还能标记隐藏的恶意软件和高风险的传递依赖项。最重要的是,这确保开发人员只交付安全的依赖项。
机密和基础设施安全
除了代码和程序包之外,攻击还经常利用泄露的机密或薄弱的基础设施。 Xygeni 扫描暴露的密钥、令牌和凭证 在代码、配置和 Docker 层中。它还可以验证并自动撤销泄露的机密信息 自动修复。 同时, IaC 扫描 防止攻击者可能滥用的错误配置。
更智能的检测和修复
大多数工具在警报时停止。 Xygeni 更进一步。 它的 AutoFix 引擎可以创建安全补丁, pull requests或根据问题提供分步指导。其“修复风险”视图还会显示哪个补丁版本最安全,以便团队修复问题而无需添加新问题。
一个统一的平台
由于 Xygeni 结合 SAST, SCA、恶意软件检测、机密管理、 IaC 在一个 AppSec 平台中进行扫描、异常检测和安全构建控制,
它全面覆盖 SDLC. 开发人员和安全团队都获得了一个真实来源,具有清晰的可见性、实用的修复以及针对供应链攻击的强大保护。
所有的情况都被考虑到了, Xygeni,终极一体化 AppSec 平台帮助团队快速构建并保持安全。通过保护源代码、构建、打包和依赖项阶段,并在每个步骤添加自动修复,它确保软件供应链攻击在进入生产环境之前就被阻止。





