一、事情概述
在2024年3月28日,研究人员发现在liblzma/xz官方库的5.6.0和5.6.1版本中被发现植入了恶意后门,具体来说,这个后门会篡改Makefile,注入恶意脚本到configure中执行,从而在生成的代码里链接恶意的.o。当满足一定条件,即当前进程是/usr/sbin/sshd,不存在调试环境变量,配置了LANG时,就会触发后门逻辑。攻击者可能利用这一漏洞在受影响的系统上绕过SSH的认证获得未授权访问权限,执行任意代码。
非x86-64架构的系统不受此影响,Git版的xz中也没有发现恶意代码,只有完整下载包中存在问题。因此,建议用户检查xz版本,如果输出为5.6.0或5.6.1,说明系统可能已被植入后门。
二、影响范围
xz 和 liblzma 5.6.0~5.6.1 版本,可能包括的发行版 / 包管理系统有:
Fedora 41 / Fedora Rawhide
Debian Sid
Alpine Edge
x64 架构的 homebrew
滚动更新的发行版,包括 Arch Linux / OpenSUSE Tumbleweed
如果您的系统使用 systemd 启动 OpenSSH 服务器,您的 SSH 认证过程可能被攻击。
非 x64 (amd64) 架构的系统不受影响。
三、
1、排查软件版本是否在受影响范围内
您可以通过在命令行中输入 xz --version
来检查xz的版本。如果输出结果为5.6.0或5.6.1,那么您的系统可能已被植入后门。此外,值得注意的是,xz的5.6.0和5.6.1版本尚未被正式集成进Linux发行版中,目前它们主要存在于预发布版本中。同时,大部分Linux发行版中的openssh并不直接使用liblzma库,目前已知仅有Debian以及一些openssh的补丁直接使用了liblzma库。
2、如果相关版本在受影响范围内,利用如下自查脚本排查是否存在后门:
#! /bin/bash
set -eu
# find path to liblzma used by sshd
path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"
# does it even exist?
if [ "$path" == "" ]
then
echo probably not vulnerable
exit
fi
# check for function signature
if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410
then
echo probably vulnerable
else
echo probably not vulnerable
fi
四、解决方案
将xz版本降级至 5.4.6 版本。