xz-utils 后门代码分析
内容提要
该文章分析了开源项目xz-utils存在的后门漏洞,通过供应链攻击劫持sshd服务的身份认证逻辑,实现认证绕过和远程命令执行。后门目标定向至sshd服务,利用liblzma5依赖于libsystemd0的关系构建后门。详细分析了后门代码的植入和安装工程,以及后门代码的执行流程和攻击意图。后门漏洞影响范围包括多个主流Linux发行版。
延伸解读
供应链攻击的长期潜伏与信任建立
攻击者JiaT75自2022年2月起在xz-utils项目持续贡献代码,历时近两年获得仓库维护权限,最终植入后门。这种长期潜伏、逐步获取信任的方式,凸显了开源供应链攻击的隐蔽性和危害性。维护者背景审查和代码提交监控成为关键防御点。
后门利用系统依赖链实现精准打击
后门并非直接攻击xz-utils,而是利用部分Linux发行版中sshd间接依赖liblzma5的路径(sshd→libsystemd0→liblzma5),通过劫持RSA_public_decrypt()函数实现认证绕过。这种依赖链攻击表明,即使非直接依赖组件也可能成为攻击入口,系统组件依赖关系需全面审视。
高级技术手段增强后门隐蔽性
攻击者运用IFUNC、rtld-audit、GOT表重写、chacha20加密、代码混淆和反调试等多种技术,使后门难以检测和分析。例如,通过IFUNC在动态加载早期执行,绕过常规断点;利用rtld-audit机制早于LD_PRELOAD执行,规避安全检测。这些手法反映了攻击者高超的技术水平。
影响范围与修复建议
后门影响liblzma5.6.0和5.6.1版本,波及Debian、Ubuntu、Fedora、CentOS、RedHat、OpenSUSE等主流发行版的测试和实验版本。用户应检查系统是否包含受影响版本,及时更新或降级xz-utils,并关注官方安全公告。对于生产环境,建议避免使用测试版软件,并加强供应链安全监控。
Q&A
xz-utils的后门漏洞是如何被发现的?
该漏洞由微软工程师Andres Freund于2024年3月29日披露,编号为CVE-2024-3094。
攻击者是如何在xz-utils中植入后门代码的?
攻击者通过修改编译脚本,将后门代码隐藏在xz-utils源码中,并在编译时将其添加到liblzma5.so库中。
后门代码的执行是如何实现的?
后门代码通过劫持RSA_public_decrypt()函数实现,攻击者可以在身份认证成功后执行任意命令。
该后门漏洞影响了哪些Linux发行版?
后门漏洞影响了多个主流Linux发行版,包括Debian、Ubuntu、Fedora、CentOS、RedHat和OpenSUSE等。
攻击者在Github上潜伏了多久?
攻击者在Github上潜伏了近两年,最早的代码提交可以追溯到2022年2月7日。
后门代码的隐蔽性是如何保持的?
攻击者使用复杂的实施方案,包括代码混淆和反调试技术,以保持后门的隐蔽性和兼容性。