找回密码
 立即注册
搜索
查看: 11737|回复: 55

[网络] 潜伏三年,危及 sshd 密钥验证的 xz/liblzma 供应链攻击

[复制链接]
     
发表于 2024-3-30 14:02 | 显示全部楼层 |阅读模式
回复

使用道具 举报

     
发表于 2024-3-30 14:21 来自手机 | 显示全部楼层
随着开源组件数量和复杂性的增加,这种依赖链投毒的危险也会越来越多吧

—— 来自 HUAWEI LNA-AL00, Android 12上的 S1Next-鹅版 v2.5.3-play
回复

使用道具 举报

头像被屏蔽
发表于 2024-3-30 14:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2024-3-30 14:53 | 显示全部楼层
直接攻击SSH,一旦成功了,就是无数机器配万能钥匙
回复

使用道具 举报

发表于 2024-3-30 14:56 来自手机 | 显示全部楼层
没向公网开放ssh端口,应该没事吧。各个被影响的发行版已经发了降级更新。
回复

使用道具 举报

     
发表于 2024-3-30 15:20 | 显示全部楼层
看名字,这人还是中国人?
回复

使用道具 举报

     
发表于 2024-3-30 15:33 | 显示全部楼层
moekyo 发表于 2024-3-30 15:20
看名字,这人还是中国人?

不好说,他全名的拼法Jia Cheong Tan不是大陆标准,另一方面名字、时区乃至IP可以伪装。
回复

使用道具 举报

     
 楼主| 发表于 2024-3-30 16:00 | 显示全部楼层
本帖最后由 Junakr 于 2024-3-30 16:23 编辑

这事虽大不过现在其实也不用太担心,一点小火苗在实际造成影响前就被扑灭了等待安全人员对 xz-utils 的进一步分析。

转过来是觉得这个后门被发现的过程很有趣,只是一位 Postgres 开发者(就职于微软)在做微基准测试时注意到 ssh 登陆会有异常的 CPU 资源调用,进一步分析发现实际占用资源的是 liblzma,进而追溯到是有恶意代码注入。

报告者:I am *not* a security researcher, nor a reverse engineer.

如果后门程序再隐蔽一些、或是开发者没把 CPU 突刺当回事,我想过段时间也会有安全研究者发现这个问题,不过到那时产生的震动可就远比现在大了。
回复

使用道具 举报

发表于 2024-3-30 16:11 来自手机 | 显示全部楼层
说不用担心还为时过早吧,攻击者未必是潜伏了三年之后才投毒,可能是这次最新的投毒才被意外发现。据HN上面的xz维护者说这位攻击者提供了不少二进制测试文件,目前应该都当作有潜在风险来看待。
回复

使用道具 举报

     
发表于 2024-3-30 16:20 来自手机 | 显示全部楼层
生存戰略 发表于 2024-3-30 14:53
直接攻击SSH,一旦成功了,就是无数机器配万能钥匙

其实可以是三体人,ssh 给你发的什么东西都不是可信的

不过问题在于 Arch 之类的发行版,xz 默认不是捆绑动态链接,影响会小
回复

使用道具 举报

     
发表于 2024-3-30 16:22 来自手机 | 显示全部楼层
这人最搞笑的是一个是攻击前不久去删掉了 SECURITY.md 里面的安全反馈部分,以及邮件列表催催 Ubuntu 让他赶快合并,有点做贼心虚了
回复

使用道具 举报

     
发表于 2024-3-30 16:45 来自手机 | 显示全部楼层
早上看到这事,读了一遍挺有意思的,最有意思的地方在于,这个攻击依赖于一行脚本,而这行脚本实际上没有进入 git,而是被直接上传到 release tarball 里,我也经常嫌麻烦不喜欢 git clone,而是直接下载特定版本的 tarball,我从没意识到这里面的代码和 git 里的代码可以完全不相干,没法像 git 一样逐 commit 审计,很难审计的结果大概率就是没人审计,这种攻击能奏效,代码托管平台先分一半锅吧。

另外这个攻击还包含另外两个“测试”文件,发现的人特意提到,这两个文件没有被用在任何一个测试中,你好歹装一下呢?草台论再上一分。

虽然这个攻击影响的是 openssh,但实际上 openssh 并不依赖于 xz,但 debian 之类的发行版会打一些补丁,让它依赖 systemd,而 systemd 依赖 xz,所以攻击脚本里还明确限定 deb 和 rpm 包,像 arch 这种原味打包的反而不受影响。

它被发现也够巧合的,如果这人再巧妙一点,影响再小一点,真进发行版正式版,ssh 出后门,不敢想会闹出多大动静。
回复

使用道具 举报

发表于 2024-3-30 16:56 | 显示全部楼层
本帖最后由 posthoc 于 2024-3-30 01:03 编辑

release 里的打包毕竟可以不仅是源码打包,很多项目也会用来发布二进制,所以强制要求只有repo里的文件不现实。不想clone的话github也是可以直接给repo打zip包下载的
不过从这次事件可以看出哪怕各大发行版的打包者也都是直接下载现成tarball编译的,aur和slackbuilds那种用户自行编译的软件库的编译脚本一般也是如此。

回复

使用道具 举报

     
发表于 2024-3-30 16:56 | 显示全部楼层
本帖最后由 Midnight.Coup 于 2024-3-30 17:11 编辑
攻击者污染了上游 Git 仓库的 build-to-host.m4 构建脚本和测试用例,在编译期间向 liblzma 注入攻击代码。

如果自己编译打包呢
部分发行版的 OpenSSH Server 链接到 libsystemd ,而 libsystemd 依赖 liblzma 。

Arch 就不是
总结下,目前只有 x64 Linux 且使用 deb 和 rpm 包的发行版的测试&滚动版本受影响,而开了 sshd 服务的有受攻击的风险
回复

使用道具 举报

     
发表于 2024-3-30 17:15 | 显示全部楼层
https://news.ycombinator.com/item?id=39868804
Focusing on sshd is the wrong approach. The backdoor was in liblzma5. It was discovered to attack sshd, but it very likely had other targets as well. The payload hasn't been analyzed yet, but _almost everything_ links to libzma5. Firefox and Chromium do. Keepassxc does. And it might have made arbitrary changes to your system, so installing the security update might not remove the backdoor.
回复

使用道具 举报

头像被屏蔽
     
发表于 2024-3-30 17:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2024-3-30 17:39 | 显示全部楼层

看来开源也不是那么安全,这人潜伏三年有点厉害了
回复

使用道具 举报

     
发表于 2024-3-30 18:38 | 显示全部楼层
nanonya2 发表于 2024-3-30 15:33
不好说,他全名的拼法Jia Cheong Tan不是大陆标准,另一方面名字、时区乃至IP可以伪装。 ...

东南亚,新加坡马来西亚喜欢这样拼…

Tan Cheong Jia应该是陈昌佳

评分

参与人数 1战斗力 +1 收起 理由
若荼泱 + 1

查看全部评分

回复

使用道具 举报

     
发表于 2024-3-30 19:42 | 显示全部楼层
看社交媒体 有人推测是🇰🇵黑客
回复

使用道具 举报

     
发表于 2024-3-30 20:00 | 显示全部楼层
ambivalence 发表于 2024-3-30 17:39
看来开源也不是那么安全,这人潜伏三年有点厉害了

爆出的开源不安全已经很多年了,乙方安全吃供应链安全这口饭也吃了好几年了,给甲方提供组件扫描和BCSD的SaaS服务,比较著名的还是上次朝鲜的往安全工具里面塞后门的
回复

使用道具 举报

     
 楼主| 发表于 2024-3-30 21:15 | 显示全部楼层
meme 时间

photo1.jpg

photo2.jpg

photo3.jpg

以及,xkcd 永不过时:

photo.jpg

https://xkcd.com/2347/
回复

使用道具 举报

     
发表于 2024-3-30 21:21 | 显示全部楼层
以后还是不要为了方便直接去拉二进制代码,还是自己编译一遍比较安全
回复

使用道具 举报

     
发表于 2024-3-30 23:43 | 显示全部楼层
windrarara 发表于 2024-3-30 21:21
以后还是不要为了方便直接去拉二进制代码,还是自己编译一遍比较安全

还是没办法解决,这次的问题是编译的时候加了料进去,与源代码不一致。记得以前就有讨论过在编译器里放后门,如果发现那更是核弹级别了
回复

使用道具 举报

发表于 2024-3-30 23:55 | 显示全部楼层
编译器放后门不是早就有了,编译器代码也要编译的。

很早就有都市传说,用{有后门的编译器}编译{编译器代码},后门就永远留在编译器里,查编译器代码肯定也查不出来。

回复

使用道具 举报

     
 楼主| 发表于 2024-3-31 00:28 | 显示全部楼层
本帖最后由 Junakr 于 2024-3-31 00:54 编辑

Lasse Collin(xz-utils 的原维护者)已经开始处理这起事件。
因为他和攻击者的 GitHub 账号都被停用了,xz-utils 的更新暂时迁移到镜像仓库。

https://tukaani.org/xz-backdoor/
https://git.tukaani.org/?p=xz.git;a=summary

---

补一个 Lasse 的邮件回复:

Thank you. None of these patches are urgent. I'm on a holiday and only
happened to look at my emails and it seems to be a major mess.

My proper investigation efforts likely start in the first days of
April. That is, I currently know only a few facts which alone are bad
enough.

Info will be updated here: https://tukaani.org/xz-backdoor/

--
Lasse Collin

https://lkml.org/lkml/2024/3/30/188
回复

使用道具 举报

     
发表于 2024-3-31 01:28 来自手机 | 显示全部楼层
回复

使用道具 举报

     
发表于 2024-3-31 07:45 来自手机 | 显示全部楼层

换我我是当网络波动了
回复

使用道具 举报

     
发表于 2024-3-31 08:42 来自手机 | 显示全部楼层

永远不要低估一个工程师对性能的追求

—— 来自 Xiaomi 2211133C, Android 14上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
 楼主| 发表于 2024-3-31 09:51 | 显示全部楼层
目前有关这个后门技术细节的相关信息和资源汇总在主楼的 gist 链接中更新较为丰富(作者还在持续更新,虽然评论区时不时有些恶臭)。
https://gist.github.com/thesames ... bc3dce9ee78baad9e27

或者感兴趣的可以直接关注事件最开始被报告的邮件列表(这件事后就被这一条主题淹没了),最初的报告者 Andres Freund 也在持续跟进邮件。
https://www.openwall.com/lists/oss-security/2024/03/

HN 的信息也很新不过我实在看不过来评论区

根据目前的载荷分析结果来看,这个后门具有远程代码执行能力,而且很难通过网络被安全工具扫描到。
初步的 bash 阶段分析显示它有着三个执行阶段并且具备扩展性,通过纯命令行工具实现了复杂的混淆使自己看上去无辜。

https://bsky.app/profile/filippo ... /post/3kowjkx2njy2b
https://gynvael.coldwind.pl/?lang=en&id=782
回复

使用道具 举报

     
发表于 2024-3-31 09:54 | 显示全部楼层

说起来如果现在网页都不用压缩,应该会肉眼可见变慢

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2024-3-31 10:44 | 显示全部楼层
痴货 发表于 2024-3-30 23:43
还是没办法解决,这次的问题是编译的时候加了料进去,与源代码不一致。记得以前就有讨论过在编译 ...

编译器加料历史悠久,Ken Thompson都干过
因为已经有不少例子,反而还有可能更被提防
回复

使用道具 举报

     
 楼主| 发表于 2024-3-31 14:10 | 显示全部楼层
Ken 在论文中演示 Thompson hack 就是为了警醒人们注意对编译工具的信任,怎么就变成他干过这事了
近几年影响比较大的 XcodeGhost 是一个类似的编译工具下毒事件。
和 xz-utils 通过编译脚本注入恶意代码还是有些区别,gcc 和 cmake 是安全的,恶意代码也包含在仓库中,只不过被藏起来了。
回复

使用道具 举报

     
发表于 2024-3-31 15:05 | 显示全部楼层
geeky_kappa 发表于 2024-3-31 07:45
换我我是当网络波动了

localhost不至于网络波动吧,总不能是网卡卡了
回复

使用道具 举报

     
发表于 2024-3-31 18:46 | 显示全部楼层
本帖最后由 萌名雪 于 2024-3-31 18:48 编辑

我高强度关注两天了:

首先这次波及面不是很大,被按在襁褓里了(影响最大的发行版是 Arch, DebianUnstable 和 nixos unstable)

然后它有一个 kill switch:设置全局变量
  1. yolAbejyiejuvnup=Evjtgvsh5okmkAvj
复制代码

可以让后门不生效[1]。如果你系统不方便升,不妨用这个先补救下

最后附上一个别处转来的总结:
已知的如下环境不受影响
- 不是Linux系统(uname不为Linux)
- 没有IFUNC. IFUNC是GLIBC中用于覆盖符号的一个功能.
- 不编译动态库(shared object)
- 不是x86_64, 或者target triple结尾不是linux-gnu
- 编译器不是GCC, 或者链接器不是GNU ld

[1]: https://gist.github.com/thesames ... gistcomment-5006861
回复

使用道具 举报

     
发表于 2024-3-31 18:47 | 显示全部楼层
199491711845092_.pic.jpg
回复

使用道具 举报

     
 楼主| 发表于 2024-3-31 23:15 | 显示全部楼层
本帖最后由 Junakr 于 2024-4-1 00:55 编辑

b5157017fbcebb8d.png

https://twitter.com/fr0gger_/status/1774342248437813525

更新一张一图流梳理。

---

GKAl3-uXUAArcX9.png

https://twitter.com/AminovDanielle/status/1774459917287530909

有图文说明就好理解多了。
回复

使用道具 举报

     
 楼主| 发表于 2024-4-1 09:47 | 显示全部楼层
因为这起事件,OpenSSH 正在考虑引入无需依赖 libsystemd 也能获得 systemd-notify 支持的方法。

https://bugzilla.mindrot.org/show_bug.cgi?id=2641#c13

回复

使用道具 举报

     
发表于 2024-4-1 11:29 | 显示全部楼层
这次还好

自查了,我们的产品都不涉及,不用周末紧急加班出升级包。。
回复

使用道具 举报

     
发表于 2024-4-1 11:43 来自手机 | 显示全部楼层
本帖最后由 Benighted 于 2024-4-1 12:30 编辑

XZ Backdoor: Times, damned times, and scams | Hacker News (ycombinator.com)   原文作者根据提交时间的规律推测 Jia Tan 是个伪装成中国人、实际在某个采用欧洲东部时区国家的受雇黑客,链接是 hackernews 的讨论

—— 来自 Xiaomi 2211133C, Android 14上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2024-4-1 12:28 来自手机 | 显示全部楼层
Benighted 发表于 2024-4-1 11:43
news.ycombinator.com/item?id=398892… 原文作者根据提交时间的规律推测 Jia Tan 是个伪装成中国人、实际 ...

链接被截断了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-14 12:55 , Processed in 0.107475 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表