liblzma库的门自供应链攻击爆出来那天,我正盯着服务器发呆。门自CVE-2024-3094,门自评分10.0,门自攻击者悄悄在xz-utils里塞了后门。门自最讽刺的门自是,这个后门在压缩包里的门自代码是完整的,但GitHub上公开的门自源码却干干净净——有人把恶意代码藏在了测试文件里,就等着编译时发作。门自 先别急着查版本号。门自5.6.0和5.6.1是门自官方确认的受害版本,但更关键的门自是看二进制文件的构建时间。有人拿着ldd命令到处跑,门自结果一堆静态编译的门自软件全报“链接到liblzma”,吓得够呛。实际上,只有那些在2024年2月24日到3月28日之间、用特定方式编译的系统才真正中招。 我自己排查时踩了个坑。网上流传的检测脚本只查sshd进程,但如果你跑的是容器化服务,或者用了musl libc,那套脚本基本白搭。更靠谱的做法是直接看liblzma.so.0的符号表——正常版本里不该有`_xz_crc64`相关的异常导出。有个老哥分享了他的土办法:用`strings`命令搜`gotcha`,这词儿确实出现在恶意代码里,但前提是你的发行版没strip过符号。 个人判断:这次事件最吓人的不是后门本身,而是它居然能活过代码审计。攻击者把payload拆成三段,分别藏在不同的测试文件里,每段单独看都像无害的测试数据。这种手法,传统的SAST工具根本扫不出来。 如果你用的是Debian或Ubuntu,直接看`/var/log/dpkg.log`里xz-utils的安装时间。要是恰好落在那个窗口期,别犹豫,立即降级到5.4.6。Fedora用户则要检查`rpm -qa --last`的输出。但别迷信发行版公告——有个发行版声称“不受影响”,结果他们的backport版本里居然带了部分恶意补丁。 还有个容易被忽略的点:检查你的CI/CD流水线。很多人只在生产服务器上排查,但开发机的Docker镜像里可能早就缓存了带后门的xz版本。我见过一个团队,生产环境干干净净,结果构建机上的缓存镜像害他们重新部署了三次。 真正让人后背发凉的是时间线。攻击者从2021年开始就持续提交代码,两年多时间只为了获取信任。这种耐心,比任何零日漏洞都可怕。所以自查时别只盯着二进制,看一眼你的源码仓库里有没有可疑的贡献者——特别是那些只改注释、加测试用例的“热心人”。 最后提一句,别急着删库重装。先备份`/usr/lib/x86_64-linux-gnu/liblzma.so.0`,用`objdump -T`看看有没有异常符号。我这边查了十几台机器,大部分只是虚惊一场——但那一两台真中招的,全是跑了半年没更新系统的老家伙。安全补丁这东西,真不能欠债。