Supply Chain Attacks
供应链攻击通过受信任的第三方——供应商、 软件、硬件或服务——攻陷组织,利用信任关系实现规模化和持久化。
什么是供应链攻击?
供应链攻击针对供应链中最薄弱的环节,以攻陷下游(downstream) 目标。攻击者渗透供应商、向合法软件注入后门(backdoor),或 攻陷构建/分发流程,从而同时访问多个客户。 它们之所以特别有效,是因为利用了对业务伙伴的隐性信任。
供应链攻击的类型
Software Supply Chain Attacks
对源代码、构建流程或软件分发渠道的攻陷。 攻击者向合法更新中注入恶意软件,这些更新会被 成千上万的组织自动安装。示例:SolarWinds Orion、CCleaner、通过 M.E.Doc 传播的 NotPetya。
Hardware Supply Chain Attacks
在制造或运输过程中向物理组件植入后门。Super Micro (据称)、硬盘中的固件植入、被植入后门的芯片。
Third-Party Service Compromise
对 MSP(Managed Service Providers)、cloud provider 或其他对多个客户拥有 特权访问的服务提供商的攻陷。Kaseya VSA 攻击是近期的一个例子。
Dependency Confusion/Typosquatting
向公共仓库(npm、PyPI、Maven)上传名称与私有内部包 相似或与流行包存在拼写错误的恶意包。利用 dependency resolution 的配置。
著名案例
SolarWinds (2020)
APT29(Cozy Bear)攻陷了 SolarWinds 的 build system,并向 Orion 更新中注入了名为“Sunburst”的后门。它影响了 18,000 多个组织,包括美国政府机构。 它展示了极高的技术复杂度以及供应链攻击的巨大影响。
通过 M.E.Doc 传播的 NotPetya (2017)
攻击者攻陷了乌克兰会计软件 M.E.Doc,并通过合法更新分发了 NotPetya 擦除器(wiper)。它在全球造成超过 100 亿美元的损失,影响了 Maersk、 Merck、FedEx 等公司。
Kaseya VSA (2021)
REvil 勒索软件利用了 Kaseya RMM 软件中的一个零日(zero-day)漏洞,该软件被 MSP 使用。单次攻击通过受影响的 MSP 攻陷了约 1,500 个下游组织。
CodeCov (2021)
攻击者修改了 Codecov 的 Bash Uploader 脚本,以从 CI/CD 流水线中窃取 environment variables。它在数月内泄露了数百个客户的 credentials 和 secrets。
攻击向量
Build System Compromise
攻陷 build/CI-CD 系统可在不修改源代码的情况下向最终 artifact 中注入恶意代码。这使得通过 code review 进行检测变得困难。
Update/Distribution Mechanism
攻陷更新服务器或签名流程可分发 看似合法并通过完整性校验的恶意 payload。
Developer Account Takeover
攻陷在流行仓库中拥有 commit/publish 权限的开发者 账户。可直接 push 恶意代码。
Malicious Packages
向公共仓库上传恶意包,利用 typosquatting、dependency confusion,或看似有用但被植入后门的包。
检测与响应
沦陷迹象
- 软件更新出现异常行为
- 更新后出现意外的网络连接
- 版本之间二进制文件发生变化但无相应的 changelog
- integrity checking 告警失败
- 第三方服务账户的可疑活动
检测工具
- SBOM (Software Bill of Materials): 软件组件清单
- Dependency Scanning: Snyk、GitHub Dependabot、OWASP Dependency-Check
- Binary Analysis: VirusTotal、对可疑更新进行逆向工程
- Network Monitoring: 更新后检测 beaconing 和 C2
缓解策略
Vendor Security Assessment
- 在供应商 onboarding 之前进行严格的尽职调查(due diligence)
- 对关键第三方进行定期安全审计
- 安全问卷与认证(SOC 2、ISO 27001)
- 合同中的安全要求与 right-to-audit 条款
Software Supply Chain Security
- Code signing 与数字签名验证
- Dependency pinning 与 hash verification
- 为关键 dependencies 使用 private package registries
- 对 dependencies 进行自动化漏洞扫描
- SBOM 的生成与跟踪
- 采用 least privilege 的安全 CI/CD 流水线
Network Segmentation
- 将第三方系统与关键网络隔离
- 采用 micro-segmentation 以限制 blast radius
- 为供应商访问采用 Zero Trust Network Access (ZTNA)
- 对第三方流量进行严格监控
Incident Response Planning
- 针对 supply chain compromises 的专门 playbook
- 与供应商建立用于事件协调的沟通渠道
- 针对可疑软件更新的 rollback 流程
- 替代供应商/供货方的应急方案
框架与标准
NIST SSDF (Secure Software Development Framework)
用于开发过程中软件安全的实践,包括对 dependency 漏洞的管理。
SLSA (Supply-chain Levels for Software Artifacts)
Google 的框架,用于确保软件 artifact 从 source 到 deployment 的完整性。
NIST Cybersecurity Supply Chain Risk Management
关于将 supply chain risk management 集成到 cybersecurity 项目中的指导。
最佳实践
- 维护一份所有第三方供应商与软件的最新清单
- 对供应商访问实施 least privilege
- 验证所有软件更新的数字签名
- 为关键 dependencies 使用 private registries
- 持续监控 dependencies 的 CVE
- 在投入生产前于隔离环境中测试更新
- 与供应商建立安全 SLA
- 开展包含 supply chain risk 的 threat modeling
- 就供应链攻击及预警信号对团队进行培训
- 制定针对供应链的专门 incident response 计划
最终建议
供应链攻击代表了网络威胁的一种复杂演进,利用 复杂生态系统中的隐性信任。有效的防御需要一种整体性方法, 结合严格的 vendor risk management、secure software development practices、network segmentation 以及强大的检测能力。组织应当假定供应链 会成为攻击目标,并通过 defense in depth 和 zero trust 原则构建韧性。
