漏洞简介
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 |
重启sshd生效
1 | systemctl restart sshd |
2. 尝试使用sshd连接其他主机
尝试连接主机
1 | ssh {用户名}@{你想连的IP} |
尝试执行命令,这时候传输的数据会进行压缩
1 | ls |
3. 观察伪文件目录的情况
此时sshd会加载链接库liblzma,首先我们找到sshd的进程号为3759046
1 | ps -ef|grep sshd |
进入伪文件系统查看maps,可以发现调用了动态链接库liblzma,我们可以通过这里进行正则匹配检测是否是漏洞利用
1 | cd /proc/3759046 |
本文采用CC-BY-SA-3.0协议,转载请注明出处
Author: Sally
Author: Sally