sudo chroot 权限提升漏洞
漏洞信息
漏洞名称: sudo chroot 权限提升漏洞
漏洞编号:
- CVE: CVE-2025-32463
漏洞类型: 权限提升
漏洞等级: 高危
漏洞描述: ### 受影响产品
sudo是一个在Unix和类Unix操作系统中广泛使用的程序,允许用户以其他用户(通常是超级用户)的安全权限运行程序。它是系统管理员和高级用户的常用工具,用于执行需要更高权限的任务。由于其普遍性和高权限特性,sudo中的漏洞可能对系统安全构成严重威胁。
漏洞解释
此漏洞为权限提升类型,存在于sudo的chroot功能中。具体来说,问题源于sudo v1.9.14版本中引入的chroot特性匹配处理代码的改动。在调用pivot_root()
和unpivot_root()
函数时,会触发名称服务切换(NSS)操作,导致系统从不受信任的环境中加载/etc/nsswitch.conf
配置文件。攻击者可以通过构造恶意的chroot环境,包含自定义的/etc/nsswitch.conf
和恶意库文件,从而在sudo进程以root权限运行时加载并执行恶意代码。
影响分析
此漏洞允许攻击者在特定条件下提升权限至root,无需用户交互即可执行任意代码。由于sudo的广泛使用和其高权限特性,此漏洞对系统安全构成严重威胁。攻击者可以利用此漏洞完全控制系统,进行数据泄露、服务中断等恶意操作。漏洞的利用需要攻击者能够控制chroot环境,并在其中放置恶意文件,因此在某些配置下可能难以利用。然而,一旦条件满足,攻击者可以轻松实现权限提升,对系统安全造成严重影响。
产品名称: sudo
影响版本: 1.9.14
来源: https://github.com/SpongeBob-369/cve-2025-32463
类型: CVE-2025:github search
仓库文件
- Dockerfile
- README.md
- image
- run.sh
- sudo-chroot.sh
来源概述
cve-2025-32463
chroot
sudo chroot <dir name> <command>
在选定的dir name中执行命令command
形成原理
这个问题是在 sudo v1.9.14引入的,这个版本升级了chroot特性被使用时的匹配处理代码
这一新的改动,使得执行命令chroot
匹配前改变根目录的id。具体函数规定在plugins/sudoers/pivot.c
中。这个文件(现已被删除)中定义了pivot_root()
和unpivot_root()
函数用于处理chroot的匹配逻辑。调用这两个函数,将触发名称服务切换(NSS)操作,导致系统从不受信任的环境中加载/etc/nsswitch.conf
配置文件(因为chroot已经改变到当前根目录的id了)。该配置文件包含指令,指示系统如何检索有关用户、组和主机的信息,其中可以列出多个来源,并按顺序搜索,直到找到匹配项。
由于/etc/nsswitch.conf
包含很多行条目,搜寻信息的时候会根据行条目的顺序进行查找。漏洞重要的点在于:对文件nsswitch.conf
中进行源查找的时候,源名称会被用作共享对象路径的一部分,例如:ldap
源转换为了libnss_ldap.so
。当NSS函数使用ldap源的时候,就会加载该库。
对于攻击者,调用这pivot_root()
和unpivot_root()
会触发NSS操作。所以攻击者就可以在可控路径下构造chroot根目录,其中包含/etc/nsswitch.conf
文件以及恶意库文件。名称服务可以指向自定义的NSS模块,在这个模块中可以伪造恶意的共享库。
当攻击者运行sudo -R <fake_root_dir> <command>
尝试以chroot模式执行命令,sudo尚未完全验证权限就调用了系统的NSS去解析用户/组信息,读取伪造的/etc/nsswitch.conf
,指示恶意NSS模块。这个时候sudo进程已切换到了伪根目录,并且仍然以root权限运行,因此会以root权限加载并且执行攻击者的恶意共享库代码。
复现步骤
1 |
|