可重现的 openSUSE (RBOS) 项目取得里程碑
2025年2月18日 | Douglas DeMaio | CC-BY-SA-3.0
Reproducible-openSUSE (RBOS) 项目,是 openSUSE 的一个概念验证分支,在展示可以使用 100% 完全相同的软件包构建一个可用的 Linux 发行版之后,取得了重大里程碑。
可重现构建确保软件可以在任何时间、任何地点使用相同的工具以完全相同的方式重建。这意味着从相同的源代码重建软件的人将获得完全相同的结果。
为什么这很重要?因为它是供应链安全的关键方面。
由 openSUSE 成员 Bernhard Wiedemann 领导的 RBOS 的这一里程碑,推动了软件供应链安全。
可重现构建使我们能够确认使用的二进制文件是正确的,从而确保软件在构建过程中没有被篡改。通过比较来自不同构建环境的相同输出,开发人员可以检测到诸如竞争条件之类的错误或恶意更改。如果没有它,开发人员必须盲目地信任构建过程或手动审查二进制差异,这既困难又耗时。
在实践中,可重现构建发现了从 竞争条件 到使用类似 `-march=native` 标志为不兼容的 CPU 编译的数十个错误。由于 Linux 是运行互联网的主要组件,它不仅包括服务器和路由器,还包括客户端机器,因此提高安全性至关重要。
nlnet 基金会 NGI0 Entrust 基金 的好人们赞助开源倡议,以提高互联网的安全性。Wiedemann 承担了这项为期 4 个月的项目,以创建一个具有 100% 完全可重现软件包的 openSUSE 分支。到目前为止,ring0(也称为 bootstrap)和 ring1 以及 3,300 个软件包都已成功修补和测试。总的来说,openSUSE Factory 中的 16,000 个源软件包大约有 300 个软件包存在问题,有关此信息可以在以下链接中找到
- https://en.opensuse.net.cn/openSUSE:Reproducible_openSUSE
- https://en.opensuse.net.cn/openSUSE:Reproducible_openSUSE/Part1
- https://en.opensuse.net.cn/openSUSE:Reproducible_openSUSE/Part2
大约需要 40 个补丁,并且在此项目之前完成了更多补丁。通常,其中一半的补丁会被上游化。
有了这个,现在可以更改工具链软件包,重建所有内容,并准确地查看更改的结果。
RBOS 不会收到安全更新,因此不建议将其用于生产用途;但是,它确实展示了如何生成一个完全可重现的操作系统。
随着补丁进入 openSUSE Factory,在一年或两年的时间里,应该更容易创建一个刷新版本。也许它会变得如此轻松,以至于每个月的 Slowroll 快照都可以改编成 RBOS 快照。
正在进行基于 git 的 OBS 工作流的工作,可以进一步支持这项工作,因为像“git rebase”这样的工具可以简化和自动化集成和更新补丁的过程。
如何测试
使用以下命令获取 altimagebuild VM 镜像
wget https://download.opensuse.org/repositories/home:/bmwiedemann:/reproducible:/distribution:/ring1/standard/src/altimagebuild-1-1.1.src.rpm
或者
wget https://rb.zq1.de/RBOS/ring1/_build.standard.x86_64/altimagebuild/altimagebuild-1-1.1.x86_64.rpm
并按照 https://en.opensuse.net.cn/openSUSE:Reproducible_openSUSE/Part2#How_to_run_a_VM 中的文档运行它
可重现构建无法帮助的地方?
- 需要源代码审查才能发现错误 + 源代码中的后门(例如 xz-5.6.0)
- 可以使用多样化双重编译 (https://dwheeler.com/trusting-trust/) 找到所用构建工具中的后门,或者通过引导 (https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/) 避免。这两种方法只有在您拥有可重现构建时才有效。
RBOS 取得的里程碑是一项持续的努力,旨在提供更透明、可验证和安全的软件。