2024年3月29日,开发人员在SSH性能调查中发现xz组件中包含后门,影响了liblzma库,并且该后门事件已被分配编号CVE-2024-3094。奇安信技术研究院“天问”软件供应链安全监测平台利用积累的海量软件空间测绘数据,发现开源生态中的若干软件存在使用后门组件的情况,其他系统、软件和固件上暂未发现直接使用后门组件的情况

具体地,我们的测绘分析发现crates.io中的liblzma-sys包使用了受后门影响的版本。对于其他软件以及固件,由于含有后门的两个版本的发布时间在2024年2月24日之后,目前尚未被多数软件使用,因此对现有软件的影响有限。但是,由于实际使用中历史版本的xz组件有可能升级到后门版本从而产生影响,因此,我们对xz组件的历史版本影响情况进行了全面测绘分析,以便相关人员和组织排查可能的风险,尽管这些版本没有受后门影响。

1.背景介绍

XZ Utils是一组在类Unix系统中使用的开源数据压缩工具,包括程序lzma和xz,目前已集成在Debian、Ubuntu、CentOS等发行版中。它采用高效的 LZMA 算法,能够实现较高的压缩比率,支持多种压缩格式,适用于各种文件存档、数据备份和软件分发等场景。

3月29日,一名开发人员在安全邮件列表中发帖称[1],在调查SSH性能问题时发现了涉及xz包的供应链攻击。调查发现,SSH所用的liblzma库被植入了后门,可能导致攻击者非授权获取系统权限。该后门修改了liblzma代码,允许攻击者拦截和修改数据,影响使用xz库的下游软件。目前在xz组件的v5.6.0和v5.6.1版本中发现了该后门,两个版本分别发布于2024-02-24和2024-03-09。该贴同时发布了快速检测脚本,并公布了该后门的编号CVE-2024-3094。

2.天问测绘结果

奇安信技术研究院“天问”软件供应链安全监测平台基于强大的知识库,拥有软件供应链安全事件监测和影响范围测绘能力,能够自主进行软件成分分析并生成软件影响图谱。天问平台具备三大能力:软件组成成分分析能力、全网软件空间测绘能力和安全事件监测预警能力。用户可通过浏览器访问天问平台,将待测试软件直接上传天问进行分析。天问支持跨CPU指令集、支持跨操作系统平台检测,目前支持十余种软件安装包格式,二十余种打包格式和十余种固件格式的的分析,还支持对Docker等容器镜像的分析。

“天问”软件供应链安全监测平台提供软件成分分析功能,能够从软件中提取其使用的组件和版本并给出安全建议。在xz组件后门事件曝光后,我们立刻对xz组件的影响进行了初步的事件影响测绘分析,分析范围涵盖操作系统、开源生态、安卓应用、固件镜像、存量软件等多个不同维度。

2.1 可能受后门影响的软件

我们在部分知名开源软件生态中发现了明确使用后门版本的组件。

2.1.1 crates.io

在crates.io生态中,我们发现了liblzma-sysliblzma两个软件包可能受该后门影响,其中liblzma-sys仅被liblzma包依赖。我们发现liblzma-sys在2024年1月26日更新了0.3.0版本,并在3月12日更新了0.3.1版本。在该包的简介中,开发者明确说明了0.3.x版本使用了xz的5.6版本,正好是存在后门的版本。此外,根据我们的测绘数据,crates.io生态中依赖这两个包的全部包名如下:libpnapnanod

2.1.2 Rubygems

在Rubygems生态中,我们发现了与xz组件相关的流行软件包ruby-xz,总下载量达到6,574,158次。该包调用了本地环境中的liblzma.so和liblzma.so.5等动态链接库,如果本地运行环境中存在受后门影响的版本,那该包也可能会受到影响。依赖该包的全部包名如下:smc-get、cure-fpm、fpm-aeppert和dwca_hunter。

2.1.3 Go

在Go生态中,我们发现了一个软件包dill.foo/xz使用了本地的liblzma,该包明确要求本地先安装liblzma,如在本地环境中使用了受后门影响的版本,那该包也可能会受影响。

2.2 不受后门影响的软件

2.2.1 Linux发行版

我们对多个Linux发行版的软件源,如Ubuntu官方源、麒麟官方源和Deepin官方源中的软件进行了分析,发现了若干使用xz组件的软件,但未发现直接使用后门版本的软件,以下数据仅为使用xz组件的软件统计

  • 在Ubuntu仓库总计1,084,083个软件中发现192个使用xz组件的软件,占比万分之1.7;
  • 在Kali仓库中总计492,253个软件中发现124个使用xz组件的软件,占比万分之2.5;
  • 在CentOS仓库中总计409,429个软件中发现 87个使用xz组件的软件,占比万分之1.9;
  • 在麒麟官方源仓库中 313,723 个软件中发现88个使用xz组件的软件,占比万分之2.8;
  • 在Deepin仓库中 94,799个软件中发现46个使用xz组件的软件,占比万分之4.8。

上述软件仓库中均未发现使用包含后门版本xz组件的软件,我们的测绘分析结果与Ubuntu[2]、Red Hat[3]和Debian[4]等组织发布的官方通告一致。从测绘结果来看,目前该后门的影响有限。

2.2.2 安卓应用

在安卓生态中,天问平台测绘数据中共发现279款安卓应用调用了xz组件,涉及20个组件版本,这些组件版本及软件均不受后门影响。部分样本的相关信息如下表所示:

组件名 组件版本 样本数量 部分样本名称 应用名称
xz 5.2.4 126 org.dolphinemu.dolp
hinemu_18283.apk
Dolphin Emulator
xz 5.2.5 23 com.topjohnwu.magis
k_24300.apk
Magisk
xz 5.3.0alpha 23 com.webmob.super.do
wnloader.for.ig1.
apk
Super Downloader for IG
xz 5.2.1 16 飞书_46410ace75acfdb
e5b0d796a10e3e864
.apk
飞书
xz 5.2.9 11 la.daube.photochiot
te_34.apk
PhotoChiotte
xz 5.2.3 7 仁恒美光随身牙医_79a92
5fb1638af433e1581
a165c13796.apk
仁恒美光随身牙医
xz 5.4.0 6 YandexNavigator15.6
.0beta_172533348b
8fa6407b22657524f8b1c5.apk
Yandex Navigator
xz 5.2.10 5 org.briarproject.br
iar.android_10420
.apk
Briar
xz 5.4.4 5 WPSTV版_3604bf20199
47851e322232f79f6
c9b4.apk
WPSTV版
xz 5.2.6 4 Briar1.4.18.apk Briar

通过分析我们发现,安卓软件通过多种方式调用xz组件。如根据对飞书安卓版_bc92da1573c39c15f5d68e8b44a3a92f.apk的扫描结果,我们发现该样本通过调用lib/arm64-v8a/libarchive.so的方式间接调用了xz组件,组件版本为5.3.0alpha。此外,根据天问分析结果,目前一部分apk(包括几款知名应用)通过导入libarchive.so库的方式引入了xz组件,这些apk的安全性有待进一步审查。

2.2.3 固件镜像

在固件生态测绘中,我们从156,787个固件文件中发现了11,210个固件使用了xz的组件,检出率为7.14%。

通过对测绘数据的进一步分析,我们统计了使用xz组件较多的厂商和涉及产品型号数量较多的厂商。其中Synology、poly和Apple的固件中使用xz组件的次数均超过了1,000次,分别为3,902、1,699和1,150。另外Synology和Axis涉及产品的型号数量超过了100,分别为244和193款。影响的产品中包含我们熟知的iPad mini4 和 Watch Series 2等。这些固件虽然没有使用受后门影响的版本,但若使用过程中存在升级过xz组件的情况,则可能存在安全风险。

此外,在分析了多款固件后,我们发现xz组件主要以动态调用库的形式存储在/usr/lib64/、/usr/lib/ 目录下,常见的文件名为liblzma.so、libarchive.so,为系统提供解压、读取压缩包功能,例如在思科型号为FPR1100 固件中存储形式如下:

2.2.4 存量软件

在Windows平台上的存量软件测绘数据中,天问共发现58,718款软件调用了xz组件,涉及32个组件版本,其中使用最多的版本为5.0.5,达19,709次。在这些使用xz组件的软件中,有很多我们熟知的软件,如Syncovery使用了5.2.2版本,Youtube Video Downloader使用了5.2.4版本。目前,天问存量软件测绘中未发现包含受后门影响版本组件的软件。

2.2.5 其他开源生态

在npm生态中,没有找到受到此次后门影响的软件包。已有的xz软件包最后一次更新为4年前,且使用的xz版本为5.2.4,并未受到此次后门的影响。

在NuGet生态中,已有的使用xz组件的软件包为XZ.NET和XZ.NET-netstandard,其均使用的是5.2.1版本的liblzma.dll,未受到此次后门的影响。

在Go生态中,我们发现github.com/simon-graham/go-liblzma包使用了5.2.5版本的liblzma,未受到此次后门影响。

3. 处置建议

根据奇安信威胁情报部门的事件紧急通告[5],目前可用以下脚本检测当前环境是否可能使用后门版本的XZ Utils。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /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

4. 结语

由于xz组件包含后门的版本发布时间短,多数软件和固件没有使用该组件的后门版本,我们仅在开源生态crates.io中发现liblzma-sys包明确使用了该后门版本。以上的测绘数据仅是我们初步的分析结果,目前尚未对可疑软件进行进一步的验证。奇安信技术研究院“天问”软件供应链安全监测平台将会持续对该组件进行监测分析,后续会适时发布更多关于该组件影响的测绘数据和分析结果。

参考链接

[1] oss-security - backdoor in upstream xz/liblzma leading to ssh server compromise, https://www.openwall.com/lists/oss-security/2024/03/29/4
[2] Xz/liblzma security update - Announcements - Ubuntu Community Hub, https://discourse.ubuntu.com/t/xz-liblzma-security-update/43714)
[3] Urgent security alert for Fedora 41 and Fedora Rawhide users (redhat.com), https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users
[4] [SECURITY] [DSA 5649-1] xz-utils security update (debian.org), https://lists.debian.org/debian-security-announce/2024/msg00057.html
[5] liblzma/xz库被植入后门影响SSH事件紧急通告(CVE-2024-3094), https://mp.weixin.qq.com/s/RSRwJf2HpoxBLrV5C6sbeg