【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

admin 2024年4月22日05:51:32评论1 views字数 6175阅读20分35秒阅读模式

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

漏洞详情

近期天翼安全科技有限公司与复旦大学系统软件与安全实验室联合进行软件供应链安全研究,监测到XZ Utils恶意后门,并对漏洞根因、影响范围处置建议进行深入分析,以帮助相关用户及时进行供应链安全治理。

1.1 XZ Utilѕ简介

XZ是一种通用的数据压缩格式,由Tukaani项目开发,其具有高压缩率和相对较快的解压速度,XZ Utilѕ压缩工具被广泛应用于各种Linux发行版本中。liblzma是XZ Utils依赖的一个压缩库,它提供了类似于zlib的编程接口,用于实现LZMA算法。

1.2 漏洞描述

2024年3月29日,开发人员Andres Freund在安全邮件中报告了他在调查SSH性能问题的过程中,意外发现了涉及XZ包的供应链攻击,进一步溯源发现SSH所使用的上游liblzma库已经被植入了后门代码。这些恶意代码可以修改liblzma库中的函数,从而导致与XZ库链接的任何软件都可能受到影响,攻击者可以拦截和修改与该库一起使用的数据,从而对系统造成潜在的安全威胁。

1.3 安全评分

漏洞评级:超危,CVSS 3.1分数:10.0。

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

影响范围

受影响组件主要有:
(1)XZ Utils 5.6.0、XZ Utils 5.6.1;
(2)Liblzma 5.6.0、Liblzma 5.6.1;
受影响操作系统主要有:
(1)Fedora 41 and Fedora Rawhide;
(2)Debian testing,unstable and experimental distributions 5.5.1alpha-0.1至5.6.1-1;
(3)Kali Linux(在3月26日至3月29日期间更新过的任何Kali安装);
(4)OpenSUSE(Tumbleweed snapshot <= 20240328);
(5)Amazon Linux;
(6)Alpine 5.6.0、Alpine 5.6.0-r0、Alpine 5.6.0-r1、Alpine 5.6.1、Alpine 5.6.1-r0、Alpine 5.6.1-r1;
(7)MACOS HomeBrew x64;
(8)MicroOS(3月7日至3月28日期间发行);
(9)archlinux;

(10)Alpine edge。

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

漏洞成因分析

XZ官方仓库(https://github.com/tukaani-project/xz)目前已经不能使用了,可以从一些镜像仓库中找到XZ的仓库(http://download.openpkg.org/components/cache/xz/)。分析发现,攻击者可以在编译阶段注入恶意代码,这个过程主要包含以下三个步骤:

3.1 通过M4编译宏,还原恢复恶意数据
初始恶意代码在文件m4build-to-host.m4中:
【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析
build-to-host.m4的第63中会拼接出命令:sed "rn" ./tests/files/bad-3-corrupt_lzma2.xz | tr "t -_" " t_-" | xz -d  2> /dev/null,这一命令完成了以下操作:
(1)首先读取bad-3-corrupt_lzma2.xz文件中的内容;
(2)随后进行tr转换(将选定的字符(或字节值)更改为其他字符(其他字节值))。实际上这一步“还原”了bad-3-corrupt_lzma2.xz,使其再次形成一个正确的xz流。

(3)提取还原后的xz字节流。

3.2 通过Bash脚本,提取和合并恶意数据

第一阶段从bad-3-corrupt_lzma2.xz文件中提取出的代码如下:
【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析
这些代码会被执行,此时进入第二阶段,将会进行如下操作:
(1)首先解压缩./tests/files/good-large_compressed.lzma文件(上图中的标黄字段),然后这个解压的输出会作为下一步的输入。

(2)接下来,执行一个由多个步骤组成的函数i,通过eval $i调用。这个函数主要是一系列的命令,用来处理数据流,要么提取数据的特定部分,要么跳过数据的特定部分。在数据处理的开始会跳过一些数据,比如忽略文件的前1024字节。这个过程反复进行,交替跳过和提取数据直到文件结束。如果文件的开始部分是由重复的字符构成,之后是一些二进制数据,使用这种方式就可以去除空白区域,合并包含实际数据的区域。

简而言之,这一阶段从一个压缩文件读取字节,通过一系列操作(如字符转换和筛选)来修正和提取数据。

3.3 修改编译过程,插入恶意代码

good-large_compressed.lzma文件中的代码会被继续执行,其主要功能是检测环境是否合适,在合适的情况下(是Linux系统、有IFUNC、可以编译动态库、是x86_64等条件),会继续提取./tests/files/下包含特定签名的文件,这一过程脚本可以定位并执行隐藏于这些文件中的额外脚本或代码。这允许攻击者在不直接修改原始有效payload携带文件的情况下,增加新的恶意功能。攻击者需要替换./tests/files/下的中间过程文件(liblzma_la-crc64-fast.o或liblzma_la-crc32_fast.o),最后就可以将恶意代码插入到XZ Utils的库文件Liblzma中。

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

漏洞自检

4.1 命令行自检

(1)在Ubantu、macOS等系统中,可以通过执行“xz --version”命令检查系统的XZ版本:

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析
若发现XZ版本是受影响版本,可认为系统可能会被攻击。

Ubantu系统上还可以使用“which xz”命令进行自检:

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

(2)在Kali系统上,可以通过执行“apt-cache policy liblzma5” 命令检查是否安装了易受攻击的版本:

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

4.2 通过检查xz版本的自检脚本

1.#!/bin/bash  
2. 
3.# Check if xz-utils package is installed  
4.if command -v xz &> /dev/null; then  
5.    echo "xz-utils package is installed."  
6.    # Get the version of xz-utils  
7.    xz_version=$(xz --version | grep "xz (XZ Utils)")  
8.    # Check if xz version is vulnerable (e.g., 5.6.0 or 5.6.1)  
9.    if [[ "$xz_version" =~ 5.6.[01] ]]; then  
10.        echo "System is vulnerable to CVE-2024-3094 (xz backdoor)."  
11.    else  
12.        echo "System is not vulnerable to CVE-2024-3094 (xz backdoor)."  
13.    fi  
14.else  
15.    echo "xz-utils package is not installed. System is not vulnerable to CVE-2024-3094 (xz backdoor)."  
16.    exit 0  
17.fi  

4.3 通过尝试触发漏洞的自检脚本

Openwall上发布了一个自检脚本,它可以检查系统是否被该后门漏洞攻击。

1.#! /bin/bash  
2.  
3.set -eu  
4.# find path to liblzma used by sshd  
5.path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"  
6. 
7.# does it even exist?  
8.if [ "$path" == "" ]  
9.then  
10.  echo probably not vulnerable  
11.  exit  
12.fi  
13. 
14.# check for function signature  
15.if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410  
16.then  
17.  echo probably vulnerable  
18.else  
19.  echo probably not vulnerable  
fi

4.4 文件IOC

IOC(Indicator of Compromise,威胁指标)是一种指示系统可能已经遭受到攻击或已经被入侵的标志,它可以帮助安全人员识别系统中是否存在与已知恶意活动相关的文件或行为。目前掌握的IOC信息如下:

MD5 文件名
4f0cf1d2a2d44b75079b3ea5ed28fe54 x86_64-linux-gnu-liblzma.so.5.6.0
d26cefd934b33b174a795760fc79e6b5 liblzma_la-crc64-fast-5.6.1.o
d302c6cb2fa1c03c710fa5285651530f usr/lib/liblzma.so.5
212ffa0b24bb7d749532425a46764433 00000001.liblzma_la-crc64-fast.o
53d82bb511b71a5d4794cf2d8a2072c1 liblzma.so.5.6.1
35028f4b5c6673d6f2e1a80f02944fb2 bad-3-corrupt_lzma2.xz
9b6c6e37b84614179a56d03da9585872 bad-3-corrupt_lzma2.xz
540c665dfcd4e5cfba5b72b4787fec4f good-large_compressed.lzma
89e11f41c5afcf6c641b19230dc5cdea good-large_compressed.lzma

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

处置建议

(1)XZ官方暂未更新版本或补丁,建议相关用户卸载含后门的版本,回退到未包含后门的稳定版本v5.4.6,并及时关注官方版本更新;
(2)Fedora 40 或 Fedora Rawhide的用户在回退xz版本之前需要停止使用系统,Fedora Linux 40 用户将 xz 回退到 5.4.x 版本可参考:https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users、https://bodhi.fedoraproject.org/updates/FEDORA-2024-d02c7bb266;
(3)SUSE已为openSUSE用户发布了修复程序(https://build.opensuse.org/request/show/1163302);
(4)NixOS Unstable用户可以将xz 回退到 5.4.6 版本;
(5)对于macOS homebrew用户,如果使用了homebrew在macOS系统上安装了任何版本的Python v3,则xz v5.6.1可能会作为依赖项安装。可以先通过运行“xz --version”命令进行检查,如果确定为是受影响版本,运行“brew update”、“brew upgrade”两个命令可以将xz回退到v5.4.6。

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

相关链接

(1)https://blog.51cto.com/u_15634773/10295772

(2)https://build.opensuse.org/request/show/1163302

(3)https://bugzilla.suse.com/show_bug.cgi?id=1222124

(4)https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27

(5)https://github.com/amlweems/xzbot

(6)https://github.com/karcherm/xz-malware

(7)https://gynvael.coldwind.pl/?lang=en&id=782

(8)https://lists.debian.org/debian-security-announce/2024/msg00057.html

(9)https://lists.freebsd.org/archives/freebsd-security/2024-March/000248.html

(10)https://security-tracker.debian.org/tracker/CVE-2024-3094

(11)https://twitter.com/infosecb/status/1774595540233167206

(12)https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users

(13)https://www.cisa.gov/news-events/alerts/2024/03/29/reported-supply-chain-compromise-affecting-xz-utils-data-compression-library-cve-2024-3094

(14)https://www.openwall.com/lists/oss-security/2024/03/29/4

(15)https://www.darkreading.com/vulnerabilities-threats/are-you-affected-by-the-backdoor-in-xz-utils

(16)https://cn-sec.com/archives/2622058.html

(17)https://repology.org/project/xz/versions

(18)https://www.tenable.com/blog/frequently-asked-questions-cve-2024-3094-supply-chain-backdoor-in-xz-utils

(19)https://www.vicarius.io/vsociety/vulnerabilities/cve-2024-3094

(20)https://xeiaso.net/notes/2024/xz-vuln/

(21)https://www.theregister.com/2024/03/29/malicious_backdoor_xz/

【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

                            【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析点亮“在看”,你最好看

原文始发于微信公众号(中国电信SRC):【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月22日05:51:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞分析】XZ Utilѕ工具库恶意后门植入漏洞(CVE-2024-3094)漏洞分析https://cn-sec.com/archives/2625108.html

发表评论

匿名网友 填写信息