该漏洞利用实现了一种 Dirty Cred 攻击方法,以获得对 /etc/passwd 的未授权写入权限。与许多类似漏洞利用不同(它们会创建大量页面或激进地喷射文件描述符),本方法采取更具针对性的路线来破坏所需的内核结构。
设置 CPU 亲和性并增加文件描述符限制
确保稳定的性能和足够的文件描述符用于喷射。
初始化 io_uring
创建一个 io_uring 实例并注册一个缓冲区环以供内核内存使用。
注销缓冲区环
触发漏洞,使内核数据结构处于可利用状态。
文件描述符喷射
打开大量指向 /etc/passwd 的文件描述符,期望破坏所需的内核对象。
修改文件模式
损坏 f_mode 标志,使 /etc/passwd 变为可写。
写入后门条目
将 evil::0:0:root:/root:/bin/bash 插入到 /etc/passwd 中。
io_uring 实现(已在包含 CVE-2024-0582 漏洞的内核上测试)。.rs 源文件)。main.rs 中的 EXT4_FOPS_OFFSET 值(默认为 0x122b3c0)。不匹配可能导致漏洞利用失败或行为异常。如果您的内核导出符号信息并且您拥有适当的权限(在生产系统上通常受限),则可以从 /proc/kallsyms 中读取:
获取 _text 的地址:
grep " _text" /proc/kallsyms
将结果地址称为 TEXT_ADDR。
获取 ext4_file_operations 的地址:
grep ext4_file_operations /proc/kallsyms
将结果地址称为 EXT4_FOPS_ADDR。
相减:
EXT4_FOPS_OFFSET = EXT4_FOPS_ADDR – TEXT_ADDR