当前位置: 首页 > 技术干货 > liblzma/xz被植入后门,过程堪比谍战片!

liblzma/xz被植入后门,过程堪比谍战片!

发表于:2024-04-01 15:06 作者: 蚁景网安实验室 阅读数(871人)

事件概述

xz是一种几乎存在于所有Linux发行版中的通用数据压缩格式。从5.6.0版本开始,在xz的上游tarball包中被发现了恶意代码,通过一系列复杂的混淆手段,liblzma的构建过程从伪装成测试文件的源代码中提取出预构建的目标文件,然后用它来修改liblzma代码中的特定函数。这导致生成了一个被修改过的liblzma库,任何链接此库的软件都可能使用它,从而拦截并修改与此库的数据交互。

3月29日,微软PostgreSQL开发人员Andres Freund在调试SSH性能问题时,在开源安全邮件列表中发帖称,他在XZ软件包中发现了一个涉及混淆恶意代码的供应链攻击。据Freund和RedHat称,GitXZ中没有恶意代码,只有完整下载包中存在。但是这个代码的提交人两年前就加入了项目维护,暂时不能确定之前的版本有没有问题。

xz 5.6.05.6.1版本库中存在的恶意注入只包含在tarball下载包中。Git发行版中缺少触发恶意代码构建的M4宏。注入期间构建时使用的第二阶段工件存在于Git存储库中,以防存在恶意的M4宏。如果不合并到构建中,第二阶段文件是无害的。在发现者的演示中,发现它干扰了OpenSSH守护进程。虽然OpenSSH没有直接链接到liblzma库,但它以一种使其暴露于恶意软件的方式与systemd通信,而systemd链接到了liblzma。恶意构建会通过systemd干扰sshd的认证。在一定的情况下,这种干扰有可能使恶意行为体破坏ssh认证,并远程未经授权访问整个系统。

截至日前(3月30日),暂未观察到利用此后门代码的行为。

image-20240330165828337

影响的系统范围

xzliblzma 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.05.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 这个包也受影响,暂时不能证明有恶意行为:

image-20240330170102458

过程精彩如谍战片

这可能是最大胆的信息安全事件之一。“最大胆”表明这起事件在手法、规模、影响等方面都超出了我们以往对于攻击的认知,可能是一个全新的安全威胁模型。

"最大胆"一词还隐含着对攻击者心理和技术实力的一种评价。做出如此"大胆"之举的,肯定是心理素质极强、技术水平极高、准备极其缜密的黑客团伙,绝非一般的脚本小子可以企及。

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