Homebrew是macOS和Linux的开源包管理器,其核心是homebrew-core仓库,包含7000多个精选开源软件包。Homebrew使用预编译的二进制分发文件(称为"bottle")来加速安装过程并确保一致性。
当新公式(描述软件包构建方式的机器可读文件)被更新或添加到homebrew-core时,Homebrew的CI系统(通过BrewTestBot编排)会自动触发构建这些bottle的过程。构建成功后,bottle会被上传到GitHub Packages,然后更新相关公式引用。
构建来源提供了密码学可验证的证据,证明软件包确实是由预期的"构建身份"构建的,而不是被特权攻击者篡改或秘密插入的。对于Homebrew来说,这个"构建身份"是GitHub Actions工作流。
每个bottle的构建来源都包含有价值的元数据,如GitHub所有者、仓库、触发工作流的分支、触发事件以及工作流运行的git提交等。这些数据被封装在机器可读的in-toto声明中。
我们基于GitHub的新工件验证功能实现了Homebrew的构建来源验证。这为我们提供了当前和未来所有bottle构建的来源证明,但遗留问题是如何处理大量已有的旧bottle。
我们采用了"回填验证"的方案:
目前该功能处于早期测试阶段,但冒险的早期采用者可以通过两种方式尝试:
我们计划将验证功能直接集成到brew中作为开发者命令。此外,我们也在探索为第三方仓库(taps)添加构建来源验证,并计划进一步实现源代码来源验证。
最后,我们要感谢Homebrew维护者在此过程中的开发和审查,以及GitHub Package安全团队和Alpha-Omega的支持,共同推动更安全、更可靠的软件供应链建设。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。