Hacker News 中文摘要

RSS订阅

NT操作系统内核信息泄露漏洞 -- NT OS Kernel Information Disclosure Vulnerability

文章摘要

NT OS内核存在信息泄露漏洞CVE-2025-53136,该漏洞可能导致敏感数据泄露。文章详细分析了漏洞的发现过程、影响范围以及可能的利用方式,并回顾了之前相关漏洞CVE-2024-43511的修复情况。

文章总结

NT OS内核信息泄露漏洞 – CVE-2025-53136

发布日期:2025年9月11日

主要内容

微软在Windows 11/Windows Server 2022 24H2版本中通过抑制内核基地址的泄露,有效阻止了许多传统的内核信息泄露问题,例如使用NtQuerySystemInformation()函数(特别是SystemModuleInformation类)时,除非调用者拥有SeDebugPrivilege权限(通常为管理员进程),否则不会泄露内核基地址。这一变化使得绕过KASLR(内核地址空间布局随机化)变得更加困难,从而增加了漏洞利用的难度。

然而,在对CVE-2024-43511的补丁进行分析时,发现微软在修复过程中引入了一个新的内核地址泄露漏洞。该漏洞需要通过竞争条件来读取内核地址,但实现起来相对容易。它为任何令牌句柄提供了强大的内核地址泄露能力,可以与其他漏洞结合,从而在最新版本的系统上实现完整的漏洞利用。

漏洞详情

CVE-2024-43511补丁回顾

2024年10月,微软修复了Windows内核中的一个TOCTOU(检查时间与使用时间)竞争条件漏洞,即CVE-2024-43511。修复措施是在向RtlSidHashInitialize()函数传递参数时,从内核指针(TOKEN结构的成员)读取数据,而不是从用户控制的缓冲区中读取。

漏洞发现

在更新后,RtlSidHashInitialize()函数在执行哈希初始化时,其第一个参数是TOKEN结构的指针,第三个参数是用户控制的缓冲区。该函数将第一个参数(指向TOKEN结构的UserAndGroups字段的指针)存储到第三个参数(用户提供的指针)中,随后进行哈希初始化。尽管调用函数会在之后替换用户缓冲区中的指针,但仍存在一个短暂的时间窗口,使得攻击者可以通过竞争条件读取泄露的内核地址。触发该漏洞只需调用NtQuerySystemInformation() API并使用SystemTokenInformation类。

漏洞影响

该漏洞在Windows 24H2及更高版本中尤为有用,因为使用NtQuerySystemInformation()或其他方法泄露内核地址的常见技术已被修复。由于该漏洞位于NT系统调用中,攻击者可以从低完整性级别(Low IL)应用容器(AppContainer)中利用该漏洞。如果与写任意位置(write-what-where)漏洞结合,覆盖TOKEN对象的Privileges字段,将导致完整的本地权限提升(LPE)。

漏洞利用

利用设置

为了利用该漏洞,需要创建两个并发线程:一个线程用于读取特定偏移量,该偏移量将用于在内核地址中存储用户缓冲区;另一个线程执行系统调用,需要多次运行系统调用以获取内核泄露。

可靠性

尽管这是一个竞争条件漏洞,但时间窗口足够宽,可以从用户空间缓冲区读取内核地址。为了提高成功率,可以反复调用NtQuerySystemInformation(),同时持续读取,直到获取泄露的内核地址。读取操作非常可靠,几乎每次运行漏洞利用时都能成功获取泄露的TOKEN

概念验证

在2025年4月的Windows Insider Preview版本中,从低完整性级别应用容器上下文中成功运行了漏洞利用。

结论

补丁分析是提高漏洞发现技能和思维敏锐度的最快方法之一,同时也有助于提升安全编码能力。有时,修复一个函数中的漏洞可能会在其他部分引入新的漏洞。在进行漏洞研究时,建议深入理解补丁的修复方式,并确认补丁是否完全解决了问题,或者是否留下了其他漏洞。从开发者的角度来看,对函数的任何修改都可能影响其他部分,因此在修改代码时应格外小心。在修改函数之前,彻底理解其工作原理至关重要,这有助于避免错误或误用。

披露时间线

  • 4月8日:向供应商报告漏洞。
  • 4月9日:微软确认正在处理该漏洞。
  • 4月22日:微软声称该漏洞与已修复的漏洞重复,并关闭了案例。
  • 4月22日:在X上发布推文抱怨此事,并得到了微软的回应。
  • 4月25日:确认报告为有效漏洞。
  • 4月29日:微软回复称该漏洞在范围内。
  • 8月1日:分配了CVE-2025-53136编号。

评论总结

  1. 对漏洞严重性的质疑

    • Jare表示虽然缺乏专业知识,但知道Win11 24H2存在漏洞,并引用:“This leak primitive is particularly useful for Windows versions 24H2 or later”(这个泄漏原语对Windows 24H2或更高版本特别有用)。
    • KyleBerezin认为这是一个明显的漏洞,并反思自己也曾犯过类似错误:“wow, what an obvious bug. How did Microsoft not catch that?”(哇,这么明显的漏洞,微软怎么没发现?)。
  2. 对历史事件的联想

    • lysace提到2004年的源代码泄露可能长期强化了内核:“Perhaps that full source code leak in 2004 actually helped harden the kernel, long term?”(也许2004年的完整源代码泄露实际上长期强化了内核?)。
    • mkolassa指出修复漏洞的KB5063878与Phison SSD问题相关:“It’s interesting that the KB that patches this on Windows 11 (KB5063878) is the same one that was tied up in all the Phison SSD drama”(有趣的是,修复Windows 11漏洞的KB5063878与Phison SSD问题有关)。
  3. 对KASLR有效性的讨论

    • anematode认为KASLR在x86上已被攻破,即使启用了KPTI:“KASLR is broken anyway, at least on x86, even with KPTI enabled”(KASLR已经被攻破,至少在x86上,即使启用了KPTI)。