知识库导读 · 约 1,539 字 · 预计推送 1 部分

Dissecting the xz-utils Backdoor — 导读 未开始

目录

元信息

这篇讲什么

2024 年 3 月 29 日,微软工程师 Andres Freund 因为程序慢了 500ms 顺藤摸瓜,揪出了潜伏在 xz/liblzma 里的后门(CVE-2024-3094)。这篇是技术层的深度复盘:作者把后门拆成四个阶段逐层还原——build-to-host.m4 在构建时从"损坏的测试文件" bad-3-corrupt_lzma2.xz 里提取并解码混淆脚本;第二段脚本从 good-large_compressed.lzma 按字节切块、tr 字符替换、再用 awk 实现的变体 RC4(加法代替 XOR)解出恶意目标文件 liblzma_la-crc64-fast.o;最终 payload 链接进 liblzma.so,靠劫持 ifunc resolver 抢在 GOT/PLT 变只读之前改写 RSA_public_decrypt 的地址。攻击者把 Ed448 签名 + ChaCha20 加密的命令藏在 SSH 证书公钥模数里,验签通过才经 system() 执行——只有持有私钥的攻击者能用,签名还绑定主机公钥。反取证同样精彩:用 lzma_alloc 伪分配器做导入解析躲避静态分析、检查 endbr64 是否被断点覆盖、把成功的入侵连接日志伪造成 "Connection closed by ... [preauth]"。

核心观点

这不是所谓的"OpenSSH 认证绕过",而是一条触发条件极苛刻的四阶段 RCE 链:只在 x86-64 且构建环境长得像 Debian(存在 debian/rules)或 RPM(RPM_ARCH=x86_64)打包时才组装,实际中招的全是 unstable/滚动发行版这类本就不该上生产的分支。作者判断这是国家级水准的作业(两年社会工程 + 工程化混淆 + 反取证),而开源的可审计性正是它能被发现的原因。

最值得记住

  1. "慢了 500ms":一个性能毛刺捅穿了整场供应链攻击——可观测性是最便宜的入侵检测。
  2. 触发条件链:x86-64 + Debian/RPM 打包构建,把爆炸半径锁死在开发分支;M 系列 Mac 天然免疫。
  3. 日志伪造:中招机器的 SSH 日志只显示"失败连接变多",管理员几乎无法自证是否沦陷。

对我的启发

适合谁读

安全工程师、运维与平台工程师、想看清供应链攻击全链路的开发者;需要构建系统和链接器的基础概念。零基础读者建议先读 Russ Cox 的时间线再读这篇。

← 资料库今日播报 →