CVE-2025-32463
通过Linux中的Sudo chroot实现本地权限提升至root。
这是什么?
相关新闻可以在这里阅读:
TL;DR 和 CMIIW 所以,sudo是用来以管理员/root身份运行命令的命令。用户只有在加入sudoers组的情况下才能运行sudo。但是sudo二进制文件中存在一个bug,使得没有权限运行sudo的普通用户能够切换为root用户。
这个bug存在于sudo命令的--chroot
选项中。chroot允许在临时目录中运行命令。问题在于,sudo会先检查临时目录中的配置文件,然后再检查用户是否有权运行sudo。
如果这个配置文件 somehow 可以被我们编辑,并指向一个已经被修改过的代码来获取root访问权限,我们就可以在没有身份验证或注册为sudoer的情况下获得root访问权限。因为在处理过程中,为了获取这些信息,系统会临时将命令升级为root权限。
这个配置文件是什么?是/etc/nsswitch.conf
。这个配置文件被系统用来了解,例如,这个用户属于哪个组等等。nsswitch文件大致如下:
<database> <source1> <source2> ... <sourcen>
|
|
看!如果使用的数据源是files
,nss将调用一个名为libnss_files.so.2
的库。这个文件包含C代码,如果我们编辑它,很有可能我们可以获得root访问权限。因为,系统以root身份运行这个库,即使命令不是由sudoers用户运行的。可以在exploit.sh
文件中看到。
总结:
- 在我们控制的文件夹中创建伪造的配置文件,即
/etc/nsswitch.conf
。 - 使用chroot将sudo指向该文件夹。
- 让sudo加载已被注入代码的库以获得root访问权限。