liblzma/xz漏洞

研究人员发现liblzma/xz官方库5.6.0和5.6.1版本存在恶意后门,可能导致SSH认证绕过。非x86-64架构不受影响,建议检查版本并降级至5.4.6。排查和修复脚本提供给受影响用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、事情概述

        在2024年3月28日,研究人员发现在liblzma/xz官方库的5.6.0和5.6.1版本中被发现植入了恶意后门,具体来说,这个后门会篡改Makefile,注入恶意脚本到configure中执行,从而在生成的代码里链接恶意的.o。当满足一定条件,即当前进程是/usr/sbin/sshd,不存在调试环境变量,配置了LANG时,就会触发后门逻辑。攻击者可能利用这一漏洞在受影响的系统上绕过SSH的认证获得未授权访问权限,执行任意代码。

非x86-64架构的系统不受此影响,Git版的xz中也没有发现恶意代码,只有完整下载包中存在问题。因此,建议用户检查xz版本,如果输出为5.6.0或5.6.1,说明系统可能已被植入后门。

二、影响范围

xz 和 liblzma 5.6.0~5.6.1 版本,可能包括的发行版 / 包管理系统有:

  • Fedora 41 / Fedora Rawhide

  • Debian Sid

  • Alpine Edge

  • x64 架构的 homebrew

  • 滚动更新的发行版,包括 Arch Linux / OpenSUSE Tumbleweed

如果您的系统使用 systemd 启动 OpenSSH 服务器,您的 SSH 认证过程可能被攻击。

非 x64 (amd64) 架构的系统不受影响。

三、

1、排查软件版本是否在受影响范围内

        您可以通过在命令行中输入 xz --version 来检查xz的版本。如果输出结果为5.6.0或5.6.1,那么您的系统可能已被植入后门。此外,值得注意的是,xz的5.6.0和5.6.1版本尚未被正式集成进Linux发行版中,目前它们主要存在于预发布版本中。同时,大部分Linux发行版中的openssh并不直接使用liblzma库,目前已知仅有Debian以及一些openssh的补丁直接使用了liblzma库。

2、如果相关版本在受影响范围内,利用如下自查脚本排查是否存在后门:
#! /bin/bash

set -eu

# find path to liblzma used by sshd
path="$(ldd $(which sshd) | grep liblzma | grep -o '/[^ ]*')"

# does it even exist?
if [ "$path" == "" ]
then
echo probably not vulnerable
exit
fi

# check for function signature
if hexdump -ve '1/1 "%.2x"' "$path" | grep -q f30f1efa554889f54c89ce5389fb81e7000000804883ec28488954241848894c2410
then
echo probably vulnerable
else
echo probably not vulnerable
fi

四、解决方案

 将xz版本降级至 5.4.6 版本。

在使用Buildozer打包APK时,如果遇到从https://tukaani.org/xz/xz-5.2.4.tar.gz下载liblzma时报错timeout,可以尝试以下几种解决方法: 1. **检查网络连接**: - 确保你的网络连接稳定,可以访问外部网站。 - 尝试在浏览器中直接访问该URL,确认是否可以正常下载。 2. **使用国内镜像源**: - 有时直接从国外网站下载可能会比较慢,可以尝试使用国内的镜像源。例如,可以使用国内的Gitee或GitHub镜像来下载xz源码包。 3. **手动下载并放置**: - 手动从https://tukaani.org/xz/xz-5.2.4.tar.gz下载liblzma源码包。 - 将下载的源码包放置到Buildozer的缓存目录中,通常是`~/.buildozer/cache/`。 4. **增加超时时间**: - 在Buildozer的配置文件`buildozer.spec`中,增加下载超时时间。找到`[buildozer]`部分,添加或修改`download_timeout`参数,例如: ```ini [buildozer] download_timeout = 60 ``` 5. **使用代理**: - 如果你的网络环境需要使用代理,可以配置Buildozer使用代理。找到`[buildozer]`部分,添加代理配置,例如: ```ini [buildozer] proxy = http://your_proxy:port ``` 6. **更新Buildozer**: - 确保使用的是最新版本的Buildozer,因为新版本可能修复了下载相关的问题。可以使用以下命令更新Buildozer: ```bash pip install --upgrade buildozer ``` 通过以上方法,应该可以解决下载liblzma时报错timeout的问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序之大道至简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值