突发: xz-utils 被注入后门 (CVE-2024-3094)

Andres Freund 在 2024 年 3 月 29 日发现了一个在 xz-utils 注入的后门;使用了 xz/lzma 5.6.0 / 5.6.1 的项目皆受影响。

杀伤力:

当前还未完全清楚;但 openssh 的 sshd 首当其冲;注入的代码会 Hook OpenSSH 的 RSA_public_decrypt 函数,致使攻击者可以通过构造特定的验证数据绕过 RSA 签名验证,允许特定的 SSH 密钥进行登录,绕过 SSH 身份验证。凭此一点,足见其影响之恶劣。

波及的范围:

  • 可以通过命令 xz --version 或者 xz -V 来查看当前 xz 的版本;幸运的是,该后门被及时发现,还未进入到主流 Linux 发行版的 stable 版本;但采用 rolling update 或者追求软件最新版的包管理器(例如 nix)的用户可能受到影响,请马上更新或者回退。
  • 注意,上述命令只能确认 xz 命令是否受此后门影响,不能完全排查出系统其它软件是否依赖问题版本,从而有风险。请大家密切关注该安全事件,我们也会在官网上持续更新相关的信息。
  • 根据 repology,已知受影响的版本:
    • Cygwin, mingw, Manjora,AUR,
    • Alpine( EDGE 版本 受影响,所幸 latest 版本 没有受影响 )
  • 前沿尚未稳定的 Linux 发行版 (Arch, Debian, Red Hat, openSUSE)

xz.security.cn

事情简报

  1. 攻击者 JiaT75 于 2021 年注册了 GitHub 账号,之后积极参与 xz 项目的维护,并逐渐获取信任,获得了直接 commit 代码的权利。
  2. JiaT75 在最近几个月的一次 commit 中,悄悄加入了 bad-3-corrupt_lzma2.xzgood-large_compressed.lzma 两个看起来人畜无害的测试用二进制数据,然而在编译脚本中,在特定条件下会从这两个文件中读取内容对编译结果进行修改,致使编译结果和公开的源代码不一致。
  3. 目前初步的研究显示,注入的代码会使用 glibc 的 IFUNC 去 Hook OpenSSH 的 RSA_public_decrypt 函数,致使攻击者可以通过构造特定的验证数据绕过 RSA 签名验证。(具体细节还在分析中)
  4. 只要是同时使用了 liblzma 和 OpenSSH 的程序就会受到影响,最直接的目标就是 sshd,使得攻击者可以构造特定请求,绕过密钥验证远程访问。
  5. 受影响的 xz-utils 包已经被并入 Debian testing 中进行测试,攻击者同时也在尝试并入 fedora 和 ubuntu。
  6. 幸运的是,Andres Freund commiter 在做一些微基准测试,看到 sshd 进程使用了​​惊人数量的 CPU,随后顺藤摸瓜发现了这个阴谋并报告给 linux-distros,然后报告给 oss-security。致使此事败漏。
  7. 目前 GitHub 已经关停了整个 xz 项目

上述简报内容有对 Yachen Liu 的推文帖进行参考并进行改动

作者及官网声明

注意,攻击的开发者是 Jia Tan,而非 xz-utils 的原作者 Lasse Collin。以下是 Lasse Collin 的声明:

Facts:

  1. CVE-2024-3094
  2. XZ Utils 5.6.0 and 5.6.1 release tarballs contain a backdoor. These tarballs were created and signed by Jia Tan.
  3. Tarballs created by Jia Tan were signed by him. Any tarballs signed by me were created by me.
  4. GitHub accounts of both me (Larhzu) and Jia Tan are suspended.
  5. xz.tukaani.org (DNS CNAME) was hosted on GitHub pages and thus is down too. It might be moved to back to the main tukaani.org domain in the near future.
  6. Only I have had access to the main tukaani.org website, git.tukaani.org repositories, and related files. Jia Tan only had access to things hosted on GitHub, including xz.tukaani.org subdomain (and only that subdomain).

当前作者的声明比较仓促,因此大家可以持续关注官网的声明。

https://tukaani.org/xz-backdoor

x-cmd 自查 – 暂未受影响

当前 x-cmd pkg 的软件体系,暂时还没找到携带该漏洞的 pkg:

  • x-cmd/pkg 的包:
    • 我们首先排查的 7za 用的是 lzma 5.4.5
    • 其次 zstd 和 python 同样也使用 xz-utils 5.4.5 版本作为依赖进行编译。
    • 因事故的发生,x-cmd 在将暂时锁定 xz-utils 5.4.5 版本作为所有需要 xz-utils 软件依赖进行编译。
  • 开发/构建环境:
    • 其次,我们打包xz 的时候,所用 xz 版本 是 5.4.2
    • 所用的服务器以及镜像,都还没更新到 5.6.0/5.6.1 版本,因此刚好避开了这个问题
  • x.bat / mingw / git for windows:
    • x-cmd 为 windows 用户提供了 x.bat,以帮助没装 WSL 及 mingw/cygwin 的用户通过安装 git-for-windows 来使用 x-cmd。
    • git-for-windows 依赖 mingw,而 mingw 最新版也受此波及,因此我们赶紧自查。
    • 自查发现,我们使用的 git-for-windows 是 v2.41.0,所用的 xz-utils 是 5.4.3 版本,因此没有受到此后门的影响;更让我们感到高兴的是,git-for-windows 的最新版(2.44.0)中的 xz 是 5.4.6,而并未受此波及。

然而,事情尚未尘埃落定,我们会继续关注这个问题,并尽最大努力守护我们的 pkg 体系。

这件事对 x-cmd pkg 工作的启发

这件事对我们有很多启发和影响:

  1. 我们将继续坚持这个观点: pkg 应该优先保证安全和质量;数量只能是更低的优先级
  2. 在未来,pkg 的引入会渐趋保守;尤其对于 x-cmd 模块中频繁使用的 pkg 版本,应该满足:
    1. 发布已有一段时间,久经考验,并未发现重大漏洞
    2. 在维护周期内的版本
  3. 我们的软件构建和上游供应链检查应该进一步加强,并不断使用最新的 CVE 数据库扫描自查。

其它思考

  1. 软件供应链是一个严肃的事情,但也是一个 出了事/发现损失 才会被严肃对待的事情
  2. FOSS 是一项伟大的事业,本身的开放带来技术传播的同时,丰富、优质的库以近乎零成本提供给下游应用开发者
  3. 然而,长期对 FOSS 社区的无偿要求,只会恶化这个社区,并增加此类安全问题的概率 – 进而让下游开发者的成本变得更高
  4. 需要有持续的正向资金支持 FOSS;保证并促使更多 FOSS 的开发者体面地且专注投入到 FOSS 软件的开发和维护
  5. FOSS 是这个时代的奇迹,也是这个时代的幸运;需要大家好好守护。

参考

  • Openwall: backdoor in upstream xz/liblzma leading to ssh server compromise
  • Article: A backdoor in xz
  • Article: Everything I Know About the Xz Backdoor
  • GitHub Gist: FAQ on the xz-utils backdoor

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第四百三十六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"不同平台上换行的问题"相关的内容,本章回中将介绍如何在页面上显示蒙板层.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

[中级]软考_软件设计_计算机组成与体系结构_04_寻址地址

寻址地址 概念指令的概念 寻址方式立即寻址方式直接寻址方式间接寻址方式寄存器寻址方式寄存器间接寻址方式往年真题 概念 指令的概念 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如下: 操作码字段地址码字…

SAP 未清销售订单的取值

每个公司都会有自己的销售报表, 一般来说VA05的都满足不了客户的定制化需求。 所以都要进行自定义报表的开发, 在开发的过程中,也会有未清销售订单和已清销售订单的区分 一开始我的想法是,根据销售订单去找交货单累计已交货的…

面向对象程序之多态

1.多态的概念 简单来说,就是多种形态,具体点就是去完成某个行为,不同的对象去完成会有不同的形态。 举个例子:对于动物,他们吃的都是食物,但狗吃的是狗粮,猫吃的是猫粮,去完成吃这个…

lua脚本在redis集群中哈希槽分片问题

上文说到,通过用redis lua脚本实现时间窗分布式限流 可以操作redis lua脚本来实现时间窗限流,在执行lua脚本的时候,参数中有个keys列表,当lua脚本中如果有操作多个key的情况,就可以传个key列表了。通常情况下&#xff…

Java封装最佳实践:打造高内聚、低耦合的优雅代码~

​ 个人主页:秋风起,再归来~ 文章专栏:javaSE的修炼之路 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、封装 1.1 封装的概念 面向对象程序三大…

python练习二

# Demo85def pai_xu(ls_test):#创建一个列表排序函数命名为pai_xu# 对创建的函数进行注释"""这是一个关于列表正序/倒序排列的函数:param ls_test: 需要排序的列表:return:"""ls1 [int(ls_test[i]) for i in range(len(ls_test))]#对input输入的…

surfer绘制等值线图

surfer介绍 Surfer软件,是美国Golden Software公司编制的一款以画三维图的软件。该软件具有强大的插值功能和绘制图件能力,可用来处理XYZ数据,是地质工作者常用的专业成图软件(来源于百度百科)。 surfer可以用来绘制…

计算机网络—TCP协议详解:特性、应用(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 3:34 🔄 ◀️…

Java中常见的锁策略

目录 乐观锁 vs 悲观锁 悲观锁: 乐观锁: 重量级锁 vs 轻量级锁 ⾃旋锁(Spin Lock) 公平锁 vs 非公平锁 可重⼊锁 vs 不可重入锁 读写锁 乐观锁 vs 悲观锁 悲观锁: 总是假设最坏的情况,每次去拿数据的时候都认为别…

3d整体模型怎么拆图---模大狮模型网

3D整体模型怎么拆图 一、模型准备 在进行3D整体模型的拆图之前,首先需要确保模型的构造清晰明了,各个部件之间的连接关系明确,并且模型的层级结构已经建立完成。 二、确定拆图方式 拆解方向:根据模型的结构和设计需求&#xff…

教你用Fiddler捕获HTTPS请求

安装Fiddler 这里不特别说明了,网上搜索一大把,根据安装引导一步步安装即可。(这里采用的是fiddler v4.6) 配置Fiddler 1、打开fiddler配置Tools –>Telerik Fiddler Options。 2、打开HTTPS配置项,勾选“Captur…

Leetcode-2580-统计将重叠区间合并成组的方案数-c++

题目详见https://leetcode.cn/problems/count-ways-to-group-overlapping-ranges/ 题目要求将最后的ranges分为两个组。也就是说当你的ranges已经满足题目要求的时候,这两个组怎么分是随意的,这里也就引出了 2 k 2^k 2k 的由来,其实就是每组…

Leetcode-2810-故障键盘-c++

题目详见https://leetcode.cn/problems/faulty-keyboard/ 题解 这道题的关键是如何合理地使用STL,毕竟是一道简单题。 之前常用到的Vector容器是单向开口的连续内存空间 deque则是一种双向开口的连续线性空间,又称双端动态数组。所谓的双向开口&#x…

Windows Server 2022 使用ApacheDS用户远程桌面登录服务器

Windows Server 2022 使用ApacheDS用户远程桌面登录服务器 1、接上篇 Windows Server 2022 使用ApacheDS用户认证 使用Administrator用户远程登录192.168.1.100windows server,打开pGina软件 2、输入刚刚在ApacheDS中的新添加的用户测试一下,会自动添加…

200个有趣的HTML前端游戏项目合集(持续更新中)

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

[实时流基础 flink] 窗口

在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。 文章目录 6.1 窗口的概念6.2 窗口的分类**1&#x…

让接口自动化测试更简单

HTTP 接口测试很简单,不管工具、框架、还是平台,只要很的好的几个点就是好工具。 测试数据问题:比如删除接口,重复执行还能保持结果一致,必定要做数据初始化。接口依赖问题:B 接口依赖 A 的返回值&#xf…

新model开发记录

模型使用 -- 用blender导出为 fbx ,修改渲染方式(点击模型->Materials->Extract Materials(将材质从fbx中 单独提取出来了)->Materials 选择 Shader -> SimpleURPToonLitExample 点开脸的材质,勾选第一条) 解决角色…

【C++的奇迹之旅(二)】C++关键字命名空间使用的三种方式C++输入输出命名空间std的使用惯例

文章目录 📝前言🌠 C关键字(C98)🌉 命名空间🌠命名空间定义🌉命名空间使用 🌠命名空间的使用有三种方式:🌉加命名空间名称及作用域限定符🌠使用using将命名空间中某个成员…