# XZ Utils：清单回答有什么，后门出在怎么来的

向软件使命时代进军 · 方法经 案-07 / 13

本文独立成篇。作者 陈鹏 · 二〇二六年十月

![封面](https://kos-tl.github.io/cases/cover-c07.png)

> 关节：软件物料清单回答系统里有什么。后门出在它是怎么被做出来的。不能误读成开源不安全，也不能误读成「扫描器再升级一次就够」。构建过程本身是可信计算基。

## 经过

2024 年 3 月 29 日，微软工程师安德烈斯·弗罗因德在 Debian 开发版环境中对 PostgreSQL 做基准测试时，注意到一件小事：SSH 登录耗时从约 100 毫秒变成约 500 毫秒。四百毫秒让他开始追查。失败的 SSH 登录消耗异常多的 CPU；对 sshd 做性能剖析，liblzma 占用显著时间，工具却定位不到具体函数。顺着 Valgrind 的报错，他在 XZ Utils 的发布压缩包中找到恶意代码。

后门在 5.6.0 与 5.6.1。持有特定 Ed448 私钥的攻击者可以绕过 OpenSSH 认证，在受影响系统上执行任意代码。CVSS 满分 10 分。恶意代码藏在被修改的构建脚本与经过混淆的二进制测试文件中，只存在于发布压缩包里，不在 Git 仓库中。对源码仓库的常规审查——无论多么仔细——都不可能发现它。sshd 本身并不依赖 liblzma。许多发行版给 sshd 打补丁以支持 systemd 通知，libsystemd 的其他部分依赖 liblzma。后门被间接加载进最关键的守护进程。载荷在进程名为 sshd 时激活，成功利用不产生任何日志记录。

植入者是一名受信任的联合维护者。此人近两年前开始为项目贡献代码，逐步建立信誉，直至获得维护者权限。整个渗透持续大约两到三年。这不是一次漏洞利用。这是一次针对开源供应链信任结构的、有耐心的社会工程。后门已被打包进 Fedora 40 beta、Debian unstable/testing 等开发版本，尚未进入主要发行版的稳定版。发现后二十四小时内，Red Hat、SUSE、Debian 回退受影响的包，CISA 发布公告。发现纯属偶然。如果那天没有那个基准测试，后门可能已经进入全球数以亿计的系统。

一份软件物料清单会准确地告诉你：系统依赖 xz-utils 5.6.0。这个信息完全正确。它不会告诉你——也无法告诉你——这个版本的发布压缩包里，藏着一个与源码仓库不一致的后门。清单回答「有什么」。后门出在「怎么来的」。


![清单回答有什么，后门出在怎么来的](https://kos-tl.github.io/cases/fig-c07-pass.png)

## 剖析

定义上，托付是压缩与解压按公开规范工作，不得在 sshd 的路径上留下可被远程触发的暗门。禁区是构建产物必须等于被审查的源。禁区写在「我们信任维护者」这一句习惯里。能力是全球发行版自动拉取 tarball。禁区弱于能力。

对齐失败发生在 Git 与发布压缩包之间，发生在源码审查与构建脚本之间。写下的是开源仓库。编进发行版的是另一份归档。跑在 sshd 进程里的是被间接加载的 liblzma。世界上几乎发生的是：稳定发行版带上一个可以绕过 OpenSSH 认证的后门。弗罗因德拦住的是时间窗口，不是结构。结构仍在：维护权、构建脚本、发行产物，三条绳子没有被绑成一条。这次发现依靠运气。一个价值数十亿美元的全球软件生态，安全在这一次依靠的是偶然。

达成若等于「依赖更新成功、CI 绿灯、SBOM 已生成」，这一案在被发现之前全部达成。物料清单可以列得出 xz。列不出联合维护者如何取得权限，列不出发布压缩包比 Git 多了什么，列不出构建时哪一段脚本被执行。清单是目录。目录不是证据。

可信计算基在供应链上被拉长。原维护者、新维护者、发布压缩包、发行版构建农场、下游 sshd 的间接链接，每一截都在 TCB 里。TCB 必须闭合：闭合不是把名单写长，是每一截的变更都能被独立验证，Git 与产物必须可复现地对上，维护权转移必须被当作高影响变更而不是社区逸事。两年到三年的耐心，专门选择质量体系最不盯的那一截——人，以及「不是业务代码」的构建脚本。

人的位置被推到一位做性能测试的工程师身上。立法在开源许可证里几乎不谈行为保证。划界没有一个独立验证者有权拒绝「tarball ≠ git」的发行。审判发生在 CPU 占用异常被看见之后。把文明的最后一道检查交给偶然的性能好奇心，不是方法。

它也钉住假使命的一种形态：用合规的清单代替构建过程的论证。清单越完整，越像已经回答了供应链问题。真正的问题是：这一次进入稳定分支的字节，是不是仍是被托付的那一份。


![SBOM 不是构建证据](https://kos-tl.github.io/cases/fig-c07-cut.png)

## 对方法的一针

> SBOM 不是构建证据。git 与发行产物必须可复现地对上。构建脚本与维护权转移，必须按与内核补丁同等的纪律验证。压缩库可以走进 sshd。走进 TCB 的依赖，必须先被约束。

---

知识操作系统是架构主张，不是已经交付的操作系统。使命软件工程学尚没有形成。

详细论证、数据口径与未解清单，见同题专著《向软件使命时代进军》第13稿。

在线阅读：檄文 [kos-tl.github.io](https://kos-tl.github.io/index.html?lang=zh) · 专著 [kos-tl.github.io/book](https://kos-tl.github.io/book/) · 体系图 [kos-tl.github.io/system](https://kos-tl.github.io/system/) · 典型案例 [kos-tl.github.io/cases](https://kos-tl.github.io/cases/)

上一篇：《CrowdStrike：保护软件成为可信计算基》　下一篇：《红许可证：实现满足规范，可以完美执行假使命》

https://kos-tl.github.io/cases/xz/
