什么是供应链攻击

供应链攻击不直接针对预期受害者,而是以受信任的第三方,软件供应商、库开发者或硬件制造商,作为入口。攻击通过这条信任链到达最终目标。

现代软件依赖于无数的开源库和外部服务。如果这条依赖链 (供应链) 中的任何一个环节被入侵,影响就会级联到每一个下游用户。通过利用信任链,供应链攻击与传统攻击方法有着根本的不同。

重大事件

SolarWinds (2020)

IT 管理软件 SolarWinds Orion 的构建系统被入侵,后门被嵌入到合法的软件更新中。该更新被分发给约 18,000 个组织,包括美国政府机构。由于利用了合法的更新机制,检测极为困难。

Codecov (2021)

代码覆盖率工具 Codecov 的 CI/CD 脚本被篡改,导致用户的环境变量,包括认证凭据和令牌,被窃取。通过针对 CI/CD 管道这一开发流程的核心部分,攻击入侵了众多公司的机密信息。

恶意包 (npm / PyPI)

越来越多的案例中,名称与合法包极为相似的恶意包被发布到 npm 和 PyPI 等包仓库。通过域名抢注 (利用打字错误) 和依赖混淆攻击,开发者可能无意中将恶意代码纳入项目。

软件供应链漏洞

软件供应链存在多个攻击面。

  • 开源依赖,一个项目依赖数百个库并不罕见,审计所有库几乎不可能
  • 包管理器,npm、pip、Maven 等包管理器本身可能成为攻击目标
  • 构建系统,在将源代码编译为二进制文件的过程中可以注入恶意代码
  • CI/CD 管道,如果持续集成和交付自动化流程被入侵,影响直接到达生产环境

硬件供应链风险

供应链攻击不仅限于软件。硬件制造和分发过程也存在风险。

  • 预装恶意软件,恶意软件可以在制造或分发过程中植入设备
  • 固件篡改,如果设备固件被修改,操作系统级别的安全措施可能无法检测
  • 假冒组件,伪装成正品的假芯片和组件可能包含后门
  • 中间人攻击,设备在运输过程中被截获和物理篡改的风险不为零

硬件级别的攻击极难检测,仅靠设备加密可能无法提供充分的防御。从受信任的制造商和销售渠道购买设备是基本的保护措施。从 API 安全的角度来看,验证硬件通信的 API 端点的可信度也很重要。

个人层面的防御

虽然供应链攻击很复杂,但个人可以采取措施来降低风险。如需全面了解这一不断演变的威胁,供应链安全书籍提供了必要的背景知识。

  • 保持软件更新,安全补丁是为修复已发现的漏洞而发布的
  • 仅从官方来源下载,始终从开发者的官方网站或官方应用商店获取软件
  • 验证校验和,将下载文件的哈希值与官方值进行比较,确认未被篡改
  • 使用信誉良好的应用商店,Apple App Store 和 Google Play Store 在发布前对应用进行审查
  • 谨慎对待浏览器扩展,扩展可能拥有广泛的权限,恶意扩展可以窃取浏览数据
  • 警惕可疑的软件更新,恶意软件可以伪装成合法的更新通知

勒索软件防护一样,保持日常安全意识是最有效的防御。

组织层面的防御

组织需要系统性的方法来应对供应链攻击。负责组织安全的人员可能会发现 企业网络安全策略指南是有价值的参考。

  • SBOM (软件物料清单) 管理,编目软件中的所有组件及其依赖关系,以实现漏洞追踪
  • 依赖扫描,使用自动化工具持续监控库中的已知漏洞
  • 代码签名验证,实施机制以加密验证软件来自合法分发者
  • 供应商评估,定期评估第三方的安全态势并了解相关风险
  • 零信任方法,将供应链中的每个组件视为潜在威胁并进行持续验证

由于其利用信任关系的本质,供应链攻击难以完全防御。但分层防御可以显著降低风险。无论是个人还是组织,提高供应链安全意识都至关重要。使用 IP 确认验证你的连接安全性,确保你依赖的软件通过受信任的渠道通信。

相关术语

零日攻击 在软件漏洞被公开披露之前利用该漏洞的攻击…… 供应链攻击 渗透软件开发、构建或分发管道的攻击…… 威胁情报 系统性收集、处理和分析信息的实践…… 漏洞管理 发现、评估、优先排序和修复漏洞的持续循环过程…… 容器安全 安全构建、部署和运行容器的全面安全实践……