最近 linux 行业发生的没有多少实际影响但理论震撼挺大的 xz 后门事件

最早是 Andres Freund 在 OpenWall 报告

https://www.openwall.com/lists/oss-security/2024/03/29/4

中文报道:

没有多少实际影响原因是这个新版本的 xz-utils 只进入了主流 Linux 发行版的测试版本以及 Arch 这种追求最新的滚动发行版的软件仓库。然而由于 Arch 的 sshd 没有链接存在后门的liblzma.so,所以实际上也并没有安全隐患。

[details=“ldd “$(command -v sshd)””]
linux-vdso.so.1 (0x00007ffdc49db000)
libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x00007f04b12c7000)
libpam.so.0 => /usr/lib/libpam.so.0 (0x00007f04b12b6000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007f04b1262000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007f04b118a000)
libcrypto.so.3 => /usr/lib/libcrypto.so.3 (0x00007f04b0c00000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f04b116e000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f04b0a1e000)
libaudit.so.1 => /usr/lib/libaudit.so.1 (0x00007f04b1141000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007f04b09f0000)
libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007f04b113b000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007f04b09e2000)
libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007f04b09db000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f04b09ca000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f04b1436000)
libcap-ng.so.0 => /usr/lib/libcap-ng.so.0 (0x00007f04b09c2000)
[/details]

理论震撼挺大的原因是这让人们重新思考开源软件的可靠性

英文报道 分析制作后门的人使用的化名 Jia Tan 的来历和这件事情的影响之一:

An analysis of that nick name revearls this:

JIA CHEONG TAN
CIA JHEONG TAN
CIA JHON EGTAN
CIA JOHN AGENT
CIA AGENT JOHN
Case closed

The aim was to discredit and essential traditional utility found on any distro NOT COMING from a major corporation or other corporation affiliated entity (like IBM, facebook, google) and in the minds of the many to steer them to a more“reliable”corporate“product”. Should I name it?

这一后门的实现中 systemd 是不可或缺的一环

openssh does not directly use liblzma. However debian and several other
distributions patch openssh to support systemd notification, and libsystemd
does depend on lzma.

systemd 这一 linux 系统的 init 软件的 争议由来已久,很多人认为它是 Broken by design 。虽然如此,很多主流发行版(Fedora,Debain 系)纷纷在 N 多年前采用,并且是作为唯一的选择(例如 Arch没有官方支持)。是时候尝试 支持其他 init 软件 的 Linux 发行版(例如 Gentoo、Devuan、Alpine)和 BSD 了。但问题来了,如果选择历史不长、维护者少(可能只有个位数)的发行版,那又能信得过吗?万一他们的基础设施(如编译服务器上)也有后门呢?
Gentoo 不算小众,历史可以追溯到 2001,但也出过影响不大的 Github 账号被入侵的事件

阴谋论 称:

幕后黑手其实是 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 的重要信息得以保留。警告:这是一个只适合明天讲的故事。

对于普通用户来说 systemd 的种种缺陷 没有太大的感知(反而觉得 systemctl 这个命令太长可能比较常见),并且在 2015 年 ubuntu 选择了它之后至少还加快了启动/关机的速度。因而心态可能是:反正大家都用,systemd 出问题那大家就一起死,现在先用得爽再说。

(安全总是和方便相忤逆。最极端的 QubesOS 将不同的 App(s) 放到不同的虚拟机里做隔离。各种容器也是这样的思想。AppImage/Flatpack/Snap 也有这个思想。最传统的就是不同软件包的文件和运行的进程用基本的 权限系统 隔离。)

2 Likes

产生了信任危机。但也是因为开源,问题暴露的可能性增加了。

linux 什么时候成行业了 :sunglasses: