惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Cloudbric
Cloudbric
博客园 - 司徒正美
美团技术团队
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
PCI Perspectives
PCI Perspectives
宝玉的分享
宝玉的分享
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Last Week in AI
Last Week in AI
S
Schneier on Security
N
News | PayPal Newsroom
B
Blog RSS Feed
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
S
Secure Thoughts
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tenable Blog
S
Securelist
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客 把Hexo永久链接迁移到Astro | 姓王者的博客 再见👋 LeanCloud | 姓王者的博客 2025年终总结 | 姓王者的博客 许可合规-fancybox | 姓王者的博客 博客主题的软著下来了 | 姓王者的博客 友链图谱 - 汇聚千丝万缕的联系 | 姓王者的博客 chen-er 专为Chen式ER图打造的npm包 | 姓王者的博客 为什么我推荐你使用GPG来加密你的邮件 | 姓王者的博客 2025第三方客户端登录东北大学邮箱 | 姓王者的博客 好久没更新了,过去与未来 | 姓王者的博客 1024 重要的日子 | 姓王者的博客 再也不见Windows10 | 姓王者的博客 偷梁换柱,解决Ubuntu24.04安装Packet Tracer缺失依赖问题 | 姓王者的博客 中秋-来试试Moonbit吧 | 姓王者的博客 Obsidian使用体验 | 姓王者的博客 猪猪侠·一只老猪的逆袭 | 姓王者的博客 国庆日纪念 | 姓王者的博客 GNU 42周年,AI时代的自由精神 | 姓王者的博客 解决Linux上启动游戏总是默认English的情况 | 姓王者的博客 7x24:运维使命 | 姓王者的博客 Tauri2.x实现系统菜单导航Vue路由 | 姓王者的博客 计算机图形学-基本图形生成算法 | 姓王者的博客 数据库原理-关系数据 | 姓王者的博客 数据库原理-设计技巧 | 姓王者的博客 数据库原理E-R模型 | 姓王者的博客 旧忆 - 我曾玩过的游戏 | 姓王者的博客 再谈自由软件 | 姓王者的博客 可能解决Tauri多窗口应用阻塞问题 | 姓王者的博客 Xingwangzhe! Z-Library We miss you and we need your help | 姓王者的博客 计算机组成原理第二章 - 定点数与浮点数 | 姓王者的博客 计算机组成原理第一章 | 姓王者的博客 不小心写死循环窗口弹出了 | 姓王者的博客 美化Grub界面 | 姓王者的博客 计算机图形学-图形的表示与数据结构 | 姓王者的博客 计算机图形学绪论 | 姓王者的博客 为什么说,大学教育与社会脱节 | 姓王者的博客 VSCode Remote 远程连接服务器记录 | 姓王者的博客 解决Tauri2.x拖拽事件问题 | 姓王者的博客 新学期第一课《计算机图形学》报告 | 姓王者的博客 Tauri在GNOME46+上通知无效的临时解决方法 | 姓王者的博客 窃文者:未经授权转载我文章 | 姓王者的博客 GPG公钥分享文化 | 姓王者的博客 解决在ubuntu上,打包vscode插件问题 | 姓王者的博客 伪造squaremap的玩家显示 | 姓王者的博客 爆,沉浸式翻译泄露敏感信息 | 姓王者的博客 读书:《Free as in Freedom》——若为自由故 | 姓王者的博客 首页文章列表懒加载优化 | 姓王者的博客 Ubuntu 24.04 安装 Vivado 2018.3 | 姓王者的博客 腾讯Edgeone免费版体验 | 姓王者的博客 在 Ubuntu 上实现 Thetis FIDO U2F 密钥登录 | 姓王者的博客 Thetis物理密钥,为什么我们应该使用物理密钥 | 姓王者的博客 高考生过来看!教你精准转换录取位次! | 姓王者的博客 ubuntu无法访问windows磁盘问题 | 姓王者的博客 收信有感,防范钓鱼邮件 | 姓王者的博客 自由不止软件-记录一次zlib上传书籍 | 姓王者的博客 时隔两年,通关夺命邮差2 | 姓王者的博客 博客一周年了,竟然坚持了下来 | 姓王者的博客 Minecraft大电影:不建不散! | 姓王者的博客 是时候了解docker了! | 姓王者的博客 编译原理:LL(1)文法 | 姓王者的博客 编译原理:文法转换 | 姓王者的博客 离散数学:子群的陪集及拉格朗日定理 | 姓王者的博客 离散数学:半群,独异点 | 姓王者的博客 《人工智能生成合成内容标识办法》与个人博客--我们应该做什么? | 姓王者的博客 通识学习:形式语言与自动机,布尔代数与数进制 | 姓王者的博客 Webmapview:一个我的世界内置网页地图浏览Fabric模组 | 姓王者的博客 海岛机器人农场试玩 | 姓王者的博客 正则表达式学习 | 姓王者的博客 抓取个人博客文章目录到github主页 | 姓王者的博客 制作github贪吃蛇贡献图 | 姓王者的博客
Debian 14 强制可重现构建:从"信任我们"到"验证我们" | 姓王者的博客
作者:xingwangzhe · 2026-05-12 · via 姓王者的博客

⚠ 本文存在大量 AI 生成内容:本文中的数据搜集、统计分析、事件梳理和部分观点由 AI 工具自动完成。博主仅进行了审核、修改和风格调整。读者在引用本文中的数据和结论时请注意辨别其可靠性。

可重现构建不是银弹,但它把”信任”变成了”可验证性”。 —— Reproducible Builds 项目

引言

说实话,当我在 debian-devel-announce 看到那条公告时,第一反应是”终于来了”。

2026 年 5 月 10 日,Debian 发布团队正式宣布:可重现构建从”建议”升级为”硬性要求”。不是什么渐进式推荐,不是”我们鼓励这样做”,而是实打实的——你的包不可重现,就别想进 testing 分支1

这意味着 Debian 14 “Forky”(预计 2027 年发布)将成为首个强制要求所有软件包必须可逐位重现的主流 Linux 发行版

这不仅是技术决策,更是一种哲学宣言:软件供应链安全,不能建立在”我相信你的构建服务器是安全的”这种一厢情愿的假设之上。


前置声明

⚠ AI 透明度声明

  • 本文中的数据分析、统计数据、历史事件时间线整理由 AI 工具完成
  • 本文中的行业对比分析和政策解读由 AI 工具生成初稿
  • 博主对全文进行了审核、修正和风格化改造
  • 读者在引用本文数据和结论时请注意独立核实

XZ 后门:那个差点让全世界的 Linux 沦陷的 500 毫秒

要理解 Debian 为什么下这么大的决心,必须先聊 XZ Utils 后门(CVE-2024-3094)。

故事要从 2021 年说起。一个化名 “Jia Tan” 的人开始在 XZ Utils 邮件列表中活跃——提交有用的补丁、帮忙维护 CI/CD、积极参与社区讨论。一切看起来都像一个模范开源贡献者。💦

但事情没那么简单。在长达 2.5 年的时间里,Jia Tan 逐步获得了项目维护权限。2023 年 6 月,他以”性能优化”为由将 ifunc(间接函数调用)功能引入 liblzma。2024 年 2 月和 3 月,XZ Utils 5.6.0 和 5.6.1 发布——发布压缩包中包含了精心隐藏的恶意代码2

后门的目标?通过 libsystemd 的依赖链感染 OpenSSH 服务器,使得持有特定密钥的攻击者能在 SSH 认证之前执行任意代码。简单说——完整的远程 root 权限

CVSS 评分 10.0 满分

XZ Utils 后门事件时间线

XZ Utils 后门攻击时间线:从 2021 年渗透到 2024 年被发现,历时 2.5 年

500 毫秒拯救了世界

这个后门之所以被发现,只能说是个奇迹。

2024 年 3 月 28 日,微软工程师 Andres Freund 在做常规性能测试时,发现他的 SSH 登录比正常情况慢了约 500 毫秒。对,就是半秒钟——这个细微差异引起了他的好奇心。经过深入排查,他追踪到异常来源于 liblzma 库3

最恐怖的是:恶意代码仅存在于发布压缩包中,Git 仓库里完全看不到2。如果没有 Andres 的个人警觉,这个后门可能已经渗透到了 Debian testing、Fedora Rawhide、OpenSUSE Tumbleweed 等所有主流发行版中。

你知道这意味着什么吗?如果 XZ Utils 的构建过程是可重现的,那么任何人从 Git 仓库检出源代码进行独立重建,都会发现重建出的二进制文件与官方压缩包不一致——这个差异本身就是明确的篡改信号。

可重现构建不是用来发现 XZ 后门的,但它能让后门根本无法隐秘植入

但XZ不是孤立事件。根据 Sonatype 2025 年报告,自 2019 年以来供应链攻击增长了 742%4。SolarWinds(2020,18,000 个组织受影响)、Codecov(2021,29,000+ 仓库凭证泄露)、Log4Shell(2021,数十亿设备)——这些反复证明构建过程的不可验证性不是次要质量问题,而是可能导致整个生态系统沦陷的根本性安全缺陷

供应链攻击趋势

近年来软件供应链攻击呈爆炸性增长趋势(数据由 AI 工具整理)


什么是可重现构建

说得通俗一点:同一个源代码,任何人、在任何机器上、在任何时间构建,都应该产生逐位完全相同的二进制文件

不是”功能等价”,不是”大概一样”,而是每一个比特都完全相同

这听起来很简单,实现起来却是个大坑。现代软件构建过程天然就是不确定的:

非确定性来源具体表现解决方案
时间戳编译器嵌入 __DATE__/__TIME__,文件头包含构建时间SOURCE_DATE_EPOCH 环境变量
文件排序readdir() 返回顺序在不同机器上不一致强制确定性排序
构建路径调试信息包含 /home/user/build/foo 等绝对路径-ffile-prefix-map GCC 标志
并行构建make -j 导致输出顺序随机后处理排序
时区/区域locale 影响排序、时间显式固定 LANG=C + UTC
构建IDGNU ld 生成的随机标识符SOURCE_DATE_EPOCH 派生

Debian 在可重现构建这件事上其实已经折腾了十多年——从 2013 年 DebConf13 的头脑风暴开始,到 Reproducible Builds 项目成立,再到 diffoscopereprotestSOURCE_DATE_EPOCH 等一系列工具的开发和普及4

现在的强制政策,只是把这十几年积累的技术能力一次性兑现


数据说话:Forky 的可重现率

截至 2026 年 5 月 12 日,Debian testing(Forky)分支的可重现性数据如下5

以下数据由 AI 工具从 Debian 官方测试基础设施抓取并整理,可能存在时效性偏差。

Debian Forky 可重现构建统计

Debian testing 分支各架构可重现率统计(2026年5月)

架构总源码包数可重现不可重现可重现率
all(架构无关)~24,000~23,728~901~98.2%
amd6437,54428,4461,14375.8%
arm6437,54435,4581,17394.5%

架构无关包(Python、Perl、Ruby 等脚本和文档)的 98.2% 可重现率非常漂亮。amd64 的 75.8% 看起来不高,但请注意——其中 20.8% 的包存在”从源码根本构建不了”的问题,和可重现性本身无关。在能成功构建的包里,可重现率已经接近 96%6

这个数字意味着:技术上已经准备好了,DeFi 是时候出台强制政策了。


强制机制怎么运作

Debian 的政策执行机制相当直接——嵌入在现有的软件包迁移流程中:

  1. 维护者上传包到 unstable(Sid)
  2. 迁移软件 britney 自动检查可重现性(对比两次独立构建是否逐位一致)
  3. 不可重现?拒绝进入 testing。不仅新包受此约束,存量包如果出现可重现性倒退也会被拦截。
  4. 维护者必须修复,或者向发布团队申请例外许可1

一句话:可重现性缺陷现在和 RC bug 具有同等的发布阻断效力

对于确实无法重现的包(比如依赖特定硬件),Debian 保留了例外列表机制。但根据路线图:Debian 16(2031年)的目标是0 例外——所有包可重现4


行业全景:谁在领跑,谁在拖后腿

Debian 不是第一个做可重现构建的,但它是第一个强制要求的

发行版可重现构建对比

主流发行版可重现构建进展对比(数据由 AI 工具整理)

发行版/项目可重现率政策类型独特之处
NixOS~99%核心设计目标内容寻址存储,天然可验证,但从未强制要求
GNU Guix~98%核心设计目标追求可引导构建(Bootstrappable Builds),直击”信任信任”问题
Debian 14~96%强制要求(迁移阻止)首个设硬性门槛的主流通用发行版
FreeBSD 15~95%已实现2025 年达成,无需 root 即可构建
Fedora 45目标99%预期要求2026年3月提案,不阻断但会提交bug
Arch Linux~30%无官方政策滚动发布模型下实现有天然困难

说实话,NixOS 和 Guix 在可重现性上走得比 Debian 更远——Guix 甚至在做可引导构建,试图从几百个字节的二进制种子开始引导整个工具链,彻底解决 Ken Thompson 1984 年提出的”信任信任”攻击7。但问题在于:用 NixOS/Guix 的用户太少了,它们的影响力有限。

Debian 才是真正能把这件事推向主流的关键玩家——120+ 个衍生发行版(Ubuntu、Kali、Linux Mint、Raspberry Pi OS、Tails…)会自动继承这一保证。这种”下游倒逼上游”的生态效应,比任何倡导都有力量3


LoongArch:意外的地缘政治注脚

与强制可重现构建政策同时宣布的另一件事:龙芯 LoongArch 64 位架构正式成为 Debian 14 官方支持架构8

这个时机的选择很有意思。Loongson 作为中国国产 CPU 的代表,在国际开源社区一直面临信任问题——“中国的硬件有没有后门?”

Debian 的答案很巧妙:不需要信任中国的基础设施,因为每一行代码都可以被独立验证。可重现构建框架为跨国技术合作提供了一种超越政治猜忌的工程解决方案。

龙芯团队在过去三年里完成了大量上游化工作——内核、GCC、LLVM、Glibc、Binutils……从约 200 个包的引导开始,到一夜构建 300 个新包8,展现了中国开源社区从”下游使用者”到”上游贡献者”的转变。


别高兴太早:可重现 ≠ 安全

这里必须泼一盆冷水 💦

可重现构建保证二进制与源代码一致,但不保证源代码没有漏洞。一个可重现构建的软件包仍然可能有缓冲区溢出、逻辑错误等安全漏洞。可重现性解决的是”供应链完整性”问题,不是”代码正确性”问题。

更深层的问题是”信任信任”攻击(Trusting Trust Attack):如果编译器本身被感染了怎么办?可重现构建会让你看到”每次构建都一致”,但你看到的”一致”本身可能是被感染的编译器产生的。这是安全领域最深层的难题之一,Debian 目前还没有正式方案应对。


总结

回顾一下整个故事:XZ 后门 → Debian 社区痛定思痛 → 十余年积累的技术基础 → 一纸公告。

从”信任我们”到”验证我们”,这不仅是技术升级,更是信任模型的范式转移。

指标变化
信任基础从信任发行方 → 可独立验证
攻击检测从依赖英雄主义(Andres Freund 的 500ms) → 自动化系统拒绝
成本从全量重建验证 → 只检查哈希不匹配的异常包
生态影响120+ 衍生发行版自动受益

说到底,开源社区最核心的承诺从来不是”我们是完美的”,而是”你可以自己验证”。Debian 14 的强制可重现构建政策,就是把这个承诺变成了可强制执行的技术约束。

我纵有千言万语,却在这里止住,唯有深深佩服与期待。

“可重现构建使得攻击者不仅要入侵官方构建服务器,还要同时欺骗每一个独立验证者——这几乎不可能。” —— Debian 发布团队


⚠ AI 生成内容标注:本文的数据搜集与整理事件时间线梳理统计分析行业对比等部分由 AI 工具自动生成。博主对内容进行了人工审核和风格润色。文中标注 [^n] 的引用由 AI 工具提取自网络来源,请读者自行核实其准确性。

转载声明

本文中除 AI 生成内容外,所有原创内容默认遵守 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC-BY-NC-SA-4.0)。文中引用的数据、图表和第三方内容遵守各自的版权协议。

参考文献

  1. Debian 14 ‘Forky’ to Be First Major Distro Mandating Reproducible Builds. needhelp.icu, 2026-05-12. 链接 ↩ ↩2

  2. Wolves in the Repository: A Software Engineering Analysis of the XZ Utils Supply Chain Attack. arXiv, 2025-04-24. 链接 ↩ ↩2

  3. bits from the release team. debian-devel-announce, 2026-05-10. 链接 ↩ ↩2

  4. The history, status, and plans for reproducible builds. LWN.net, 2024-08-23. 链接 ↩ ↩23

  5. Overview of reproducible builds for packages in forky for amd64. tests.reproducible-builds.org, 2026-05-12. 链接

  6. Debian amd64/forky rebuilderd stats. reproduce.debian.net, 2026-05-12. 链接

  7. Building a Secure Software Supply Chain with GNU Guix. arXiv, 2022. 链接

  8. LoongArch Promoted To Being An Official Architecture For Debian 14. Phoronix, 2025-12-20. 链接 ↩ ↩2