写点什么

xz 工具供应链后门事件 紧急处理

作者:徐凌云
  • 2024-04-01
    湖北
  • 本文字数:3602 字

    阅读完需:约 12 分钟

xz工具供应链后门事件 紧急处理

编者寄语

社会教育的善良是实事求是,相互竞争,相互协作,协作大于竞争。希望每一个人为下一代营造宽松,法治清明,现代文明的环境而努力。

 

了解 xz-utils 工具

xz-utils 是一个软件包,提供命令行工具,用于处理使用 XZ 格式压缩的文件。XZ 格式是一种高压缩的开源数据压缩格式,旨在提供比 GZIP 和 BZIP2 等其他流行的压缩格式更好的压缩比。

xz-utils 软件包包括几个命令行工具,允许您以 XZ 格式压缩和解压缩文件。以下是 xz-utils 提供的一些常用工具:

xz:此工具用于将文件或目录压缩为 XZ 格式。它支持各种压缩选项,例如压缩级别、线程使用和内存使用。

unxz:此工具用于解压缩使用 XZ 压缩的文件。它自动检测压缩格式并相应地解压缩文件。

xzcat:此工具类似于 cat 命令,但它专门适用于 XZ 压缩文件。它解压缩文件,并将未压缩的内容打印到标准输出。

lzma:此工具使用 LZMA 算法为压缩和解压缩提供了一个较低级别的接口,LZMA 算法是 XZ 格式中使用的底层算法。它对压缩选项提供了更细粒度的控制,但需要更多的手动配置。这些工具通常在类 Unix 系统中用于处理 XZ 压缩文件。它们可以集成到 shell 脚本中,也可以直接从命令行使用。xz-utils 软件包通常在大多数 Linux 发行版的软件包存储库中可用,并且可以使用特定于您的发行版的软件包管理器进行安装,例如基于 Debian 的系统的 apt 或基于 Red Hat 的系统的 yum。

 

紧急操作

使用 Mac 本的同学可以先做以下操作:

  1. 查询自己使用的 xz-utils 版本



   5.4.6 安全版本

  1. 如有 mac xz 版本 5.6.0 和 5.6.1,请按照下面操作。

 

xz --versionbrew uninstall --ignore-dependencies xzbrew uninstall --force xzxz --version
复制代码

 

  1. 升级下 brew

brew updatebrew upgrade
复制代码

 


其他 linux 操作系统按照对应操作系统的命令脚本对对应操作。如下:

 


  1. 完整 check shell 脚本

#!/bin/bash# CVE-2024-3094-checker.sh# Quick and dirty PoC for checking whether a vulnerable version of xz-utils is installed# https://nvd.nist.gov/vuln/detail/CVE-2024-3094# Author Baroni Fabio
# This shell script is provided as-is and without warranty of any kind, express or implied.# By executing this script, you acknowledge that you do so at your own risk.# The author(s) of this script shall not be liable for any damages or issues that may arise from its use, including but not limited to data loss, system instability, or any other unintended consequences. # It is recommended to review the script and understand its functionality before running it, and to ensure that appropriate backups are in place.# Use of this script implies your acceptance of these terms.

# Detect package managerif command -v apt-get &>/dev/null; then PKG_MANAGER="apt-get"elif command -v yum &>/dev/null; then PKG_MANAGER="yum"elif command -v zypper &>/dev/null; then PKG_MANAGER="zypper"else echo "Unsupported package manager. Exiting." exit 1fi
if [ "$PKG_MANAGER" = "zypper" ]; then
version=$(rpm -q xz) if [[ $version =~ (5\.6\.(0|1)) && ! $version =~ revertto ]]; then echo "It seems you have a vulnerable version of the xz package installed on your system" echo "OpenSuse has released a patched version that avoids this CVE, running zypper to update the xz package..." sudo zypper refresh sudo zypper update xz if [ $? -eq 0 ]; then echo "xz package updated successfully. Now it is advisable to reboot" else echo "xz package update failed" fi if lsb_release -d | grep -q "Tumbleweed"; then echo "OpenSuse recommends openSUSE Tumbleweed users where SSH is exposed to the internet to make a fresh installation of the system and change credentials, as it’s unknown if the backdoor has been exploited." echo "Due to the sophisticated nature of the backdoor an on-system detection of a breach is likely not possible." echo "Also rotation of any credentials that could have been fetched from the system is highly recommended." fi else echo "Your OpenSuse installation is probably safe." fielif [ "$PKG_MANAGER" = "apt-get" ]; then version=$(dpkg -l | grep "xz-utils" | awk '{print $3}') if [[ "$version" == *"5.6.0"* || "$version" == *"5.6.1"* ]]; then echo "Vulnerable version of xz-utils found: $version" read -p "Do you want to attempt installing the stable uncompromised xz-utils 5.4.6 version from source? (y/n): " choice if [[ "$choice" == "y" || "$choice" == "Y" ]]; then echo "Downloading xz-utils 5.4.6 from source..." wget https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.gz tar -zxvf xz-5.4.6.tar.gz cd xz-5.4.6 echo "Configuring xz-utils..." ./configure echo "Compiling xz-utils..." make echo "Installing xz-utils..." sudo make install echo "xz-utils 5.4.6 installed successfully." else echo "You chose not to install the package automatically. Install manually if needed. Exiting." fi else echo "You appear to be safe." fifi
复制代码

 

安全漏洞发现

Andres Freund 在 2024 年 3 月 29 日发现了一个在 xz-utils 注入的后门。我们都知道 xz-utils 是基于操作系统内核的工具,用来压缩文件。

Fedora 理事会于 3 月 29 日星期五收到了与 xz 工具和库有关的 CVE-2024-3094 的通知。此时,Fedora Rawhide 用户可能已经收到了受污染的软件包。如果系统在 3 月 2 日至 3 月 6 日期间更新,Fedora Linux 40 分支用户(即测试前)可能会收到潜在易受攻击的 5.6.0-2.fc40 构建。仅使用稳定存储库的 Fedora Linux 40 Beta 用户不会受到影响。Fedora Linux 39 和 38 用户也不受影响。

恶意行为者破坏软件或硬件供应链,将隐藏的漏洞或后门引入产品。操作系统提供商和开发者很容易将漏洞引入到自己软件或者产品中。这允许攻击者在部署受损产品后获得对系统或数据的未经授权的访问。

 


后门在编译阶段被注入,可以绕过 auth,直接通过 SSHD 进行远程代码执行。

OpenSSH 中的 RCE 是指影响 OpenSSH 软件的远程代码执行漏洞。OpenSSH 是安全外壳(SSH)协议的广泛使用的开源实现,它提供安全的远程访问和安全的文件传输功能。   在 OpenSSH 的上下文中,RCE 漏洞将允许攻击者在运行受影响版本的 OpenSSH 的目标系统上执行任意代码。这意味着攻击者可能会未经授权访问系统,并可能完全控制它。

重要的是要注意,虽然软件中可能存在漏洞,但让软件与最新的安全补丁和更新保持同步至关重要,以降低此类漏洞被利用的风险。OpenSSH 有积极解决安全问题的历史,OpenSSH 开发团队定期发布安全补丁,以修复漏洞并提高软件的安全性。    如果您担心 OpenSSH 安装的安全性,建议您定期更新到官方 OpenSSH 项目或操作系统软件包管理器提供的最新版本。此外,遵循安全配置的最佳实践,例如禁用不安全的身份验证方法和强制执行强密码或基于密钥的身份验证,可以进一步提高 OpenSSH 设置的安全性。

可以成功利用此漏洞可以允许在登录用户的上下文中远程执行代码。根据与用户关联的特权,攻击者可以安装程序;查看、更改或删除数据;或创建具有完全用户权限的新帐户。

 

各平台响应

github 设置 xz 代码库 disabled

苹果和其他受影响的公司也做出了一些响应。


研发者感受

釜底抽薪

 


原理分析



禁用 Landlock 沙盒的语法错误(也许有效负载影响的不仅仅是 sshd)


v5.6.0 后门提取,从编译/链接中提取并集成的 o 文件,提取和解密 tests/files/good-large_compressed.lzma 使用 LC_ALL-C sed“s/n/g”操作输出,使用 AWK 脚本(类似 RC4)解密

使用 xz-dc-single-stream 解压缩,二进制后门存储为 libizma_la-crc64-fast.o。

 

溯源

果您随着时间的推移绘制 Jai Tan 的提交历史记录,与其余活动相比,一组违规提交发生在不寻常的时间。如果开发人员被攻击了,这可能是一个迹象,表明威胁行为者在他们自己的时区做出了贡献。




开放讨论

关于此次供应链后门事件,对 Linux 代码提交的影响,对开源后续发展的影响,以及对开源安全的推动。

 

发布于: 19 分钟前阅读数: 6
用户头像

徐凌云

关注

还未添加个人签名 2018-03-14 加入

还未添加个人简介

评论

发布
暂无评论
xz工具供应链后门事件 紧急处理_徐凌云_InfoQ写作社区