一、漏洞基础信息
-
漏洞名称:sudo chroot 权限提升漏洞(又称 “chwoot” 漏洞)
-
CVE 编号:CVE-2025-32463
-
影响版本:sudo 1.9.14 及以上版本(含 1.9.15p5,本次复现版本)
-
漏洞原理:利用 sudo 的-R/--chroot选项,在进入用户可控的 chroot 环境后,sudo 会优先加载该环境下的恶意 NSS(Name Service Switch)配置文件和动态链接库。由于 glibc 的 NSS 机制在解析用户信息时会加载这些恶意库,且该过程发生在sudoers权限检查之前,攻击者可通过恶意库在 root 权限下执行任意代码,实现权限提升。
二、环境准备
-
系统要求:Linux 系统(本次使用 Ubuntu 类系统),sudo 版本为 1.9.14 及以上(通过sudo -V确认)。
-
低权限用户:已创建testuser(UID=1001),用于模拟攻击者。
-
工具安装:需安装gcc(用于编译恶意动态库),以 root 身份执行:
1
apt update && apt install gcc -y
三、详细复现步骤
(一)切换到低权限用户
-
以 root 身份切换到testuser:
1 | su testuser |
-
验证当前用户身份:
1 | $ id |
(二)创建漏洞利用脚本
-
在testuser环境下,创建脚本:
1 | nano exp.sh |
-
脚本内容(核心逻辑为构造恶意库和 chroot 环境):
1 | #!/bin/bash |
-
保存并退出编辑器(Ctrl+O保存,Ctrl+X退出)。
(三)赋予脚本执行权限并运行
-
赋予执行权限:
1 | chmod +x exp.sh |
-
执行脚本:
1 | ./exp.sh |
(四)验证提权结果
-
脚本执行后,成功进入 root 环境,执行id验证:
四、关键流程解析
-
恶意库设计:woot1337.c中用attribute((constructor))修饰的woot()函数,会在库被加载时自动执行,通过setreuid和setregid切换为 root 权限,并启动 bash shell。
-
chroot 环境构造:创建woot/etc目录,写入nsswitch.conf指定解析passwd时加载/woot1337(即恶意库.2),同时复制/etc/group避免用户组解析失败。
-
漏洞触发:sudo -R woot woot命令使 sudo 进入woot目录作为 chroot 环境,在解析用户信息时加载恶意库,触发woot()函数执行,最终获得 root shell。
五、复现后处理
-
清理临时文件:退出 root shell(exit),返回testuser环境,删除临时目录:
1 | rm -rf /tmp/sudowoot.stage.* |
2升级 sudo 修复漏洞:以 root 身份执行:
1 | apt update && apt upgrade sudo -y # 升级至1.9.18及以上修复版本 |
六、注意事项
-
漏洞利用依赖sudo -R选项的使用权限,若用户被禁止使用该选项,则无法触发。
-
复现仅用于安全研究,请勿在未授权系统上使用。
-