xz-utils 是一款流行的压缩工具,在 Linux 系统中广泛使用,这表明了它在软件生态系统中的关键作用。2024 年 3 月 29 日发现的 xz-utils 后门使系统面临潜在的后门访问和远程代码执行风险。它特别针对使用 glibc、systemd 和已修补 OpenSSH 的系统上的 xz-utils 5.6.0 和 5.6.1 版本。…
译自 CVE-2024-3094: Newly Discovered Backdoor in XZ tools,作者 Ona Blanchette; Aqua Team。
使用 glibc 以及 xz 或 liblzma 版本 5.6.0 或 5.6.1 的系统,尤其是那些带有 systemd 和已修补 OpenSSH 的系统,容易受到攻击。这包括使用易受攻击组件的 Linux 发行版系统,如下所示:
在云中,在面向公众的服务上运行受影响版本的实例会放大风险,因此需要立即更新以减轻漏洞。
云提供商可能拥有底层系统或基于这些易受攻击版本提供服务,因此云用户必须验证和更新其实例或咨询其提供商的建议至关重要。
从去混淆的脚本中可以看出,只有 Linux x86_64 的某些版本容易受到攻击,因为该脚本旨在“决定”是否修改构建过程,如下所示:
图 1: 此函数验证目标操作系统是否为 x86-64 Linux。
Evan Boehs 提供了一个很好的时间线摘要,总结了我们所看到的开源缺陷。
2021 年,Jia Tan (JiaT75) 首次加入 GitHub,并对 libarchive 进行了可疑提交,引发了最初的担忧。到 2022 年 4 月,Tan 开始影响 XZ 项目,导致他首次提交并成为主要贡献者。这一时期标志着一个关键转变,最终在 2024 年发现了与 xz-utils 相关的重大漏洞。这些里程碑强调了开源项目维护中的漏洞以及未经检查的贡献的影响。
此问题已分配CVE-2024-3094,甚至收到了 CISA 的警报。
Andres Freund 分享了一篇文章,其中他解释了他如何发现复杂的 backdoor。XZ-utils 中的恶意代码仅在软件的“tarball”发行版中找到,这些发行版是打包的源代码文件。然而,在 GitHub 上的原始或上游源代码中没有发现它,这使得它更加隐蔽。GitHub 生成的源代码链接被认为是安全的,因为它们是从存储库本身自动创建的,没有 tarball 中版本 5.6.0 和 5.6.1 中发现的恶意代码。
恶意代码注入并混淆了脚本,该脚本更改了 makefile,将损坏的测试文件引入构建。
图 2:注入的脚本
然后,更改后的构建过程在编译 liblzma 库期间包含了恶意文件。初始后门代码替换了某些用于校验和计算的函数,特别是 crc32_resolve() 和 crc64_resolve()。
SSHD 加载这些库,攻击者能够绕过校验和检查并通过 SSH 连接访问服务器。
- Fedora Linux 40 和 Rawhide
- openSUSE
- Kali Linux
- Alpine
- Debian(不稳定)
- Arch
强烈建议用户立即停止使用 xz-utils 压缩工具并降级到 xz-5.4.x。请参阅以下链接以获取有关降级这些软件包的说明。
根据您使用的发行版,您可以使用 Aqua Trivy 确认您不受此漏洞的影响。Trivy 促进了对受支持平台上漏洞的检测,包括此漏洞。
此外,Aqua 的云原生应用程序平台 (CNAPP) 确保了从开发到部署的强大安全性。它扫描代码、容器映像和云工作负载中的漏洞和错误配置,利用 Aqua Trivy 的高级功能。在部署前,它与 CI/CD 管道集成以建立严格的控制,仅允许经过审查的映像。
通过利用纵深防御策略,您可以增强安全措施,以减轻工作负载中的漏洞并保护它们免受恶意活动的影响。
此外,您可以配置您的持续集成/持续部署 (CI/CD) 管道,以便在各种条件下终止构建过程。具体来说,此功能可用于防止将包含任何检测到的漏洞的代码提升到生产环境中。
为了获得针对任何漏洞的更全面的保护,您可以利用我们先进的行为检测功能。这些功能旨在广泛使用,而不仅仅限于识别任何单一漏洞或事件。它们经过微调的灵敏度确保识别和防止恶意行为,从而允许实时拦截和阻止攻击。
最后,这是一份已知受影响的 Linux 发行版、版本和补救步骤链接的列表:
参考:
-
Yara 规则由 Florian Roth(Neo23x0)编写。
在对我们的系统和映像进行彻底审查后,我们很高兴地确认我们的产品和映像不受 CVE-2024-3094 漏洞的影响。