你知道 Linux 系统上那个装好就再也没人看第二眼的小工具——XZ Utils——差点被人埋了后门吗?
对,就是那个你从来没打开过、用 tar -J 解压文件时悄悄干活的家伙。
2024 年 3 月 29 日,一个微软工程师在家跑基准测试的时候,发现登录测试机比平时慢了半秒钟。他没有放过这半秒。他顺着这条线挖下去,找到了一个藏在 XZ Utils 里的后门——有人花了整整两年把它埋进去。
如果当时没人注意到那半秒钟,全球数不清的 Linux 服务器都会变成裸奔的肉鸡。
这个故事现在被一个叫 Adrian Mastronardi 的人写成了一本书,叫 Half a Second。免费看,PDF / EPUB / 网页版都有,CC BY-NC-ND 4.0 协议——你可以读,可以推荐,但不能整本翻译、不能大段照抄。
我读完的感受是:这不是一本技术书,是一本关于开源世界为什么脆弱的书。
一本「慢」的书
书名叫《Half a Second》,但读起来一点都不快。
Mastronardi 把整个事件拆成了 16 章、4 个部分:发现、长线布局、基础设施、余波。从 Andres Freund(那个抓住半秒钟异常的工程师)怎么从 SSH 延迟里嗅出不对劲,到幕后操盘手「Jia Tan」两年潜伏怎么一步步接管 XZ Utils 的维护权,再到 XZ Utils 这种「没人维护的小工具」为什么会成为整个互联网的阿喀琉斯之踵。
他没有用一行代码解释原理。所有技术细节都用大白话讲——讲到什么需要解释什么,就停下来解释什么。这种写法很奢侈,技术圈里很少见。
我最喜欢的细节是作者反复强调的「基础设施的反差」:Linux 内核有几千个全职工程师盯着,OpenSSL 这种明星项目有基金会养着,但 XZ Utils 这种「没人看的小水管」,只有 Lasse Collin 一个志愿者维护了十几年。没人给钱,没人鼓掌,他一个人扛着。
攻击者就是盯上了这个反差。
为什么这故事值得你读
2024 年 XZ 后门事件曝光的时候,新闻一窝蜂地报道了两周,然后所有人就散了——因为「已经修好了」。
但 Half a Second 不这么写。它说:真正的问题不是这一次抓到了,是下一次还会有人这么干。
书里有一句让我脊背发凉的话(不引用原文,意思大意):整个开源世界建立在一个隐含的假设上——那些维护没人要的小工具的人,不会被坏人盯上。但这个假设从来都不成立,因为坏人不按你的剧本走。
这让我想起最近那个让我印象很深的新闻——Arch Linux 的 AUR 仓库,去年夏天被同一个人用类似的套路打了两次。第一次是 1500 个包被注入恶意代码,社区以为修好了,结果没几天第二波攻击来了,这次攻击者学了乖,用上代码混淆,本地 Gemma E2B AI 模型才把它挖出来。
XZ 后门、AUR 二次攻击、还有去年六月的 curl 「夏季歇夏」事件(Daniel Stenberg 因为被海量漏洞报告压垮,宣布暂停接受漏洞报告一个月)——这三件事串起来读,你会发现它们说的是同一件事:
开源世界的安全防线,是靠一两个志愿者在「还行」的状态下撑住的。一旦他们累了、病了、或者被人骗走控制权,整条防线就会塌。
Mastronardi 写这本书的目的就是这个。他不是想吓你,是想让你知道:给那些没人看见的维护者打钱,不是慈善,是基础设施投资。
书的最后还贴了一个 Open Source Collective 的链接——那是给那些没人注意的开源项目维护者发工资的非营利组织。作者的意思很直白:你能免费看这本书,但请把这杯咖啡的钱,给那些在深夜默默修 bug 的人。
开源派点评
读完这本书,我最大的感受是:开源世界从来不缺聪明人,缺的是愿意被看见的笨人。
那些写出 XZ 后门利用代码的人很聪明。但我更佩服的是 Lasse Collin——一个十几年没涨过粉、没拿过一分钱报酬的芬兰程序员,靠一腔热血维护着世界上每个 Linux 系统都会用到的小工具。然后被人盯上、被人欺骗、最后差点把整个 Linux 生态拖下水——而这一切的起因,只是因为他想「找个帮手」。
Mastronardi 没有把他写成受害者。他写的是一个普通人,被另一个更「普通」的普通人(或者说,是一个伪装得很普通的人)用最朴素的社会工程手法操纵了两年。
这也让我想到中国开源圈的现状——我们有多少项目其实也处在「XZ Utils 状态」?某个大学的硕士在维护一个被几千个项目依赖的工具,README 写得稀烂,issue 区堆了一百多个没人回,他的名字从来没出现在任何「年度开源人物」榜单上——直到有一天他累了,把项目 archive 掉,或者更糟,被别有用心的人拿走。
Mastronardi 给这本书起的标题是 Half a Second,一半秒。我猜他想说的是:拯救世界的从来不是什么大事件,是那一点点不愿意放过异常的执拗。
但另一半意思是:这么大的事,居然只用了半秒钟就被错过了。
这本书不长,三个晚上能读完。但它会让你重新看待你电脑里那些装好就再也没动过的依赖项。
↓ 点击阅读原文,查看相关链接 ↓