[CVE-2025-38001] 使用 0 日漏洞利用所有 Google kernelCTF 实例和 Debian 12:一场 RBTree 家族的闹剧(第一部分:长期支持和通用操作系统)

  • 主要观点:介绍了利用 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文件设置当前任务的凭据为零,实现系统权限获取。

整体而言,文章详细阐述了一个复杂的内核漏洞利用过程,涉及多个内核函数和数据结构的交互,展示了内核漏洞研究和利用的技术细节。

阅读 73
0 条评论