漏洞简介

xz 是一种通用数据压缩格式,几乎存在于每个 Linux 发行版中,包括社区项目和商业产品发行版。从本质上讲,它有助于将大文件格式压缩(然后解压缩)为更小、更易于管理的大小,以便通过文件传输进行共享。

2024年3月29日,有开发人员在Openwall安全邮件列表发布帖子称liblzma的代码可能被篡改,可能被植入后门代码,该问题记录在CVE-2024-3094下 。在XZ Utils的5.6.0和5.6.1版本中,上游源代码压缩包被破解,并在构建时向生成的 liblzma 库中注入恶意代码;导致通过ssh协议远程连接时,openssh会调用相关恶意函数导致破坏认证,从而达到未授权访问及登陆的影响。

影响范围

xz, xz-utils:5.6.0,5.6.1

到目前,可能受影响的Linux发行版

  • Fedora 41 and Fedora Rawhide(开发版)
  • Debian unstable (Sid)(不稳定版)
  • Debian testing, unstable experimental发行版, 版本从5.5.1alpha-0.1(uploaded on 2024-02-01), 到5.6.1-1
  • Kali Linux 3月26日(包括)之后更新的版本

到目前,暂不受影响的Linux发行版:

  • Red Hat Enterprise Linux (RHEL)
  • Debian 所有稳定版
  • SUSE 全部版本
  • RedHat 全部版本
  • Fedora 40版本

运行时检测方式分析

1. 开启sshd的lzma压缩传输

编辑 OpenSSH 的配置文件 /etc/ssh/sshd_config,在其中添加或修改以下行:

1
codeCompression yes

image-20240331172410544

重启sshd生效

1
systemctl restart sshd

2. 尝试使用sshd连接其他主机

尝试连接主机

1
ssh {用户名}@{你想连的IP}

尝试执行命令,这时候传输的数据会进行压缩

1
ls

image-20240331172820960

3. 观察伪文件目录的情况

此时sshd会加载链接库liblzma,首先我们找到sshd的进程号为3759046

1
ps -ef|grep sshd

image-20240331173100122

进入伪文件系统查看maps,可以发现调用了动态链接库liblzma,我们可以通过这里进行正则匹配检测是否是漏洞利用

1
2
cd /proc/3759046
cat maps|grep lzma

image-20240331173333349

本文采用CC-BY-SA-3.0协议,转载请注明出处
Author: Sally