Linux 上的 XZ 后门和开源软件的重要性

自由可见的代码和一双警惕的眼睛阻止了一起全球性安全事件的发生

2024-04-24
The XZ backdoor could have broken Linux security.
一位有技术问题的程序员发现了一个被添加到大多数 Linux 发行版中的 UZ Utils 数据压缩库中的后门,从而阻止了一起全球性安全事件的发生。这一发现恰好赶在 Debian 或 Redhat 等主要发行版想要将这一恶意代码引入其发行版之前。这表明,开源软件对于维护数字安全至关重要。

发生了什么事?

坐下来,系好安全带,因为这个故事太疯狂了。

2024 年 3 月,微软员工安德烈亚斯-弗罗因德(Andreas Freund)正在研究 Debian-sid 的一些性能问题。他注意到,Debian-sid 正在生成大量 SSH 连接,这些连接占用了大量的 CPU 资源。在进一步检查后,他向OpenWall 项目报告了这一问题,随后许多软件供应商也对这一问题进行了进一步检查。

看,Freund 先生发现了一段隐藏的代码,它被长期的贡献者_Jian Tan_ 植入了 XZ 的最新版本 5.6.0 和 5.6.1 中。

这些版本中的改动破坏了操作系统的安全性,使攻击者拥有完全的管理访问权限。

Freund 先生认为,发现这一重大供应链攻击(类似于SolarWinds 的攻击)"确实需要很多巧合","在我看来,我们只是非常非常幸运"。

XZ 后门代码的作用

隐藏在 XZ Utils 项目中的恶意代码以_sshd_为目标,而_sshd_是一个用于远程进行 SSH 连接的可执行文件。如果攻击者能获得正确的加密密钥,他们就能将其添加到 SSH 登录证书中,推送这些证书,然后通过后门设备执行这些证书。

压缩软件 XZ 和 SSH 之间的联系是由于 Debian 和其他发行版中的一个补丁在 SSH 和 systemd 之间建立了联系。Systemd 反过来又链接到 XZ 的 LZMA 库,从而创建了从 XZ 后门一直到 SSH 访问的路径。

Thomas Roccia 制作了一张详细的信息图,解释了这一过程的具体步骤:

Roccia's infographic explaining the XZ backdoor aka CVE-2024-3094

这个后门尤其令人震惊的是它的复杂程度,以及攻击者为了获得足够的访问权限以尝试执行攻击而在 XZ 项目中历时数年所采取的步骤。发现这一漏洞后,威胁研究人员将目光集中到了一个化名为 Jian Tan 的主要贡献者身上。

谁是 Jian Tan?

目前,我们还不知道化名为 Jian Tan 的用户的真实身份。但研究人员发现了一些线索。谭健,用户名 JiaT75,2021 年首次出现在 XZ Utils 代码上。这并不值得大惊小怪,因为 XZ 是一个开源项目,任何人都可以帮助改进它或解决漏洞。这些年来,Tan 继续为项目做出微薄贡献,从而提高了他们在围绕该项目建立的社区中的声誉和信任度。

2022 年 5 月,一个化名为 Dennis Ens 的不明用户开始抱怨最近的一次更新,随后另一个化名为 Jigar Kumar 的不明人士推动 XZ Utils 的主要开发者添加新的维护者(为开源项目构建和组织源代码的人),以便加快开发进度。在这种压力下,Jian Tan 最终成为该项目的维护者。

2023 年年中,谭建要求禁用公共漏洞检查器,这样就有可能引入后门代码。

A screenshot of Tan's request to have ifunc disabled.

谭建在 GitHub 上申请禁用 ifunc 的截图。

在继续开发该项目后,2024 年 2 月,Tan 提交了包含恶意后门的 XZ Utils 5.6.0 和 5.6.1 的最终版本。

这种长期的社会工程学攻击赢得了开源社区的信任,这也为 Tan 提供了尝试实施攻击所需的权限。由于投入了大量的时间,而且后门本身的技术水平很高,因此一些安全研究人员认为其背后有国家支持的行为者。

XZ 的下一步是什么?

XZ Utils 的网站完全由其主要开发者 Lasse Collin 控制,Jian Tan 已从该项目中完全删除。该项目的GitHub 页面已重新上线,科林称他们目前正在审查软件源,一旦审查完成,他计划发表一篇关于此次事件的文章。

发现该后门时,已确认以下 Linux 发行版受到影响:

MacOS 的软件包管理器Homebrew 曾使用 5.6.x,但现在已恢复到 XZ Utils 5.4.6。

如果你想检查你的设备上是否有 XZ Utils 的回退版本,可以在终端运行 "xz --版本"。如果安装的是 5.6.0 或 5.6.1 版本,建议恢复到 5.4.x 版本。

开源是提供安全软件的唯一途径

我们非常幸运。如果 XZ Utils 项目是由私人维护的,而且 Freund 被迫提交了支持票据,那么我们今天的处境可能会截然不同。XZ 后门事件是一个完美的例子,说明了为什么开源软件的发布能带来巨大的安全优势。只有让每个人都能审查源代码,我们才能让安全研究人员有机会在事情发生严重错误之前发现这类攻击。

开放源代码软件能提高每个人的安全性:

  • 允许公开的安全代码审查会带来来自各种专业知识和背景的专家的建设性批评。
  • 与封闭源代码开发团队相比,社区能更快地发现错误和漏洞。
  • 通过透明度提高信任度,让最终用户知道他们可以信赖自己选择的产品来保护自己和数据。

开源软件是所有数字安全的一个重要方面。XZ Utils 项目被企业产品所使用,如果没有社区的监督,这次内部攻击可能会被忽视。在封闭源代码软件中,只有经过挑选的人才有权查看源代码,这最终会使类似的更改更容易被忽视。

虽然大型科技公司的团队中有很多开发人员都在查看代码,但谁也不能保证某个员工会像谭健一样,试图偷偷加入恶意代码。开放源代码可以确保更多的人关注代码,这意味着除了强大的安全协议和反复的代码审查外,更多的人可以发现更多的问题。根据莱纳斯定律只要有足够多的眼球,所有的错误都是肤浅的。

在 Tuta,我们将整个加密协议和客户端代码开放源代码,以确保我们的用户可以相信我们兑现了安全承诺。我们的加密技术不仅由密码学专家开发和测试,还可供所有安全研究人员测试和审查。信任是赢得的,通过完全开源地发布我们的代码,我们证明了 Tuta 能够提供最好的电子邮件安全性。

注意安全,加密愉快。