跳至正文
Wener Notes

CVE-2024-3094

约 2 分钟阅读
  • XZ Utils / liblzma 后门 - 恶意代码被植入上游发布包及构建过程的供应链事件
  • 受污染版本:XZ Utils 5.6.0、5.6.1 的官方发布 tarball
  • 公开披露:2024-03-29,发现者 Andres Freund
  • 严重性:CVSS 3.1 10.0 Critical(Red Hat CNA)
    • CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • CWE:CWE-506(嵌入恶意代码)

成因与影响

  • 发布 tarball 中的构建脚本提取伪装成测试数据的恶意内容,并将其注入生成的 liblzma
  • Git 仓库包含用于承载载荷的测试文件,但关键构建触发代码仅存在于发布 tarball,直接由 Git 生成的源码归档与发布包并不等价
  • 最初披露的注入条件针对 x86-64 Linux、glibc、特定 GCC/GNU ld 及 Debian/RPM 打包环境
  • 部分发行版的 sshd 因 systemd 集成而通过 libsystemd 间接加载 liblzma
    • 受污染库可干预 SSH 认证相关流程,在满足后门触发条件时导致服务被远程控制
    • OpenSSH 本身不直接依赖 liblzma;不能把安装了任意 xz 版本等同于存在这条 SSH 攻击路径
  • 这是特定版本及构建产物中的后门,不是通常意义上的 .xz 文件解压漏洞

修复与处置

  • 按发行版公告替换受污染的 xz/liblzma 软件包,使用可信来源提供的未受影响或已清理版本
  • 上游在 2024-05-29 发布清理后的 5.6.2;这是事件后的清理版本,不代表当前推荐的最新版本
  • 同时检查 liblzma 包、实际加载库的服务、镜像和构建产物;只检查 xz --version 不能确认服务加载了哪一份库
  • 更换库后重启依赖该库的服务或系统,避免进程继续使用原先加载的代码
  • 若确认受污染库曾被暴露的服务加载,应保留调查证据、检查服务完整性和异常认证,按泄露范围轮换凭据;替换库不能撤销已经发生的入侵

PoC

  • amlweems/xzbot 包含后门协议分析、实验用密钥替换脚本、演示客户端和蜜罐补丁
  • 演示需要使实验库中的 ED448 公钥与演示端私钥匹配;仓库默认测试密钥不等于攻击者原始私钥
  • 实验观察流程:受污染库进入测试 sshd → 后门接受匹配密钥签名的特定输入 → 出现预期的命令执行副作用
  • 仓库的蜜罐只记录符合特征的连接;检测命中与真实后门成功执行需要分别判断
  • xz --version 只能确认版本信息,不能代替后门加载和触发条件验证

调侃

免费运维服务

专业黑客团队,再也不怕忘记密码

参考

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

GitHub1 条
其他外链4 条
最近更新commit 0c5208b编辑