可重复构建方面的重要新闻:Google 安全团队宣布了OSS Rebuild ,他们的项目旨在为通过 NPM、PyPI 和 Crates 生态系统(以及更多)发布的开源包提供构建证明。
他们目前针对这些生态系统中“最受欢迎”的软件包运行构建:
通过自动化和启发式方法,我们确定目标包的预期构建定义并重新构建。我们将结果与现有的上游构件进行语义比较,并对每个构件进行规范化,以消除导致逐位比较失败的不稳定性(例如存档压缩)。一旦我们重新构建了包,我们就会通过SLSA Provenance发布构建定义和结果。此证明机制使用户能够可靠地在源历史记录中验证包的来源,理解并重复其构建过程,并基于已知功能的基准自定义构建。
目前与重建数据交互的唯一方法是通过他们的Go CLI 工具。我使用 Gemini 2.5 Pro对其进行了逆向工程,并得出了此命令以获取所有构建包的列表:
总共有 9,513 行, gsutil ls -r 'gs://google-rebuild-attestations/**'
这里有一个 Gist 。我使用 Claude Code对它们在不同的生态系统中进行计数(忽略同一软件包不同版本的重复项):
- pypi:5,028 个软件包
- cratesio:2,437 个软件包
- npm:2,048 个软件包
然后我变得有点雄心勃勃……因为文件本身托管在 Google Cloud Bucket 中,我可以在storage.googleapis.com
上的某个地方运行我自己的 Web 应用程序,该应用程序可以使用fetch()
来检索该数据,从而解决缺少开放 CORS 标头的问题?
我让 Claude Code 帮我尝试了一下(我不想为了这一个实验而弄清楚如何创建一个存储桶并配置它以进行网络访问)并且它构建并部署了https://storage.googleapis.com/rebuild-ui/index.html ,它确实有效!
它允许您从 Gist 中搜索包列表,然后选择一个来查看为该包存储的漂亮打印的换行符分隔的 JSON。
输出并不像我期望的那样有趣,但它很有趣地证明了可以构建和部署 Web 应用程序到 Google Cloud,然后可以向其他公共存储桶发出fetch()
请求。
希望 OSS Rebuild 团队将来能为他们的项目添加一个 Web UI 。
来源: Hacker News
标签:谷歌、包装、 pypi 、安全、 npm 、人工智能、生成人工智能、法学硕士、人工智能辅助编程、供应链、氛围编码、克劳德代码
原文: https://simonwillison.net/2025/Jul/23/oss-rebuild/#atom-everything