什么是供应链攻击
供应链攻击不直接针对预期受害者,而是以受信任的第三方,软件供应商、库开发者或硬件制造商,作为入口。攻击通过这条信任链到达最终目标。
现代软件依赖于无数的开源库和外部服务。如果这条依赖链 (供应链) 中的任何一个环节被入侵,影响就会级联到每一个下游用户。通过利用信任链,供应链攻击与传统攻击方法有着根本的不同。
重大事件
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 确认验证你的连接安全性,确保你依赖的软件通过受信任的渠道通信。