供应链安全
概述
供应链安全(Supply Chain Security)研究软件从源代码到可执行文件再到最终部署的完整链路中,每个环节可能成为攻击入口的问题。由 Ken Thompson 于1984年开创。
关键内容
Thompson 的洞察
Thompson 在1984年图灵奖演讲中首次展示了供应链攻击:通过攻击编译器(开发工具)来间接攻击所有由该工具生产的软件。这种"上游攻击"理念是供应链安全的核心。
攻击向量
- 编译器木马:在编译过程中注入恶意代码
- 构建管线入侵:如2020年 SolarWinds 事件
- 包管理器投毒:npm、PyPI 等包管理器中的恶意包
- 依赖链攻击:通过依赖的依赖注入恶意代码
现代案例
- SolarWinds(2020):攻击者入侵构建系统,在 Orion 软件更新中注入 SUNBURST 后门
- Codecov(2021):攻击者修改 CI/CD 脚本
- event-stream(2018):npm 包被注入窃取加密货币的代码
防御方案
- 可重现构建:任何人都能独立验证二进制文件与源代码一致
- 多样化双重编译(DDC):用两个独立编译器分别编译并比较结果
- 形式化验证:如 CompCert(经过数学证明的 C 编译器)
- 软件物料清单(SBOM):记录软件的所有组件和依赖
来源
- raw/books/计算机科学/15-thompson-trusting-trust.md
相关
- Thompson 信任信任论文 — 开创方向
- Ken Thompson — 开创者
- 可重现构建 — 工程回应
- 中间人攻击 — 攻击形式之一