事件概述
xz
是一种几乎存在于所有Linux
发行版中的通用数据压缩格式。从5.6.0版本开始,在xz
的上游tarball
包中被发现了恶意代码,通过一系列复杂的混淆手段,liblzma
的构建过程从伪装成测试文件的源代码中提取出预构建的目标文件,然后用它来修改liblzma
代码中的特定函数。这导致生成了一个被修改过的liblzma
库,任何链接此库的软件都可能使用它,从而拦截并修改与此库的数据交互。
3月29日,微软PostgreSQL
开发人员Andres Freund
在调试SSH
性能问题时,在开源安全邮件列表中发帖称,他在XZ
软件包中发现了一个涉及混淆恶意代码的供应链攻击。据Freun
d和RedHat
称,Git
版XZ
中没有恶意代码,只有完整下载包中存在。但是这个代码的提交人两年前就加入了项目维护,暂时不能确定之前的版本有没有问题。
xz 5.6.0
和5.6.1
版本库中存在的恶意注入只包含在tarball
下载包中。Git
发行版中缺少触发恶意代码构建的M4
宏。注入期间构建时使用的第二阶段工件存在于Git
存储库中,以防存在恶意的M4
宏。如果不合并到构建中,第二阶段文件是无害的。在发现者的演示中,发现它干扰了OpenSSH
守护进程。虽然OpenSSH
没有直接链接到liblzma
库,但它以一种使其暴露于恶意软件的方式与systemd
通信,而systemd
链接到了liblzma
。恶意构建会通过systemd
干扰sshd
的认证。在一定的情况下,这种干扰有可能使恶意行为体破坏ssh
认证,并远程未经授权访问整个系统。
截至日前(3月30日),暂未观察到利用此后门代码的行为。
影响的系统范围
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
认证过程可能被攻击。非x86-64
架构的系统不受影响。
if ! (echo "$build" | grep -Eq "^x86_64" > /dev/null 2>&1) && (echo "$build" | grep -Eq "linux-gnu$" > /dev/null 2>&1);then
你可以在命令行输入xz --version
来检查xz
版本,如果输出为5.6.0
或5.6.1
,说明你的xz-utils
已被植入后门。
$ xz --version
xz (XZ Utils) 5.6.1
liblzma 5.6.1
目前迹象表明,后门作者有选择性的针对linux
发行版下手。但这个liblzma
可不只Linux
上用。比如目前流行的iOS
越狱环境,大部分tweak
包还是以.deb
格式发行,比较新的版本就用到了lzma
作为压缩。除此之外,近期有在 macOS
上使用brew
安装过xz
这个包也受影响,暂时不能证明有恶意行为:
【—-帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
过程精彩如谍战片
这可能是最大胆的信息安全事件之一。“最大胆”表明这起事件在手法、规模、影响等方面都超出了我们以往对于攻击的认知,可能是一个全新的安全威胁模型。
“最大胆”一词还隐含着对攻击者心理和技术实力的一种评价。做出如此”大胆”之举的,肯定是心理素质极强、技术水平极高、准备极其缜密的黑客团伙,绝非一般的脚本小子可以企及。
1、一个不知名团伙注意到OpenSSH
依赖一个名为liblzma(xz)
的小众开源压缩库。
2、他们虚构了一个名为”Jia Tan”的开发者身份,从2021年10月开始为xz
项目积极做贡献,逐渐获得信任,并最终接管了维护工作。
3、2024年2月,”Jia”在构建脚本中引入了一个复杂隐蔽的后门,该后门似乎针对OpenSSH
的身份验证前加密功能,可能添加了”主密钥”让攻击者随意访问受影响服务器。
4、 “Jia”联系Linux
发行版维护者,试图让带后门的xz
库被打包分发给用户,直到微软员工Andres Freund
因调查SSH
延迟问题发现了此事。
这可能是一次有外国政府支持的职业行动,而非业余爱好者所为。更根本的是,xz
后门不是一个技术问题,可能也不能单靠技术来解决。归根结底,这是一个反情报挑战——完全属于政府和少数拥有生态系统范围监控能力的商业实体的能力范畴。这尤其包括谷歌和微软。事实上,这里有一个有趣的想法:也许他们已经知道了很长一段时间。我们能分辨出这是为了掩盖”手段和来源”而精心设计的披露,还是偶然发现的吗?
检测和解决方法
解决方法:
降级到5.6.0以下版本
更新到官方最新版5.6.4
检测脚本:
#! /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
更多网安技能的在线实操练习,请点击这里>>