xz/liblzma后门是开源核弹?或许没那么糟糕!
xz/lzma后门是开源核弹?或许没那么糟糕!
故事背景
2024年3月29日,一份关于在自由软件社区备受争议的开源项目 xz 软件包被上游源代码中的后门所污染的报告在oss-security邮件列表中曝光。这个后门影响到了 liblzma 库,它是 xz 软件包的一部分,在第一份报告发布后有多了很多跟进的研究,内容主要如下:
-
这个后门完整地存在于发布的 xz 源码包中(5.6.0 和 5.6.1 版本),但上游 git 仓库中存在伪装为测试数据,但并未插入 liblzma 中的载荷,而打包前单独加入源码包中的唤醒代码(它们不存在于 git 仓库中,因此从 git 仓库,或由 github 生成的源码包编译的 liblzma 中不会有后门)会将载荷注入到构建过程中。
-
注入的代码修改 Makefile 以包含恶意文件,这些文件在构建过程中被执行,导致进一步的有效载荷注入。
-
这个有效载荷针对的是使用 gcc 和 GNU 链接器的 x86-64 GNU/Linux 系统,并且是 Debian 或 RPM 软件包构建的一部分。
-
恶意代码针对 OpenSSH 服务器进行劫持以实现远程代码执行,但显著降低了登录速度。它通过劫持和修改 liblzma 库中的某些函数来实现这一点,其载荷是间接加载到 sshd 中的。sshd 实现了对 systemd-notify 的支持,liblzma 被加载是因为它是 libsystemd 的其他部分所依赖的,systemd 的复杂度再次成为了实际上的安全隐患。
-
建议立即升级任何可能受影响的系统,因为这些被污染的版本还未广泛被 GNU/Linux 发行版集成。
-
提供了一个脚本来检测系统是否可能受到影响。
-
后门投毒者关闭了 LANDLOCK 沙箱,这个已经被主要维护者修复。
总之,这是一个严重的供应链攻击,影响到 xz 工具及 liblzma 库,可能对 GNU/Linux 生态广泛影响。需要立即采取行动来缓解这一风险。以上是大致的故事,有兴趣的读者可以去阅读相关报告。
谁干的?Jia Tan (JiaT75) 是谁?
xz-utils 的主要维护人员是 Lasse Collin (Larhzu),他从 2009 年开始就是这个开源项目的主要维护者,Larhzu 在2022年6月的邮件中提到过他有精神健康问题,所以大部分的工作由 Jia Tan 来承担。Jia Tan 是2022年3月开始参与 xz-utils 的维护工作,2023 年 1 月第一次由他发布版本,2023 年 3 月他掌控了 tar 包签名发布的工作。
Jia Tan 是中国的 APT 组织吗?
有不少人都猜测 Jia Tan 是中国 APT 组织的可能性,主要是根据中文拼音和 github 上提交使用的是 GMT +8 时区:
单以这两个因为就断定 Jia Tan 和其背后的组织来自于中国 APT 过于草率,主要有以下原因:
- APT组织通常不会使用本国的命名特征
- 长达 2 年的潜伏以及某些技术点的精细化打磨都不太像亚洲 APT 玩家的特点
- 从 Jia Tan 的 github 记录来看,大部分的活跃时间是 UTC时间的上午 11 点到下午 6 点,这个时段对于在亚洲地区为了一份 day job 的打工人来说的可能性不高。
xz/liblzma 后门是开源世界的核弹吗?
应该没有那么糟糕,本次事件在植入早期就被发现,所以并没有影响到生产环境中的 GNU/Linux 系统,此次 Jia Tan 和背后的组织应该是有更多的部署比如渗透进入 Linux 内核社区。不论如何,我们需要感谢这个星球上有像 Andres Freund 这样的工程师。
感觉这个世界危机重重,开源项目还信的过吗?
是的,欢迎来到真实的荒漠。这个世界是充满了危险,但这并不代表是世界末日,攻击者要发动攻击会经过诸多的环节,即使供应链被污染的情况下也能通过技术和其他因素配合检测和阻断后门类的攻击。自由开源软件的最重要的特点是透明度,这让其得到公开审计的几率大大提升,包括此次后门事件也是得益于轻松的可以访问源代码。
SBOM 和 SLA 能完全杜绝此类问题吗?
简单的来说,不能。过去几年业界烧掉了亿万美元去解决供应链问题但效果并不明显,要缓解供应链层面的风险可以借助于 AGI 的相关技术,另外还是善待和鼓励工程师去参与开源最佳实践的建设。
有什么技术方案可以防御供应链污染吗?
不同的场景需要不同的技术应对,除了做好常规的安全加固外,xz/liblzma 后门中所涉及的技术场景会涉及 hook 动态链接过程,如果针对进程的相关代码段做完整性保护是可以检测和阻断出相关问题,VED 在设计时曾经尝试过实现用户空间进程的代码段完整性检测,主要为了针对进程注入的防护
当时也参考了 proc-integrity项目,但用户对此特性并没有太多兴趣,或许 xz/liblzma 后门事件后业界会改变一些想法。
有阴谋论的故事吗?
我们为明天的节日准备了一个故事,幕后黑手其实是 M$,意在摧毁 GNU/Linux 生态,首先,他们秘密收买了 Lennart Poettering,让他开发了 systemd。Lennart 在 M$ 的授意下,将 systemd 逐步渗透到 GNU/Linux 发行版中,为后续行动铺路,2022年3月,M$ 认为可以执行下一步计划了就排出了 Jia Tan 团队跟 xz-utils 社区进行交涉,Lennart Poettering 的任务也宣告结束,2022年6月,M$ 公开召回(雇佣)Lennart,此后 M$ 筹划了 2023 年开始支持 openssh 的 systemd 生态进而让 Jia TAN 去掌控整个 GNU/Linux 生态,只是没想到被一个执着于性能且追求计算美学的工程师破坏了原本完美的计划,M$立马命令Github关闭了相关的帐号以毁灭证据,幸运的是这个蔚蓝色的星球的赛博网络里有时空穿梭机,这让github的重要信息得以保留。警告:这是一个只适合明天讲的故事。
引用
- XZ Backdoor Analysis and symbol mapping, https://gist.github.com/smx-smx/a6112d54777845d389bd7126d6e9f504
- FAQ on the xz-utils backdoor, https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
- modify_ssh_rsa_pubkey.py, https://gist.github.com/keeganryan/a6c22e1045e67c17e88a606dfdf95ae4