龙空技术网

时间线全记录 | Xzliblzma 被植入源码级后门

FreeBuf 74

前言:

眼前你们对“fedora查看源码ubuntu”都比较珍视,大家都需要学习一些“fedora查看源码ubuntu”的相关知识。那么小编也在网上搜集了一些有关“fedora查看源码ubuntu””的相关文章,希望各位老铁们能喜欢,你们快快来了解一下吧!

谁也没想到, Xzliblzma会被植入后门程序,据说微软连夜加班处理本次后门事件,主流云厂商们也都在加急排查风险和安全修复。

3月29日,微软公司的开发人员Andres Freund在调查SSH性能问题时,发现了xz软件包中一个涉及混淆恶意代码的供应链攻击。进一步溯源发现SSH使用的上游liblzma库被植入了后门代码,恶意代码可能允许攻击者通过后门版本的SSH非授权获取系统的访问权限。恶意代码修改了liblzma代码中的函数,该代码是XZ Utils软件包的一部分,链接到 XZ 库的任何软件都可以使用此修改后的代码,并允许拦截和修改与该库一起使用的数据。

目前迹象表明,后门作者有选择性的针对 linux 发行版下手。但这个 liblzma 可不只Linux上用。比如目前流行的iOS越狱环境,大部分 tweak 包还是以 .deb 格式发行,比较新的版本就用到了 lzma 作为压缩。

后门事件回顾

xz是一种通用的数据压缩格式,几乎存在于每个Linux发行版中,无论是社区项目还是商业产品发行版。本质上,它有助于将大型文件格式压缩(然后解压缩)成较小、更易于管理的尺寸,以便通过文件传输共享。

从5.6.0版本开始,在xz的上游tarball包中发现了恶意代码。通过一系列复杂的混淆手段,liblzma的构建过程从伪装成测试文件的源代码中提取出预构建的目标文件,然后用它来修改liblzma代码中的特定函数。这导致生成了一个被修改过的liblzma库,任何链接此库的软件都可能使用它,从而拦截并修改与此库的数据交互。

xz 5.6.0和5.6.1版本库中存在的恶意注入只包含在tarball下载包中。Git发行版中缺少触发恶意代码构建的M4宏。注入期间构建时使用的第二阶段工件存在于Git存储库中,以防存在恶意的M4宏。如果不合并到构建中,第二阶段文件是无害的。在发现者的演示中,发现它干扰了OpenSSH守护进程。虽然OpenSSH没有直接链接到liblzma库,但它以一种使其暴露于恶意软件的方式与systemd通信,因为systemd链接到了liblzma。

恶意构建会通过systemd干扰sshd的认证。SSH是一种常用的协议,用于远程连接系统,而sshd是允许访问的服务。在适当的情况下,这种干扰有可能使恶意行为体破坏sshd认证,并远程未经授权访问整个系统。

后门漏洞信息

Red Hat 现正跟踪这一供应链安全问题,将其命名为 CVE-2024-3094,并将其严重性评分定为 10分,同时在 Fedora 40 测试版中恢复使用 5.4.x 版本的 XZ。

哪些版本受影响?

目前已知XZ Utils版本5.6.0和5.6.1受到影响,恶意代码还不存在于XZ的Git发行版中,仅存在于完整的下载包中。 可能包括的发行版 / 包管理系统有:

以下发行版确认受影响:

Fedora Rawhide Fedora Rawhide是Fedora Linux的开发版本。

Fedora 41

Debian testing、unstable和 experimental版 5.5.1alpha-0.1到5.6.1-1

lUbuntu 24.04 LTS

目前受影响的库已经从Ubuntu 24.04 LTS预发布构建中移除。

以下Linux发行版确认不受影响:

Fedora Linux 40 RedHat建议用户降级到5.4版XZ作为预防措施。

红帽企业版Linux(RHEL) 所有RHEL版本均不受影响。

Debian 所有Debian稳定版均未知受影响。

自检与缓解措施

用户可通过以下脚本进行检测:

#! /bin/bash set -eu # find path to liblzma used by sshdpath="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')" # does it even exist?if [ "$path" == "" ]then    echo probably not vulnerable    exitfi # check for function signatureif hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410then    echo probably vulnerableelse    echo probably not vulnerablefi
缓解措施降级到5.6.0以下版本更新到官方最新版5.6.4攻击者潜伏了整整三年

整个后门故事非常精彩,攻击者为此整整潜伏了三年,只差一点点就可以往众多 Linux发行版的 sshd 注入后门,可用于绕过密钥验证,后果不堪设想。

省流概括:

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

2.JiaT75 在最近几个月的一次 commit 中,悄悄加入了 bad-3-corrupt lzma2.xz和good-large compressed.lzma 两个看起来人畜无害的测试用二进制数据,然而在编译脚本中,在特定条件下会从这两个文件中读取内容对编译结果进行修改,致使编译结果和公开的源代码不一致。

3.目前初步的研究显示,注入的代码会使用glibc的IFUNC 去 HookOpensSH的 RSA public decrypt 函数,致使攻击者可以通过构造特定的验证数据绕过 RSA 签名验证。(具体细节还在分析中)

4.只要是同时使用了 liblzma和 OpenSsH的程序就会受到影响,最直接的目标就是 sshd,使得攻击者可以构造特定请求,绕过密钥验证远程访问。

5.受影响的 xz-utils 包已经被并入 Debian testing 中进行测试,攻击者同时也在尝试并入 fedora 和 ubuntu。

6.幸运的是,注入的代码似乎存在某种 Bug,导致特定情况下 sshd 的 CPU占用飙升。被一位安全研究人员注意到了,顺藤摸瓜发现了这个阴谋并报告给 oss-security,致使此事败漏。如果不是因为这个 Bug,那么这么后门有不低的概率被并入主流发行版的stable 版本,恐怕会是一件前所未有的重大安全事件。

另外从一些细节能看出来攻击者非常用心:

攻击者抢在 ubuntu beta freeze 的几天前才尝试让新版本并入,以期望减少在测试期间被发现的时间。

xz-utils 项目的原维护者 Lasse Colin(Larhzu),有着定期进行internetbreaks的习惯,而且最近正在进行,导致这些变动他并没有review的机会,即使到现在也没能联系上他本人。这可能也是攻击者选定xz-utils 项目的原因之一。

更多的细节还在被分析中,目前 GitHub 已经关停了整个 xz项目。

参考来源

Yachen Liu @Blankwonder

标签: #fedora查看源码ubuntu