XZ是类Unix操作系统上的一种无损数据压缩格式,通常与gzibzip2 等其他常见数据压缩格式进行比较。 XZ Utils是一个命令行工具,包含XZ文件和liblzma的压缩和解压缩功能,liblzma是一种用于数据压缩的类似zlib的API,并且还支持旧版 .lzma 格式。

3月29日,有开发人员在安全邮件列表上发帖称,他在调查SSH性能问题时发现了涉及XZ包中的供应链攻击,进一步溯源发现SSH使用的上游liblzma库被植入了后门代码,恶意代码可能允许攻击者通过后门版本的SSH非授权获取系统的访问权限。恶意代码修改了liblzma代码中的函数,该代码是XZ Utils软件包的一部分,链接到 XZ 库的任何软件都可以使用此修改后的代码,并允许拦截和修改与该库一起使用的数据。

事件历程

2021年,一个名为 JiaT75(Jia Tan)的用户在 GitHub 上创建了账户,并向 libarchive 项目提交了一个看似无害但实际可疑的补丁。这个补丁被合并到了代码中。

2022年,Jia Tan 通过邮件列表提交了一个补丁,随后一个新的人物 Jigar Kumar 开始施压要求合并这个补丁。不久之后,Jigar Kumar 开始向 XZ 项目的维护者 Lasse Collin 施压,要求增加另一位维护者。在这一过程中,JiaT75 开始对 XZ 项目做出贡献。

2023年,JiaT75 在 1 月 7 日合并了他们的第一个提交,表明他们已经获得了足够的信任。3 月份,Google 的 oss-fuzz 项目的主要联系邮箱被更新为 Jia 的邮箱。

2024年,有人发现并报告了一个上游 XZ/liblzma 库中的后门,这个后门可能导致 SSH 服务器被攻陷。这个发现通过电子邮件发送给了 oss-security 邮件列表,并在文章中提供了详细的技术分析。

liblzma/xz库被植入后门 (CVE-2024-3094) 影响SSH事件

受影响版本

目前已知XZ Utils版本5.6.0和5.6.1受到影响,恶意代码还不存在于XZ的Git发行版中,仅存在于完整的下载包中。 已知的Linux发行版:

  • XZ Utils == 5.6.0
  • XZ Utils == 5.6.1

自查脚本

#! /bin/bash
set -eu
# 查找利用liblzma的sshd路径
path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"


# 检验调用路径是否存在
if [ "$path" == "" ]
then
  echo "XZ-CVE-2024-3094漏洞不存在"
  exit
fi


# 检验函数签名
if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410
then
  echo "XZ-CVE-2024-3094漏洞存在"
else
  echo "XZ-CVE-2024-3094漏洞不存在"
fi

或手动运行 xz -V 或 xz -version检查xz版本。

解决方案

若使用了受影响版本xz/liblzma的操作系统(Fedora 41、Debian sid 测试版等)建议更新至安全版本。具体详情可在查询 https://repology.org/project/xz/versions

相关新闻

联系我们

联系我们

400-0512-768

邮件:support@sworditsys.com

工作时间:周一至周五 8:00 - 21:00

分享本页
返回顶部