【事件二次预警】XZ Utils供应链投毒事件分析
2024-4-2 17:24:23 Author: mp.weixin.qq.com(查看原文) 阅读量:52 收藏

事件名称:

XZ Utils供应链投毒事件

威胁类型:

后门病毒

简单描述:

微软PostgreSQL开发人员Andres Freund在调查SSH性能问题时,发现了XZ Utils软件包中存在着一个涉及混淆恶意代码的供应链攻击事件。

事件描述

攻击者 JiaT75 (Jia Tan) 于 2021 年注册了 GitHub 账号,之后积极参与 XZ Utils 项目的维护,并逐渐获取信任,获得了直接 commit 代码的权利。

JiaT75 在最近几个月的一次 commit 中,悄悄加入了 bad-3-corrupt_lzma2.xz 和 good-large_compressed.lzma 两个暗藏恶意代码的伪造二进制测试文件,然而在编译脚本中,在特定条件下会从这两个文件中读取内容对编译结果进行修改,致使编译结果和公开的源代码不一致。

2024年3月29日,微软PostgreSQL开发人员Andres Freund在调查SSH性能问题时,发现了这个问题并报告给 oss-security,致使此次软件供应链攻击事件被披露。

事件分析

阶段一

攻击链起始于被修改的m4\build-to-host.m4编译脚本。下图是从文件中提取出的与恶意行为相关的命令。 

图1命令注释

1. 脚本会通过特定的模式串#{4}[[:alnum:]]{5}#{4}$来获取包含下阶段载荷的文件所在位置,即bad-3-corrupt_lzma2.xz的路径。匹配到的字符串为bad-3-corrupt_lzma2.xz中的####Hello####特征串。

2. 通过将上一步获取到的路径中.号以前的内容替换为空,得到文件后缀,即为后续命令解压文件的命令xz。

3. 通过特定的转化规则(tr "\t \-_" " \t_\-")修复bad-3-corrupt_lzma2文件,并通过xz命令解压,得到下阶段脚本。

4. 执行下阶段脚本命令。

阶段二

该阶段定义了下阶段的自定义转换过程i,并解密出下阶段命令执行。

图2 二阶段脚本

1.通过config.status文件定位xz源码的根路径,用于下面命令中使用。

2.修复good-large_compressed.lzma文件,解压并执行下阶段脚本命令。

阶段三

该阶段脚本包含了主要的恶意行为代码,包括环境检查,提取预编译的64位后门模块liblzma_la-crc64-fast.o,修改crc64_fast.c源代码文件内容,增加后门模块代码调用。

1.脚本通过特定的转换过程,解压得到64位的后门模块liblzma_la-crc64-fast.o并替换正常模块。

图3 三阶段脚本-释放后门模块

2.修改crc64_fast.c,crc32_fast.c文件中crc64_resolve,crc32_resolve函数的执行逻辑,替换函数中对函数is_arch_extension_supported的调用为新增的内联函数_is_arch_extension_supported,而_is_arch_extension_supported中增加了调用后门模块(liblzma_la-crc64-fast.o)导出的_get_cpuid函数调用逻辑。

图4 三阶段脚本-修改正常调用逻辑

下图是修改后的crc64_fast.c代码片段。

图5 修改后的代码

后门模块liblzma_la-crc64-fast.o

导出函数_get_cpuid中实现了后门功能的初始化逻辑,在初始化函数第二次被调用时(即crc64_resolve),才会进行后门的初始化过程,在初始化过程中,RSA_public_decrypt函数被劫持为Llzma_index_prealloc_0函数。RSA_public_decrypt是openssh中用于公钥认证的函数。

图6 初始化逻辑

Llzma_index_prealloc_0函数会通过检测参数是否是特殊的RSA密钥来根据参数执行对应的命令。

图7 hook逻辑

IOCs

HASH

D26CEFD934B33B174A795760FC79E6B5
212FFA0B24BB7D749532425A46764433
D302C6CB2FA1C03C710FA5285651530F
4F0CF1D2A2D44B75079B3EA5ED28FE54
53D82BB511B71A5D4794CF2D8A2072C1

解决方案

处置建议

通过在命令行输入 xz --version 来检查 XZ Utils 版本,如果输出为 5.6.0 或 5.6.1 ,说明您的系统可能已被植入后门。

如果相关版本在受影响范围内,利用如下自查脚本排查是否存在后门:

#! /bin/bashset -eu# find path to liblzma used by sshdpath="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"# does it even exist?if [ "$path" == "" ]Thenecho probably not vulnerableExitfi# check for function signatureif hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410Thenecho probably vulnerableelseecho probably not vulnerablefi

若确认受影响,请将XZ Utils降级至 5.4.6 版本,或者更新至最新版本5.6.4。命令如下:

sudo apt install xz-utils={要安装的目标版本}。

深信服解决方案

【深信服统一端点安全管理系统aES】已支持查杀拦截此次事件使用的后门文件。

【深信服安全托管服务MSS】以保障用户网络安全“持续有效”为目标,通过将用户安全设备接入安全运营中心,依托于XDR安全能力平台和MSSP安全服务平台实现有效协同的“人机共智”模式,围绕资产、脆弱性、威胁、事件四个要素为用户提供7*24H的安全运营服务,快速扩展持续有效的安全运营能力,保障可承诺的风险管控效果。

点击阅读原文查看首次事件预警通告


文章来源: https://mp.weixin.qq.com/s?__biz=Mzg2NjgzNjA5NQ==&mid=2247522433&idx=1&sn=f095571c8acf317297f450dec2432351&chksm=ce461391f9319a87b0f5d3c4936ccfaa4e354aa321945206d4e406f03dc455a5a7c0fd183832&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh