- 主要观点:介绍了利用 Linux 内核中的 HFSC 队列调度中的 Use-After-Free 漏洞(CVE-2025-38001),通过页面级数据攻击在 LTS、COS 和 Debian 12 上成功获取奖励,详细阐述了漏洞产生的原因、利用过程及相关代码分析。
关键信息:
- 漏洞存在于 Linux 网络数据包调度的 HFSC 队列调度中,当与 NETEM 一起使用且启用 NETEM 数据包复制时,会导致 HFSC 合格树中的双类插入,形成 RBTree 循环,引发无限循环,通过添加 TBF 可避免无限循环并触发 Use-After-Free。
- 利用页向量(pgv)和 RBTree 指针复制原语,通过一系列操作覆盖和复制页指针,实现页面 UAF 并获取系统权限。
- 团队协作发现并利用该漏洞,包括 William Liu、Timothy Herchen、Bryce Casaje、Larry Yuan 和 Max Cai 等,报告给
security[@]kernel.org
,漏洞已被修复并分配 CVE 编号。
重要细节:
- 漏洞触发过程:通过特定的网络流量控制配置,如
tc
命令设置的队列规则,触发 HFSC 类的双插入,导致hfsc_dequeue()
中的无限循环,再通过添加 TBF 避免无限循环并释放类,从而触发 Use-After-Free。 - 页向量相关操作:
pgv
用于在内核空间中管理页面,通过alloc_pg_vec()
分配,packet_mmap()
映射到用户空间,free_pg_vec()
释放。利用页向量的特性,通过覆盖和篡改页指针,实现页面 UAF。 - RBTree 指针复制原语:通过类型混淆获取 RBNode 的控制,利用
rb_node
结构中的指针关系,经过一系列 RBTree 插入、删除和更新操作,实现页指针的复制。具体包括触发双插入、插入新类、伪造恶意 grandparent 节点等步骤。 - 利用过程总结:经过一系列复杂的内核操作,如触发和利用漏洞、覆盖页指针、触发页面 UAF 等,最终通过
filp
缓存和signalfd
文件设置当前任务的凭据为零,实现系统权限获取。
- 漏洞触发过程:通过特定的网络流量控制配置,如
整体而言,文章详细阐述了一个复杂的内核漏洞利用过程,涉及多个内核函数和数据结构的交互,展示了内核漏洞研究和利用的技术细节。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。