在 Linux 权限管理的世界里,Sudo 一直被视为“王者”——它是权限的守门员、根用户的看门人、系统的最后一道防线。但如果这位“守门人”被一个巧妙的技巧绕过,把钥匙交给了不该进入的人,会发生什么?
根据 Stratascale 网络研究单位(CRU)研究员 Rich Mirch 最新发布的安全通告,Sudo 中存在两个严重漏洞:CVE-2025-32463 和 CVE-2025-32462。这些漏洞长期潜伏在这个世界上最值得信赖的提权工具中,允许攻击者绕过 sudoers 配置限制,实现本地提权至 root,即使这些用户在配置中被明确拒绝了该权限。
CVE-2025-32463(CVSS评分:9.3)——被 chroot 保护却仍可越狱
受影响版本:Sudo 1.9.14 至 1.9.17(含)
这个漏洞的故事像极了“本应保护你的围墙,却变成了攻击者进入的门户”。CVE-2025-32463 是一个本地权限提升漏洞,利用了 Sudo 的一个较少使用的选项 --chroot
(即 -R
参数)。
通告指出:“攻击者可以利用 Sudo 的 -R
(即 --chroot
)参数,以 root 身份运行任意命令,即使他们并未被 sudoers 文件授予该权限。”
问题的核心,在于 Sudo 从 1.9.14 版本开始对 chroot()
的实现方式发生了变化:它在读取 sudoers 配置文件之前,就开始在 chroot 环境中解析路径。攻击者可以利用这一点,将 Sudo 引导至 chroot 目录中的伪造配置文件,如伪造的 /etc/nsswitch.conf
,从而指示系统加载恶意共享库,例如 libnss_/woot1337.so.2
。
最终效果是:无需 sudoers 权限,攻击者即可以 root 权限执行任意代码。
CRU 也发布了对应的漏洞验证脚本(PoC),名为 sudo-chwoot.sh
,完整复现了这一漏洞利用过程。
CRU 的概念验证 (sudo-chwoot.sh) 清楚地说明了这一点:
Matching Defaults entries for lowpriv on prod:
env_reset,
mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty,
runchroot=*
User lowpriv may run the following commands on prod:
(root) /bin/bash
lowpriv@prod:~$ sudo -R /web /bin/bash
bash-5.2#
正是这样 —— 低权限用户,一跃变身高权限用户。
为了解决这个问题,Sudo 1.9.17p1 版本已正式回滚了 1.9.14 引入的相关更改,并完全废弃了 --chroot
功能。补丁移除了 pivot_root()
的相关逻辑,从根本上杜绝了在命令匹配过程中调用 chroot()
的可能性。
CVE-2025-32462(CVSS 评分:2.8)——不可信的远程主机
受影响版本:Sudo 1.8.8 至 1.9.17(含)
虽然 CVE-2025-32462 相较于 chroot
漏洞看起来不那么“炫技”,但在企业环境中,它的威胁却丝毫不亚于前者——尤其是在大量服务器共用集中式 sudoers 配置的场景下。
这个漏洞与 --host
参数(简写为 -h
)有关,该参数的设计初衷是让用户查看其他主机上自己拥有的权限,而不是执行命令。然而,由于一个长达 12 年的逻辑漏洞,攻击者可以滥用该参数,在本地主机上伪装成其他主机的访问者,从而绕过主机名的限制逻辑。
CRU 在通告中指出:“这个漏洞实际上使得 sudoers 配置中对主机名的限制形同虚设,因为攻击者可以自己设置 sudo 在规则评估时使用的主机名。”
通告中给出了一个实际案例:
alice cerebus = ALL
根据 sudoers 规则,“alice” 只有在主机 cerebus
上才能拥有所有权限。
但借助这个漏洞,攻击者可以在任意主机上伪装主机名为 cerebus
,从而绕过访问控制,获取本不属于当前主机的 sudo 权限。
从 Sudo 1.9.17p1 版本开始,--host
参数终于被限制回其最初的用途:仅用于列出权限规则。尝试将其用于其他操作会直接报错,这也是它本应有的行为。
在这两个漏洞中,攻击者无需修改 sudoers 文件或获得管理员许可,就能实现权限提升。
正如安全通告总结:“正因为该行为,任何本地用户都可以诱使 Sudo 加载任意共享库,从而导致以 root 身份执行任意代码。”
发表评论
您还未登录,请先登录。
登录