[博客翻译]Xz软件包埋入后门事件分析


原文地址:https://connortumbleson.com/2024/03/31/watching-xz-unfold-from-afar/


在一个普通的周五早晨(2024年3月29日),我在浏览黑客新闻时,看到一篇快速升温的文章——“xz/liblzma上游代码后门导致SSH服务器被入侵”。文章讲述了令人不安的故事:一名叫Andres Freund的工程师正在调查Postgres性能问题,他发现SSH的CPU使用率异常升高。

photo-1519575706483-221027bfbb31.jpg

经过调查,Andres发现问题源于一个名为xz/liblzma的依赖库中的注入代码。他进一步揭示了恶意代码的执行条件以及它如何在SSH认证过程中的RSA部分发挥作用。这一发现拉响了警报,Andres联系了多个组织和个人来验证他的发现,结果证实了他的担忧。

过去48小时里,情况变得非常紧张。起初,我对xz是什么一知半解,只记得它是一个压缩库。xz实际上比我想象的要复杂一些,但我不明白它怎么会和SSH扯上关系,因为openssh的依赖列表中并没有列出xz。我下载了openssh的Debian包并搜索“xz”,发现了一些有趣的信息。

xz-util.png

原来,Debian包在某个时间点移除了使用xz压缩的dh_builddeb覆盖,并在后续版本中重新启用。这意味着Debian可能为SSH添加了一个额外的依赖以引入xz包。得益于Debian对上游软件的补丁处理方式,很容易找到这些变化。

malware-xz.png

了解到依赖链后,我想了解恶意软件是如何注入的以及由谁注入。Andres指出,一个看似无害的提交引入了恶意代码,该提交增加了新的测试文件。然而,任何工程师看到这个提交都会觉得奇怪,因为二进制文件的添加并没有对应的代码引用。

故事变得可疑起来,恶意软件