<!-- title: 越藏越露：半秒延迟拆穿XZ后门 -->
<!-- domain: tech -->
<!-- video: https://www.youtube.com/watch?v=aoag03mSuXQ -->

# 越藏越露：半秒延迟如何拆穿差点瘫痪全球的XZ后门

## 导语：一场没人注意的"差一点"

2024年3月29日，整个互联网距离一场无声灾难只差几周。这不是夸张——一个被悄悄植入Linux核心压缩工具的后门，差几周就要进入Ubuntu 24.04 LTS和Red Hat Enterprise Linux的稳定版，一旦得逞，攻击者将拿到一把"万能钥匙"，可以在全球数以亿计的服务器上无凭证执行root命令，而所有日志都显示正常登录。

Veritasium这期53分钟的纪录片《The Internet Was Weeks Away From Disaster and No One Knew》（互联网差点瘫痪却没人知道）讲的正是这件事。它最值得看的地方，不在于渲染恐惧，而在于它把一个极度硬核的漏洞——CVE-2024-3094，CVSS满分10.0——拆成了三步，让你看清：原来互联网的地基，是靠免费人力撑起来的；而那颗炸弹之所以被拆除，靠的不是任何安全产品，而是一个工程师对**半秒延迟**的好奇心。

更反直觉的是：**让这个后门暴露的，恰恰是它最引以为傲的"隐蔽性"。** 它藏得太用力，反而把自己藏露了。这正是这期视频最精妙的内核。

## 视频背景卡片

| 项目 | 内容 |
|------|------|
| 视频标题 | The Internet Was Weeks Away From Disaster and No One Knew |
| 频道 | Veritasium（Derek Muller） |
| 订阅 | 2090万 |
| 时长 | 约53分钟 |
| 播放量 | 1400万+（发布约4个月） |
| 发布时间 | 2026年2月25日 |
| 核心主题 | XZ Utils供应链后门（CVE-2024-3094）事件全复盘 |

## 核心内容拆解

### 1. 一台卡纸的打印机，如何垫起了整个互联网

视频没有一上来就讲漏洞，而是从1984年一台卡纸的Xerox 9700打印机讲起。Richard Stallman想修这台机器，却被NDA（保密协议）挡在源代码门外。这个挫败感催生了自由软件运动：1985年他创立自由软件基金会（FSF），写下GPL许可证，启动GNU项目，把Unix从头重写一遍以避开AT&T的诉讼。1991年，Linus Torvalds补上了最后一块——内核，也就是Linux。

讲这段历史不是怀旧，而是为后面埋一个关键前提：**Linux能渗透进安卓的30多亿台设备、全球500强超级计算机的全部500台、绝大多数互联网服务器，靠的正是"源代码公开、人人可审"这个假设。** 而XZ后门，正是对着这个假设的软肋精准下刀。视频用这段铺垫告诉你：你要理解一个压缩库为什么"重要到值得被攻击"，得先理解整个互联网是站在免费、公开代码的地基上的——这是我延伸补充的判断框架。

### 2. 地基是一个人：维护20年、零薪酬、长期抑郁

这是整件事最让人脊背发凉的部分。XZ Utils（核心算法是LZMA）是几乎所有主流Linux发行版默认使用的压缩工具——你装的每个软件包、每条更新，背后都可能经过它。而维护它的，是瑞典开发者Lasse Collin一个人，从2005年起，**没有一分钱报酬**。

视频引用了Collin的原话："我没有失去兴趣，但我的'在乎能力'已经很有限，主要是长期心理健康问题……也要记住，这是个无报酬的爱好项目。"XKCD那张著名的漫画——现代数字基础设施全压在"内布拉斯加州某个随便的人"维护的一小块代码上——在XZ事件里被证明**不是段子，是纪录片**。视频的核心论点之一是：代码依赖链真正的脆弱点，不在代码本身，而在那个疲惫的、无人接济的维护者。我非常认同这个判断——XZ事件的本质不是技术bug，是一个社会工程的"单点故障"。

### 3. 两年半的"温柔夺权"：Jia Tan的社会工程

攻击者用一个叫"Jia Tan"（JiaT75）的虚拟身份，花了**整整两年半**潜伏。手法极度耐心：先做无害的小提交积累信誉，成为贡献者；再用一批用免费邮箱注册、毫无数字足迹的"sock puppet"傀儡账号，长期向Collin施压，抱怨更新太慢，最终劝他交出维护权限。

视频估算这场行动成本约**100万美元**——这是国家级攻击者的典型特征，而不是追求快钱的犯罪团伙。关于"Jia Tan"是谁，视频处理得很克制：提交时间戳指向UTC+8（北京时间），但专家普遍认为这是**假旗操作（false flag）**，因为整件事其他细节都滴水不漏，唯独国籍线索太刻意。我在这里刻意不展开归因地缘政治——那既无法证实，也偏离了技术本质。真正该记住的是：**当一个项目只有一个人能合代码，攻击者要做的不是黑掉代码，而是黑掉这个人。**

### 4. 第一层·木马：把载荷塞进"没人看的"测试文件

进入技术硬核区。后门的第一层是**特洛伊木马**。攻击者没有把恶意代码直接写在人能读的源文件里（那样GitHub上一眼就会被审到），而是把加密混淆后的二进制载荷，藏进了仓库里两个"测试数据"文件：`tests/files/bad-3-corrupt_lzma2.xz`和`tests/files/good-large_compressed.lzma`。

这些`.xz`/`.lzma`文件本应是用来测试压缩算法的样本，打包者几乎从不会去检查它们的二进制内容。真正让它"动起来"的，是一个被改动的构建脚本`m4/build-to-host.m4`：当你在打包环境里运行`./configure`时，这个脚本会判断当前是不是在构建特定发行版的包（x86-64 Linux、gcc、特定打包工具链），如果是，就解码这些"测试文件"，把恶意目标码悄悄注入到`liblzma.so`的编译产物里。

**关键点在于：GitHub上可见的源码是干净的，毒在发行版的tarball里。** 这意味着传统的"审Git历史"根本发现不了——这是视频点破、也最容易被普通开发者忽略的盲区。

### 5. 第二层·Goldilocks时机劫持：IFUNC + audit hook + GOT表项替换

这是整个后门技术上最精妙、也最值得拆解的一层。我把它称为"金发姑娘时机"劫持——攻击者要在一个**极窄的时间窗口**里完成偷梁换柱。

先补三个底层概念（视频用动画讲得很清楚）：
- **GOT（Global Offset Table，全局偏移表）**：程序运行时，靠这张表去找共享库里函数的真实内存地址。
- **IFUNC resolver**：glibc的一个特性，允许库在加载早期"动态挑选"某个函数的实现（比如针对不同CPU选优化版本）。
- **dynamic audit hook（动态审计钩子）**：动态链接器的一个底层机制，能在加载器往GOT里写函数地址时插一脚。

攻击链是这样的：因为`liblzma`用IFUNC实现了CRC校验函数，攻击者就在IFUNC resolver里塞了恶意代码。当ssh守护进程`sshd`启动、连带加载`liblzma`时（Debian/Ubuntu的sshd链了systemd，systemd链了liblzma），IFUNC resolver提前执行，它会挂上一个audit hook。

此时魔法发生：**加载器刚把`RSA_public_decrypt`（OpenSSH认证RSA公钥时调用的函数）的真实地址写进GOT，但还没把GOT标记成只读——这个窗口，就是Goldilocks zone。** audit hook在这个窗口里把GOT表项偷换成攻击者自己的函数，然后GOT才被锁成只读。结果：**OpenSSH的源码一行没动，它调用的却已经不是真正的RSA验证函数了。**

这种手法的高明之处，在于它绕过了对OpenSSH本身的所有审计（OpenSSH是全世界审计最严的项目之一），把毒下在它信任的依赖里，并通过运行时内存重定向实现。这是视频的技术高潮，也是我见过的供应链攻击里设计最精密的一次。

### 6. 第三层·飞贼：Ed448主密钥 + 自擦日志

替换上去的那个假函数，平时**完全伪装成真函数**——绝大多数调用都透传给真正的`RSA_public_decrypt`，不留痕迹。它只在收到一个特殊信号时才激活：客户端发来的认证数据里，藏着一个用攻击者的**Ed448私钥**签名过的载荷。只有能通过这个"迷你加密握手"的请求，才会被后门解析成可执行命令，以root身份在服务器上运行。

视频用一个克隆的Veritasium网站做了**实时演示**：被植入后门的服务器，攻击者无需任何密码，直接拿到root控制，能改网页、偷数据、装勒索软件。同时这个后门还做了大量"自我保护"：混淆所有字符串、做安全检查避免崩溃、**主动擦除日志**。它不是莽夫，是个飞贼（cat burglar）。

### 7. 半秒延迟与Valgrind：好奇心如何拆掉一颗炸弹

拆弹过程本身就是个传奇。Andres Freund（微软工程师、PostgreSQL核心贡献者）根本不是在找漏洞——他只是在Debian unstable上给PostgreSQL做性能基准测试。他注意到两件"不对劲"的小事：一是`liblzma`在Valgrind下报奇怪的内存错误；二是SSH连接比平时**慢了约400–500毫秒**，还更耗CPU。

就是这个半秒，让他"在开会时都无法集中注意力"。他一路追下去，最终找到了藏在二进制测试文件里的后门。2024年3月29日，他绕过可能已被污染的XZ联系人，直接报告给Debian安全团队；Red Hat当天回滚Fedora，CISA发警报，CVE-2024-3094诞生。

**最反讽的点**：有专家指出——"如果他们少做点混淆，我大概根本不会察觉哪里不对。" 后门为了隐蔽而做的种种加解密、内存翻找、字符串扰乱，**全部都需要时间**，正是这些额外开销，把一个本可隐身的漏洞，变成了一个可被感知的延迟。**它的隐蔽性，杀死了它的隐蔽性。** 这是整期视频最漂亮的认知反转，也是我标题"越藏越露"的由来。

### 8. 真正的漏洞不是代码，是免费的人力

视频最后抛出一个被很多人误读的结论：XZ事件**不是开源的失败，而是开源的胜利**。因为代码公开，全世界才能在几小时内把它拆解干净、写成讨论、修掉、形成行业教训。换成闭源系统，一个国家级后门可能只需要一张法院命令或一次内部串通，**没有任何社区成员会注意到那半秒延迟**。

真正的漏洞是：我们用善意和免费劳动力，而不是可持续的制度，搭起了互联网的地基。视频呼吁给关键开源项目提供资金、多维护者、更强的审计与可复现构建（reproducible builds）保障。

## 知识结构图：后门的三层攻击链

```mermaid
flowchart TD
    A["社会工程潜伏 2.5年<br/>Jia Tan 接管 XZ 维护权"] --> B["第一层·特洛伊木马<br/>载荷藏入 tests/ 二进制测试文件"]
    B --> C["构建脚本 m4 劫持<br/>./configure 打包时解码并注入 liblzma"]
    C --> D["IFUNC 解析器<br/>liblzma 被 sshd 加载即执行"]
    D --> E["第二层·Goldilocks 时机<br/>audit hook 在 GOT 写入后、只读锁定前介入"]
    E --> F["GOT 表项替换<br/>RSA_public_decrypt → 攻击者函数"]
    F --> G["第三层·飞贼<br/>Ed448 主密钥握手 / 透传真函数 / 擦除日志"]
    G --> H{"攻击者持主密钥?"}
    H -->|是| I["无凭证 root 远程命令执行"]
    H -->|否| J["装作无事 全程无痕"]
    K["半秒延迟 + Valgrind 报错<br/>Andres Freund 的好奇心"] -.中断.-> F
    style K fill:#fff3cd,stroke:#d39e00,stroke-width:2px
    style E fill:#f8d7da,stroke:#dc3545,stroke-width:2px
```

图中黄色节点是那个改变历史的"侧信道信号"——一个性能异常；红色节点是整个攻击最精密的时机劫持。

## 实战启示：普通人能拿走什么

如果你是开发者或运维，这期视频给你的行动清单相当具体：

**第一，重新审视你的依赖供应链。** 审Git历史不够，要审**发行版tarball**——因为毒可能只在打包产物里。给CI加上二进制blob扫描，把"测试数据文件"也纳入代码审查范围。

**第二，推动可复现构建（Reproducible Builds）。** 如果任何人都能从源码独立构建出与发行版逐字节一致的二进制，那像XZ这种"源码干净、tarball有毒"的手法就会立刻露馅。这是最有效的结构性防御。

**第三，别让你的项目成为下一个XZ。** 关键库至少要有多个维护者、明确的继承与移交机制；公司从开源白嫖的每一行代码，都该反哺成赞助和工程师工时。你用着免费的地基，就有义务给它续命。

**第四，认真对待"侧信道"。** 安全检测不能只靠扫特征码。XZ是被**一个性能异常**抓出来的。这意味着团队里那种"看到不对劲就放不下"的工程师文化，是真正的防线——一个对500ms延迟较真的人，价值远超一款昂贵的扫描器。给"好奇心"留预算。

**对普通读者而言**，最大的认知升级是：互联网从来不是"坚不可摧"，而是"刚好没出事"。它的韧性来自公开和众包，它的脆弱也来自众包的无偿。理解这一点，你才会明白为什么开源安全是所有人——不只是工程师——都该关心的事。

## 延伸学习路径

1. **Andres Freund的原始披露帖（oss-security邮件列表，2024-03-29）**——第一手现场，看顶级工程师如何一步步定位。`openwall.com/lists/oss-security/2024/03/29/4`
2. **CVE-2024-3094（NVD）与CISA警报**——官方漏洞条目与应急响应原文，适合建立标准化的漏洞认知框架。
3. **"The Long Con: Dissecting the XZ Utils Backdoor"（cvereports.com）**——比视频更细的技术拆解，含IFUNC/GOT的源码级分析。
4. **Qualys / Zscaler 的技术博客**——企业视角的检测与缓解方案，适合SecOps落地。
5. **Reproducible Builds 项目官网**——理解结构性防御，把"信任源码"升级为"信任可复现的二进制"。

## 一句话总结

XZ后门最大的教训不是它设计得多巧妙，而是整个互联网的地基建立在免费人力之上——而那颗炸弹之所以被拆除，恰恰因为它藏得太用力、慢了半秒，又恰恰因为代码是公开的，才能被一双好奇的眼睛在几小时内拆穿。

---

## 参考来源

1. [The Internet Was Weeks Away From Disaster and No One Knew — Veritasium](https://www.youtube.com/watch?v=aoag03mSuXQ) — 本文分析的核心视频
3. [CVE-2024-3094 — NVD (NIST)](https://nvd.nist.gov/vuln/detail/CVE-2024-3094) — 官方漏洞条目（CVSS 10.0）
4. [CISA 安全警报：Reported Supply Chain Compromise Affecting XZ Utils](https://www.cisa.gov/news-events/alerts/2024/03/29/reported-supply-chain-compromise-affecting-xz-utils-data-compression-library-cve-2024-3094)
5. [The Long Con: Dissecting the XZ Utils Backdoor — cvereports.com](https://cvereports.com/reports/CVE-2024-3094) — 技术深度拆解

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
