安全研究人员在Windows的一个受保护部分运行了自己的代码,该部分即使在计算机的其余部分被接管时也应保持封闭。
该保护区域是一个VBS保护区,操作系统使用它来保护秘密,是一个隔离的内存片段,而他们突破的保护区处理Windows反钓鱼功能的密码。
这项工作是在实验室进行的概念验证,尚未在真实攻击中出现,微软在其2026年9月8日的更新中修复了该漏洞。
该漏洞被跟踪为CVE-2026-83498。微软将其评估为特权提升问题,严重,CVSS评分为7.8,并表示尚未被利用,修复之前并未公开。微软还表示它在内部发现了相同的问题。安全公司Doyensec的研究于10月13日发布,距离补丁发布已超过一个月。
VBS保护区是一个签名库,普通Windows程序加载后无法读取或更改。一旦运行,Windows虚拟机监控程序将保护区的内存保存在一个更受信任的世界中,称为VTL1或隔离用户模式,普通代码在正常世界VTL0中无法到达,微软表示。
该设计旨在保护内部内容,即使攻击者已经接管了正常内核或以SYSTEM身份运行。在该世界中运行攻击者选择的代码使得这项研究显得特别重要。
Doyensec攻击的保护区是SFAPE.dll,这是Microsoft Defender SmartScreen中增强钓鱼保护的组件。该功能监视您输入或粘贴的文本,并在您将Windows登录密码输入不安全的地方(例如记事本或钓鱼页面)时发出警告。
为了在不暴露密码的情况下做到这一点,Windows在登录时拦截密码并以哈希形式存储在保护区内,以便后续输入可以与之进行检查。在Windows 11系统中,加载该保护区的程序是lsass.exe,该进程处理登录凭据并以SYSTEM身份运行。
该攻击无法远程进行。它需要一款已经在机器上运行的程序来加载和调用保护区;对于SFAPE来说,就是LSASS。微软自己的评级也表明:攻击向量是本地的,攻击者需要低级别的访问权限,并且不需要用户的帮助。简而言之,这是一种已经占据立足点的代码进入其旁边更受信任的世界的方法,而不是从外部进入的方法。
Doyensec从一个小错误构建了攻击,并逐步扩大。第二次调用保护区的Initialize函数会使其向调用程序控制的地址写入一个固定的四字节错误值,这次它跳过了第一次调用执行的地址检查。
Doyensec明确表示,仅此一项是脆弱的,称将其称为任意写入“将是一个巨大的夸大”。不过,针对正确的位置,这一次写入会破坏保护区用来区分其自身内存和主机内存的值,因此其安全检查停止工作。从那里,另一个函数中的时序漏洞触发了一个受控的清除。该清除重定向了保护区查找存储对象的方式,结果的读写让研究人员替换了决定保护区可以运行哪些代码的表。
结果是攻击者选择的代码在保护区内运行。这项工作打破了保护区的隔离;并未显示用户的密码被读取或窃取,微软的公告将影响描述为来自保护区的数据泄漏或内部代码执行。
微软在2026年9月8日的累积更新KB5124008中修复了该漏洞,适用于Windows 11版本24H2和25H2。Doyensec比较了旧文件和新文件,发现修补后的保护区现在在第一次写入之前检查地址,并收紧了时序漏洞所依赖的函数。
该更新还提供了一项新政策,防止旧的易受攻击保护区加载,因此修补后的系统无法运行它。没有单独的解决方法;安装更新就是行动。
一个漏洞在此修复后依然存在。Windows没有针对易受攻击保护区的通用黑名单,就像它对易受攻击驱动程序所保持的那样,而9月的政策仅阻止了旧的SFAPE文件。Doyensec表示,具有类似读写漏洞的较旧Microsoft Edge保护区CVE-2023-36880仍然被允许加载。
这是否是一个故意的选择或疏忽尚不清楚。这一点很重要,因为加载一个签名但有缺陷的保护区是一个已知的技巧,有时被称为“自带易受攻击的保护区”,早期来自Akamai和Outflank的研究使用它来隐藏代码和数据以避开安全工具。阻止一个有缺陷的保护区而允许另一个可加载,留下了这个技巧的可用性。
觉得这篇文章有趣吗?请在Google News、Twitter和LinkedIn上关注我们,阅读更多我们发布的独家内容。