<!-- title: 慢半秒才露馅：XZ后门差点攻陷全网 -->
<!-- domain: tech -->
<!-- video: https://www.youtube.com/watch?v=aoag03mSuXQ -->

# 慢半秒才露馅：一个开源后门差点攻陷整个互联网

## 导语：差几周，世界的服务器就被人拿到了钥匙

如果你问一个安全工程师"互联网最危险的一刻"长什么样，答案大概率不是黑客电影里那种烟花四溅的攻防，而是——一个代码库的某个测试文件夹里，躺着一段没人会去读的二进制数据，里面藏着一把能开几百万台服务器的万能钥匙。

Veritasium这支54分钟的纪录片《The Internet Was Weeks Away From Disaster and No One Knew》讲的正是这件事：2024年被发现的 **XZ Utils 后门（CVE-2024-3094）**。一个化名"Jia Tan"的攻击者，花了两年半时间，慢慢渗透进一个由单个未领薪志愿者维护的压缩工具，在里面埋下了一个能劫持 SSH 认证的后门。当它被发现时，离进入 Red Hat Enterprise Linux 10、抵达全球数百万生产服务器，只剩下**几周**。

这支视频值得看的理由有三个：第一，它把一个极度硬核的供应链攻击（IFUNC、GOT、audit hook、RSA 劫持）讲成了悬疑片；第二，它没有止步于"黑客很厉害"，而是挖到了真正的病灶——**脆弱的不是代码，是那个累垮了的人**；第三，它抛出了一个反直觉的结论：开源之所以"出事"，恰恰因为它是公开的；而闭源系统里类似的国家级后门，可能永远不会被任何人发现。

## 视频背景卡片

| 项目 | 内容 |
|------|------|
| 视频标题 | The Internet Was Weeks Away From Disaster and No One Knew |
| 频道 | Veritasium（Derek Muller + 安全研究员 Henry van Dyck） |
| 订阅数 | 2090万 |
| 时长 | 约 54 分钟 |
| 播放量 | 1400万+（点赞 38.7万） |
| 发布时间 | 2026年2月25日 |
| 核心主题 | XZ Utils 供应链后门：一次差点成功的国家级网络攻击 |

## 一、一台卡住的打印机，催生了统治世界的开源帝国

视频没有一上来就讲后门，而是先倒带回到1980年代的 MIT AI Lab。Richard Stallman 遇到一台卡纸的 Xerox 9700 打印机，想写个小程序让它通知用户"纸卡了"——就像他几年前为另一台打印机做过的那样。但这次 Xerox 拒绝提供源代码，还要求签保密协议（NDA）。Stallman 后来说，那一刻他意识到"这是一种影响很多人的社会现象"。

于是他在1985年创立了 **自由软件基金会（FSF）**，提出软件的四大自由：运行、研究、修改、分享的自由。为了从法律上锁死这些自由，他发明了 **GPL（通用公共许可证）**，并启动 GNU 项目——一个从零重写的 Unix。1991年，芬兰学生 Linus Torvalds 补上了最后一块拼图：一个被改名叫 Linux 的内核。

> 视频原话定位：这是"为什么开源能赢"的叙事起点。

我的延伸：正因为代码公开免费，Linux 渗透进了吸尘器、摄像头、电视、全球全部500台顶级超算，以及绝大多数互联网服务器——安卓一台就算，全球跑在 Linux 内核上的设备超过30亿。整个生态建立在一个朴素假设上：**代码安全，是因为有足够多的眼睛在盯着它看**（Linus 定律）。这支视频要拆解的，就是这个假设在2024年差点崩塌的瞬间。

## 二、XKCD 漫画不是段子，是预言

视频引用了那幅著名的 XKCD 漫画（#2347）：一整座现代数字基础设施的金字塔，最底下垫着一块小积木，上面写着"由内布拉斯加州某个随机的人维护"。过去大家都当笑话看。XZ 事件证明：**这不是讽刺，是纪实。**

视频给出了三个关键背景，也是我整篇文章认为最值得记住的认知升级：

- **依赖链的真实形状**。Linux 不是一个项目，而是成千上万个做着不同小事的工具和库拼起来的。某个人的"下班和周末业余爱好"如果恰好好用，几百万台机器就会在不知不觉中依赖它。
- **制度化的过劳**。Lasse Collin 从2005年起独自维护 xz-utils，**没有一分钱报酬**。当不耐烦的用户不断施压催更，他的心理健康持续恶化。视频引用了他的原话："我没有失去兴趣，但我去关心的能力已经很有限了，主要是因为长期的心理健康问题……另外要记住，这是一个不领薪的业余项目。"
- **完美的靶子**。XZ 的 LZMA 压缩算法太优秀了，以至于它被几乎所有主流 Linux 发行版采用。攻破这一个工具，约等于拿到互联网上几乎所有服务器的入场券。

这三点合起来，就是 XKCD 那块积木的现实版：**系统的命脉，悬在一个累垮了、没人付钱、没人替补的人身上。**（这是视频的核心论点之一。）

## 三、SSH 的护城河：先约暗号，再验身份

要理解后门有多狠，得先理解它要劫持什么。视频用"调色漆"的比喻拆解了 SSH 的两道锁：

1. **安全通道（密钥协商）**——Diffie–Hellman。双方各拿一种私有颜色，混入同一个公开颜色后互换，再各自混入自己的私有颜色，最终得到相同的密钥；窃听者只看到中间产物，还原不出私有颜色。这一步保证通信不被偷听。
2. **身份认证（RSA）**——服务器发布一个大数（两个秘密素数的乘积），客户端用它加密，只有知道素数因子的服务器能解密。这一步挡住中间人攻击。

Tatu Ylönen 在1995年一次密码嗅探攻击后发明了 SSH，OpenSSH 则成了事实标准，构成"整个互联网的维护骨干"——管理员远程登录、部署、运维，全靠它。

> 我的判断：后门选择的攻击点极其精准。它没有去硬碰 SSH 协议本身（那是数学上被反复审计过的），而是绕到 SSH 运行时调用的、藏在依赖链深处的一个压缩库里——那里没什么人看。

## 四、木马计：把毒药藏进没人会读的测试数据

Jia Tan 的计划分三步，视频分别命名为 **Trojan Horse（特洛伊木马）、Goldilocks（金发姑娘区）、Cat Burglar（飞天大盗）**。这一节拆第一步。

攻击者没有把恶意代码堂而皇之地写进源文件——那样过 code review 会被发现。他把恶意载荷藏进了 XZ 仓库里的**二进制测试数据文件（test blobs）**。这类文件包打包者基本不会去逐字节审，因为它们"只是测试用的"。然后他对 GitHub 上的构建脚本做了一个看起来无害的小改动：让构建过程把这些二进制 blob 解包、注入到 XZ 库里。

> 关键点（视频原话方向）：恶意逻辑从未以人类可读的形式出现在 GitHub 的源码里。

我的延伸分析：这是供应链攻击最阴险的设计原则——**把载荷藏在你信任却从不审查的"资产"里**。同一个思路过去也曾出现在 npm、PyPI 包的安装脚本里。它揭示了一个被忽视的事实：code review 的盲区，往往不是"代码"，而是"数据"——测试数据、配置文件、构建产物、压缩包。

## 五、Goldilocks 窗口：在写完和上锁之间偷天换日

这一步是整个攻击技术含量最高的部分，视频讲得相当清楚，我尽量用人话复述。

当一个程序启动、要调用共享库里的函数时，加载器会把函数的真实地址填进一张叫 **GOT（Global Offset Table，全局偏移表）** 的表里，程序运行时就去这张表查地址。出于安全，现代系统会用 **RELRO** 机制，在填完表后把它标记为只读。

Jia Tan 利用了三个底层机制：

- **IFUNC resolver**：一个在程序加载早期就运行的"函数选择器"，原本是用来为不同 CPU 挑选优化实现。攻击者把恶意代码放进 XZ 库的 IFUNC 里，让它**极早**就执行。
- **dynamic audit hook（动态审计钩子）**：一个底层的加载器特性，能在加载器往 GOT 里写函数地址时触发额外代码。
- **GOT 掉包**：从 IFUNC 里挂上 audit hook，盯住 `RSA_public_decrypt`（RSA 解密/认证函数）这一项。当加载器把真实的 RSA 解密函数地址写进 GOT 之后、RELRO 把表锁成只读之前的那个**极窄的时间窗口**，钩子把这一项偷偷换成攻击者自己的函数实现。

> 视频把这个窗口叫 "Goldilocks zone"（金发姑娘区）——不能太早，不能太晚，必须刚刚好。

我的延伸：这个时间窗就是 RELRO "full" 保护下残留的窗口——它说明**没有哪种防御是绝对密封的**，攻击者总能找到两条机制接缝处的那道光缝。值得补充的是，正是这种"必须在极窄窗口里精准操作"的设计，迫使攻击者写了一大堆内存搜索、字节解码、自定义加密的逻辑——而这，恰好埋下了暴露的种子（见第七节）。

## 六、飞天大盗：自定义握手、主密钥、抹除痕迹

第三步是让后门"既管用又隐形"。掉包后的恶意函数做了几件事：

- 它平时**不发作**，只把请求转发给真正的 RSA 解密函数，行为和正常一样；
- 它暗中监听一种**特殊的"主密钥"交换**——攻击者用自己的迷你加密握手发起请求，函数识别到后才放行；
- 触发后，攻击者拿到 SSH 认证权限，等于拿到了这台机器的 root；
- 函数做了大量**反检测**：混淆字符串、安全检查避免崩溃、并尝试**擦除日志**隐藏痕迹。

视频还在一个克隆的 Veritasium 网站上做了**现场演示**：被攻陷的服务器可以让攻击者拿到 root、篡改网页内容、窃取或篡改数据、装勒索软件。

> 视频原话方向：这套设计"谨慎、细致、几乎隐形"。

我的判断：从红队视角看，这是一个教科书级的"持久化后门"——平时潜伏、按需激活、不留痕迹。它最聪明的地方不是某一个技巧，而是**把多个底层特性串成一条链**，任何单点的代码审计都很难看出问题，因为每一段单独看都"合理"。

## 七、救命的半秒：Andres Freund 和那 400–500 毫秒

故事在这里迎来转折，也是视频标题"差点没人知道"的核心。

Andres Freund，Microsoft 的工程师（也是 PostgreSQL 核心贡献者），根本不是在找安全漏洞。他在 Debian 的不稳定分支上测试一个 Postgres 更新，偶然发现 **SSH 连接比平时慢了大约 400–500 毫秒**。这点延迟微不足道，却让他如鲠在喉——他在几个会议里都没法集中注意力。更早之前，他还注意到 Valgrind（内存调试工具）在跑 XZ 时报过奇怪的错误。

他往下挖，一路追到那些"从不被实际使用的二进制测试文件"，最终看清了真相：一个细致到会遍历内存、解码原始字节、套上自定义加密、还把自己字符串打乱的后门。

> 视频里一位专家说：**"如果他们少做一点混淆，我大概根本不会注意到任何异常。"**

这句话是整支视频的点睛，也是我想安利这支视频的最大理由。它意味着一个反直觉的结论：**打败这个攻击者的，恰恰是攻击者自己的"过于谨慎"。** 混淆越多、代码越复杂、运行时间越长，就越容易在性能曲线上露出一道毛刺。Andres 后来直接绕过已被渗透的 XZ 联系人，把问题报给了 Debian 安全团队；Red Hat 立即回滚了 Fedora；整个开源社区开始解剖这个项目。Andres 因此收到了微软 CEO 的公开致谢。

我的延伸思考：这给了安全工程一个重要启示——**性能异常（延迟、抖动、内存脚印）本身就是一个被低估的检测信号。** 一个系统突然慢了半秒、某段路径的 CPU 占比莫名其妙地变了，往往比任何签名规则都更早地暴露出"有什么东西不对"。进攻方在功能和安全之间永远要权衡，而权衡的副产品，就是可观测的物理痕迹。

## 八、谁是 Jia Tan：国家级行动与刻意的假旗

关于身份，视频保持了克制，这也是我认同的态度。

- **规模即答案**：这是一场长达两年半的社会工程。一批用免费邮箱注册、毫无数字足迹的"马甲账号"持续数月向 Lasse Collin 施压，最终说服他把维护权交了出去。攻击的成本据估算约 **100万美元**，且要求极端的耐心——这是国家级行为体的典型画像，不是求快钱的犯罪团伙。
- **假旗与模糊**：化名听起来像亚洲人，提交时间戳落在 UTC+8（北京时间），似乎指向某一方。但专家普遍认为这是**刻意的误导**——一个在每个细节上都极其 meticulous 的攻击者，为什么偏偏在这里留下显眼的线索？有人注意到时间戳里也混着 UTC+2（以色列/俄罗斯西部时区），有研究者怀疑与某个已知的高级持续威胁组织有关。
- **结尾**：后门曝光的那一刻，Jia Tan 立刻消失了。

我的判断（中立网络安全视角）：在安全领域，**归因（attribution）永远是开放问题，且可能被故意做成谜题**。防御方的正确姿势不是去猜"是谁"，而是默认对手"足够聪明、足够耐心、足够有钱"，并据此设计纵深防御。把注意力放在身份博弈上，反而是中了假旗的下怀。

## 知识结构图：一次后门攻击的完整解剖

```mermaid
flowchart TD
    A["病灶根源:单个未领薪维护者<br/>Lasse Collin + xz-utils"] --> B["社会工程 2.5年<br/>马甲账号施压 → 拿到维护权"]
    B --> C["伪装身份:Jia Tan<br/>看似无害的提交建立信任"]

    C --> D{"三阶段攻击链"}
    D --> E["① 特洛伊木马<br/>恶意载荷藏进二进制 test blob<br/>构建脚本注入,源码里看不见"]
    D --> F["② Goldilocks 窗口<br/>IFUNC 早执行 → 挂 audit hook<br/>GOT 填入 RSA地址后、RELRO锁定前<br/>偷换 RSA_public_decrypt"]
    D --> G["③ 飞天大盗<br/>迷你握手识别主密钥 → 放行<br/>平时转发真函数,擦除日志"]

    E --> F --> G
    G --> H["目标:劫持 SSH 认证<br/>= 拿到 root = 控制数百万服务器"]

    H -.几周内将进入.-> I["Red Hat Enterprise Linux 10<br/>Debian/Ubuntu 生产环境"]

    J["救命的半秒<br/>Andres Freund 发现<br/>SSH 慢 400-500ms<br/>+ Valgrind 异常"] -->|性能异常| K["追溯到 test blob<br/>看清后门"]
    K --> L["绕过被渗透的联系人<br/>直报 Debian 安全团队"]
    L --> M["Red Hat 立即回滚 Fedora<br/>社区全面审计"]

    H -.差点.-> N["💥 全球性灾难:银行/政府/超算被渗透"]
    M -.阻止.-> N

    style A fill:#fde2e2,stroke:#c0392b
    style J fill:#e2fde2,stroke:#27ae60
    style N fill:#fff3cd,stroke:#d39e00
    style H fill:#fadbd8,stroke:#e74c3c
```

## 实战启示：从这次差点翻车里，我们能学到什么

这支视频对普通观众是悬疑故事，对从业者则是一份**免费的供应链安全复盘报告**。我把可落地的启示梳理成五条：

1. **依赖不是代码问题，是人的问题。** XZ 暴露的不是某个算法的缺陷，而是"关键基础设施由单个无薪志愿者独撑"的系统性脆弱。如果你维护的项目里有"只有一个人懂"的核心依赖，最该做的不是写更多测试，而是**降低 bus factor（巴士因子）**：引入第二个维护者、写交接文档、把关键知识摊开来。

2. **Code review 的盲区在"数据"，不在"代码"。** 攻击者把载荷藏进了二进制测试文件。这意味着 review 流程必须覆盖**仓库里所有可执行内容**：测试 blob、构建脚本、安装钩子、压缩资源。配套的技术手段包括**二进制扫描**和**可复现构建（reproducible builds）**——同一份源码，任何人构建出来的二进制必须 bit-for-bit 一致，否则就有人在构建环节动了手脚。

3. **SBOM（软件物料清单）是底线，不是加分项。** 你必须知道自己产品的每一层依赖来自哪、谁维护、上次审计是什么时候。CVE-2024-3094 之所以能快速响应，正是因为发行版清楚地知道哪些包链到了 XZ。没有 SBOM，你连"我有没有受影响"都答不出。

4. **把"性能异常"当成安全信号。** 这次救命的不是任何签名或 IDS 规则，而是"为什么慢了半秒"。在生产环境里，对关键路径（尤其认证、加解密、登录）建立延迟和资源消耗的基线监控，异常的毛刺往往是比告警更早的预警。进攻方在"功能"和"隐蔽"之间的权衡，必然会留下可观测的物理痕迹。

5. **身份认证基础设施要纵深防御。** 既然 SSH 认证函数都可能被劫持，那就别把 SSH 当唯一防线。结合**代码签名（sigstore）、最小权限、网络分段、特权访问管理（PAM）、多因素**，让"拿到一把钥匙"不等于"打开整座城"。

> 一个反直觉但视频反复强调的点：**开源"出事"恰恰是它的优点。** 正因为代码公开，全世界才能一起把这段后门拆解得清清楚楚、并把它变成一次行业学习。同样的国家级后门如果藏在某个闭源系统里，可能永远不会有人注意到那半秒——因为没有人在看。

## 延伸学习路径

1. **Veritasium 原片**：《The Internet Was Weeks Away From Disaster and No One Knew》——本文分析的核心视频，叙事节奏和可视化都是顶级。
2. **XKCD 漫画 #2347 "Dependency"**：那幅"内布拉斯加某个人"的金字塔图，是理解开源依赖脆弱性最直观的一张图。
3. **Red Hat 官方安全公告 CVE-2024-3094** 与 Andres Freund 发现后门的原始邮件：第一手资料，看专业响应流程怎么跑。
4. **Russ Cox / Thomas Rokicki 等人对 XZ 后门的技术拆解博客**：深入 IFUNC、GOT、audit hook 的字节级分析，适合想啃硬核细节的工程师。
5. **关于"可复现构建（Reproducible Builds）"和"sigstore 软件供应链签名"** 的官方文档：把这次教训转化为可落地的工程实践。

## 一句话总结

**XZ 后门差点攻陷整个互联网，而救了我们的不是什么神兵利器，是一个工程师对"为什么慢了半秒"的好奇心——它提醒我们：互联网的地基不是代码，是那些累垮了却没人付钱的人。**

## 参考来源

1. [The Internet Was Weeks Away From Disaster and No One Knew — Veritasium](https://www.youtube.com/watch?v=aoag03mSuXQ) — 本文分析的核心视频
2. [Video Summary - The Internet Was Weeks Away From Disaster (YouTubeSummary)](https://youtubesummary.com/summary/aoag03mSuXQ) — 视频技术要点与攻击链结构化摘要
3. [The Internet Was Weeks Away From Disaster — TubeReads](https://tubereads.com/en/report/veritasium-the-internet-was-weeks-away-from-p4fv-en-standard) — 视频逐章节深度解读
4. [XKCD #2347: Dependency](https://xkcd.com/2347/) — "某个内布拉斯加人维护"的经典开源依赖漫画
5. [Tests suggest Russian satellites can jam GPS — Ars Technica](https://arstechnica.com/space/2026/06/tests-suggest-russian-satellites-can-jam-gps-on-a-continental-scale/) — 关联的现代关键基础设施安全背景报道

---
> 本文由「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)
