一句话:提出开发阶段隔离,将构建自动化视为程序代码来建模权限,原型 Foreman 可检测 XZ Utils 攻击中的投毒测试文件。
开源 C 项目不仅包含 C 代码,还包含用于编译、测试和打包的构建系统代码。这些代码对软件供应链安全至关重要,却易遭投毒,XZ Utils 和 SolarWinds 攻击即为近例。现有供应链安全方法多验证依赖,经典安全检查器也只分析程序代码,且被投毒的构建系统可禁用这些检查。本文提出“开发阶段隔离”,把构建自动化的信息与行为权限当作程序代码来建模,以加固构建系统。作者原型实现 Foreman,成功检测并警告 XZ Utils 攻击中涉及的投毒测试文件,并计划未来自动检查开发阶段隔离,使构建系统安全检查器像程序代码检查器一样普及。
Open source C code underpins society’s computing infrastructure. Decades of work has helped harden C code against attackers, but C projects do not consist of only C code. C projects also contain build system code for automating development tasks like compilation, testing, and packaging. These build systems are critcal to software supply chain security and vulnerable to being poisoned, with the XZ Utils and SolarWinds attacks being recent examples. Existing techniques try to harden software supply chains by verifying software dependencies, but such methods ignore the build system itself. Similarly, classic software security checkers only analyze and monitor program code, not build system code. Moreover, poisoned build systems can easily circumvent tools for detecting program code vulnerabilities by disabling such checks. We present development phase isolation, a novel strategy for hardening build systems against poisoning by modeling the information and behavior permissions of build automation as if it were program code. We have prototyped this approach as a tool called Foreman, which successfully detects and warns about the poisoned test files involved in the XZ Utils attack. We outline our future plans to protect against pipeline poisoning by automatically checking development phase isolation. We envision a future where build system security checkers are as prevalent as program code checkers.