
研究人员发现一种新型技术,可利用 Linux 内核中一处复杂的 “释放后使用”(UAF)漏洞,成功绕过现代安全防护措施,获取 root(根)权限。
该技术针对的漏洞编号为 CVE-2024-50264,这是 AF_VSOCK 子系统中一处难以利用的竞态条件漏洞,因其复杂性曾获 “Pwnie 奖”(网络安全领域知名奖项)。该漏洞于 Linux 4.8 版本中引入,在利用过程中存在诸多重大挑战。
据亚历山大・波波夫(Alexander Popov,研究人员)介绍,非特权用户即可触发该漏洞,但利用过程存在严格限制:包括不稳定的竞态条件、极短的内存破坏时间窗口,以及尝试利用时导致内核崩溃的多种可能性。
最初的漏洞利用策略极为复杂,涉及大规模内存喷洒(memory sprays)以及 SLUBStick、Dirty Pagetable 等高级技术。
为寻求更简洁的利用路径,研究人员设计了一种以msg_msg
内核对象为核心的新方法。该方法的关键在于,可在不导致内核挂起的前提下,对msg_msg
对象进行破坏。
通常情况下,对msg_msg
对象执行 “释放后使用” 写入操作会失败 —— 因为其指针字段m_list.prev
非零,内核尝试获取自旋锁(spinlock)时会导致系统挂起。
研究人员通过对消息队列的巧妙操控,提出了如下解决方案:
- 将消息队列填充至接近满容量的状态,仅留下少量空闲空间;
- 利用程序尝试发送目标
msg_msg
对象:由于队列已满,内核会分配该对象,但会阻塞msgsnd()
系统调用,迫使其等待队列空闲空间;
- 在系统调用处于阻塞状态时,触发 “释放后使用” 漏洞,对处于等待状态的
msg_msg
对象中的字段进行破坏;
- 最后,释放消息队列中的部分空间,让被阻塞的系统调用恢复执行。此时内核会将已被破坏的
msg_msg
对象添加至队列,过程中会自动修复被破坏的链表指针,从而避免系统崩溃。

通过这种技术,即便在复杂条件下,也能从 “释放后使用” 写入操作中构建出可靠的漏洞利用原语(exploit primitive),且无需提前泄露内核信息。
要成功执行攻击,还需克服其他多项障碍。
研究人员通过跨缓存攻击(cross-cache attack),将已释放的virtio_vsock_sock
对象替换为msg_msg
对象,从而绕过CONFIG_RANDOM_KMALLOC_CACHES
等内核硬化(kernel hardening)特性。此外,“释放后使用” 写入操作的执行速度过快,曾导致该攻击难以稳定生效。
亚历山大表示,为解决这一问题,研究人员采用了一种技术:通过timerfd
和epoll
实例向负责处理的内核工作线程(kernel worker)发送大量通知,使其负载过载、运行速度减慢,从而显著扩大竞态条件的时间窗口。
研究人员利用上述msg_msg
对象破坏技术,实现了越界读取(out-of-bounds read),泄露包含进程凭证(struct cred
)地址在内的内核内存数据。
借助这些信息,研究人员对pipe_buffer
对象发起第二次 “释放后使用” 攻击,获得了任意地址的读写权限。
最终,攻击者可直接修改进程凭证,将权限提升至 root 级别,完成 “仅数据攻击”(data-only attack,指不修改内核代码仅通过篡改数据实现攻击的方式)。
整个漏洞利用开发过程通过kernel-hack-drill
(一种定制化测试环境)进行优化 —— 该环境可在受控条件下测试内核漏洞利用原语。
版权声明·<<<---红客联盟--->>>>·免责声明
1. 本版块文章内容及资料部分来源于网络,不代表本站观点,不对其真实性负责,也不构成任何建议。
2. 部分内容由网友自主投稿、编辑整理上传,本站仅提供交流平台,不为该类内容的版权负责。
3. 本版块提供的信息仅作参考,不保证信息的准确性、有效性、及时性和完整性。
4. 若您发现本版块有侵犯您知识产权的内容,请及时与我们联系,我们会尽快修改或删除。
5. 使用者违规、不可抗力(如黑客攻击)或第三方擅自转载引发的争议,联盟不承担责任。
6. 联盟可修订本声明,官网发布即生效,继续使用视为接受新条款。
联系我们:admin@chnhonker.com