在 24H2 中利用 NT 内核:旧代码中的新漏洞及针对 KASLR 的侧信道

主要观点

  • 介绍 Windows 11 24H2 中发现的内核漏洞及利用过程,包括绕过新的内核 ASLR(KASLR)。
  • 详细阐述两个旧代码中的新漏洞:CVE-2024-26218 和 CVE-2024-21345,以及它们如何导致栈缓冲区溢出和任意写。
  • 讨论 24H2 中的 KASLR 变化及新的绕过技术(EntryBleed 和预取)。
  • 展示利用漏洞提升权限的过程,包括构建内核读取、令牌交换等。
  • 强调缺乏源代码和编译器导致难以确切知道漏洞引入原因,以及对 KASLR 的看法。

关键信息

  • 24H2 通过 Windows Insider Program 公开预览,文中漏洞在 NT 内核的 syscalls 中。
  • 发现两个 double-fetches 导致的漏洞,一个导致栈缓冲区溢出,一个导致任意写。
  • 24H2 中 KASLR 变化,经典绕过方法不可用,引入 EntryBleed 技术确定内核布局。
  • 利用漏洞的过程:构建内核读取 -> 令牌交换提升权限。

重要细节

  • 新的内存复制函数RtlCopyVolatileMemory表明 24H2 中将用户模式内存视为易失性。
  • CVE-2024-26218 中PspBuildCreateProcessContext处理属性时的 double-fetch 导致栈缓冲区溢出。
  • CVE-2024-21345 中NtQueryInformationThread处理ThreadTebInformation时的 double-fetch 导致任意写。
  • EntryBleed 通过预取指令利用用户模式页表中的 syscall 处理程序地址确定内核地址。
  • 在 Windows 11 11 中禁用 KVA 阴影削弱了内核内存与用户模式的隔离。
  • 利用漏洞的完整过程包括构建读取 primitive、令牌交换等步骤,最终获得 SYSTEM 权限。
阅读 62
0 条评论