处心积虑的投毒者蛰伏三年多,精心选择对象,通过复杂的攻击手法、专业的技战术,一步步支起一张大网,企图掌控全球主流linux发行版,一旦成功他将可以随意侵入全球绝大多数的服务器,这将是足以引爆全球的核弹危机。所幸由于复杂度过高以及投毒者的疏忽,事件被及早发现,没有造成过大的现实危害。但此次事件再次凸显出开源软件生态的脆弱性,本次事件仍可能只是冰山下的一角。墨菲安全也提醒所有企业不应该默认相信来自开源社区的软件,应该加强企业自身的供应链安全体系建设,才能当危机来临时应对自如。
事件简述
XZ-Utils是Linux、Unix等POSIX兼容系统中广泛用于处理.xz文件的套件,包含liblzma、xz等组件,已集成在Debian、Ubuntu、CentOS等发行版仓库中。
2024年3月30日凌晨墨菲安全实验室监测发现,微软工程师Andres Freund在排查sshd服务异常时发现xz-utils的上游tar包被投毒,并报告给oss-security社区。
- 恶意代码存在于 xz-utils 的 5.6.0 和 5.6.1 版本中,影响x86/64下的Linux系统。通过在程序构建时进行注入,生成的恶意载荷会通过 systemd 劫持 sshd 中的公钥验证流程,导致通过特定的Ed448密钥签名认证时,服务端可以执行任意命令。
- 当前GitHub已经关闭xz仓库、停止JiaT75、Lasse Collin账号,受影响的组件仓库大多已经回滚至5.6.0以前的版本,非滚动更新的发行版stable仓库不受影响。
- 投毒者JiaT75在2021年曾参与libarchive项目,存在可疑风险,社区已着手修复。
主要时间线
- 2021年1月26日,GitHub账号JiaT75创建
- 2021年10月19日,JiaT75向libarchive项目提交第一个PR
- 2022年2月6日,JiaT75向XZ Utils项目提交的commit开始被合并
- 2024年2月24日,JiaT75在GitHub release中发布第一个包含后门的版本5.6.0
GitHub中5.6.0版本发布截图
- 同日,Debian unstable仓库开始集成5.6.0版本xz
- 3月29日 23时51分,Andres Freund向oss-security社区披露该后门情况
影响分析
投毒手法高明,但目前对真实场景的影响相对有限。
其原因包括:
- 存在后门版本的xz-utils 5.6.0最早发布于2024年2月24日,被Debian unstable分支、Fedora Rawhide、Fedora 40、Arch Linux等少数仓库集成,还没有被大规模应用,CentOS/Redhat/Ubuntu/Debian/Fedora等的stable仓库都不受影响。
- 对于MacOS用户,通过homebrew或直接编译安装可能使用到受影响的组件,但其利用过程判断了只有x86/64下的Linux环境才会触发,因此不会被利用。
- 存在一些利用条件包括:
- 命令行参数argv[0]为/usr/sbin/sshd
- 未设置TERM、LD_DEBUG、LD_PROFILE环境变量
- 包含