漏洞组装工厂:AFD驱动中的Windows内核漏洞挖掘方法论

admin 2026-08-27 05:03:53 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档介绍了BlackHatUSA2026上提出的漏洞组装方法论,针对Windows内核AFD驱动。通过跨层组合视角分析AFD与底层传输驱动的交互,发现了30多个安全漏洞,包括逻辑提权链和沙箱逃逸。核心发现是跨组件边界上的信任传递导致漏洞可被反复组装,建议安全研究人员关注此类跨层攻击面。 综合评分: 90 文章分类: 漏洞分析,红队,内网渗透,安全工具,实战经验


漏洞组装工厂:AFD 驱动中的 Windows 内核漏洞挖掘方法论

原创

AIxSec69 AIxSec69

AIxSec69

2026年8月27日 00:02 美国

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

漏洞组装工厂:AFD 驱动中的 Windows 内核漏洞挖掘方法论

来源:Black Hat USA 2026 Briefings, Session #52366

标题:Vulnerabilities Assembled! The Vulnerability Factory Inside the Windows Kernel

作者:Angelboy (@scwuaptx) — DEVCORE 高级安全研究员,MSRC 2024/2025/2026 MVR Top 100,Pwn2Own Toronto 2022 Master of Pwn

适合读者:Windows 安全研究人员、漏洞分析工程师、红队成员、内核开发者

简介:演讲者提出了一种”漏洞组装”方法论,通过跨层组合视角分析 AFD.sys,发现 30+ 个安全漏洞,包括从普通用户到 SYSTEM 的逻辑型提权链和 AppContainer 沙箱逃逸。

◆ ◆ ◆

一、一个反复出现的问题

2024 年 8 月,微软修复了 CVE-2024-38193,这是一个被 Lazarus Group 在野利用的 Windows 内核提权漏洞,影响 AFD.sys(Ancillary Function Driver for Winsock)中的 AfdConnect 函数。六个月后,补丁被绕过——CVE-2025-21418 通过 AfdAccept 函数触发了相同的根本原因。又过了三个月,第二个补丁再次被绕过——CVE-2025-32709 通过 AfdSuperAccept 触发了同样的问题。

同一组件、同一根本原因、三次独立 CVE、两次补丁绕过。这在经过多年安全加固的 Windows 内核组件中并不常见。

为什么会这样?

Angelboy 在 Black Hat USA 2026 的演讲中给出了一个系统性的回答:问题不在于单点漏洞,而在于 AFD 的攻击面结构本身就存在一种可以被反复”组装”出新漏洞的模式。他称之为漏洞组装工厂(The Vulnerability Factory)

二、AFD 是什么

AFD(Ancillary Function Driver for Winsock)是 Windows 内核中的一个关键驱动(afd.sys),它是 Winsock API 的内核模式入口。简单来说:

  • 当应用程序调用 socket()bind()connect() 等 Winsock API 时,请求通过 ws2\_32.dll 进入内核,由 AFD 接收并转换为 I/O 请求

  • AFD 再将这些 I/O 请求分发给底层传输驱动(如 tcpip.sys 处理 TCP/UDP、afunix.sys 处理 Unix 域套接字、hvsocket.sys 处理 Hyper-V 套接字)

  • 在整个网络栈中,AFD 处于用户态 API 和内核态网络协议驱动之间的桥梁位置

▲ AFD 架构(TLI 传输模式):应用 → AFD.sys → 底层传输驱动 tcpip / afunix / hvsocket,对应 AF_INET / AF_UNIX / AF_HYPERV(来源:Black Hat USA 2026 Slides)

AFD 支持三种传输模式:TLI(Transport Layer Interface,仅指定地址族/套接字类型/协议)、Hybrid(指定传输路径如 \Device\Tcp)、TDI(Transport Driver Interface,通过扩展属性指定任意传输设备路径)。

TDI 模式是本次研究的重点。在这种模式下,用户可以通过创建套接字时的扩展属性,直接指定底层的传输设备路径——这个设备可以是任何有效的内核设备名称。

三、在野漏洞的历史线索

演讲者首先梳理了近年来 Windows 内核中在野漏洞的分布情况:

▲ Windows 内核在野漏洞分布:Win32k、CLFS、CFF 与 AFD 是最集中的组件(来源:Black Hat USA 2026 Slides)

▲ 第一个在野 AFD 漏洞 CVE-2024-38193:被 Lazarus 利用,AfdConnect 缺失校验导致 UAF,2024 年 8 月修补(来源:Black Hat USA 2026 Slides)

从图表中可以清楚看到,Win32k、Common Log File System(CLFS)、Cloud Files Filter(CFF)和 AFD 是在野利用最集中的几个内核组件。其中 AFD 在 2024-2025 年一年内出现了三个在野利用漏洞——CVE-2024-38193、CVE-2025-21418 和 CVE-2025-32709。

这三个漏洞有相同的根源:AFD 的连接/接受操作中对端点状态的验证缺失,导致了 UAF(Use After Free)条件。第一个漏洞通过 AfdConnect 触发,补丁修复了 AfdConnect 路径的验证;攻击者随后发现 AfdAccept 路径同样的验证缺失——第二个 CVE;第二个补丁修复了 AfdAccept;攻击者又发现了 AfdSuperAccept——第三个 CVE。

这一连串的补丁绕过揭示了 AFD 的一个结构性问题:一个套接字操作可以通过多个不同路径进入内核,而每个路径由不同的 IOCTL handler 处理。由于缺乏统一的校验层次,补丁往往只覆盖了被报告的路径,而为其他路径留下了相同的弱点。

四、漏洞组装方法论

演讲的核心是一套系统性的漏洞发现方法论,演讲者将其概括为三个步骤:

▲ 组装攻击面:AFD 可到达的底层传输驱动可以是非预期的(??? .sys)(来源:Black Hat USA 2026 Slides)

步骤一:理解攻击面

AFD 的攻击面由大量 IOCTL handler 组成——AfdBindAfdConnectAfdAcceptAfdSuperAcceptAfdReceiveAfdTransmitFileAfdQueryHandles 等等。每个 handler 对应一个用户态可调用的套接字操作。传统的研究思路是逐 handler 审计代码,寻找内存损坏或逻辑错误。

但 Angelboy 发现了一个关键盲区:这些 handler 需要与底层传输驱动交互,而底层驱动往往假设来自 AFD 的输入已经被验证过了

步骤二:组装攻击面

演讲者演示了一个惊人的技术——传输层组合(Transport Composition)。通过枚举系统中所有可以被 AFD 的 TDI 模式接受的设备,演讲者发现了大量非预期的传输驱动,包括:

  • tdx.sys(TDI 扩展层)

  • NetBT.sys(NetBIOS over TCP/IP 传输)

  • ndis.sys(网络驱动接口规范核心驱动)

  • rfcomm.sys(蓝牙 RFCOMM 驱动)

这些驱动从未被设计为接受来自用户态通过 AFD 间接发起的调用。它们缺乏对输入的严格校验,导致了一系列漏洞:

  • tdx.sys:CVE-2025-49658、CVE-2025-49659

  • tcpip.sys:CVE-2025-54093

  • rfcomm.sys:CVE-2025-59513

  • netbt.sys:CVE-2025-55230、CVE-2025-47996

  • ndis.sys:CVE-2025-55679、CVE-2025-55339

步骤三:组装漏洞

传输层组合只是第一步。更危险的情况出现在利用 Windows 对象管理器(Object Manager)的符号链接机制进行路径重定向时。演讲者展示了这样的攻击链:

  1. 创建一个使用 NDIS 作为传输驱动的 AFD 套接字。NDIS 在套接字创建时会将 TdiServiceFlags 设置为 0(既不设置 Is\_Bind 也不设置 Is\_Connect 等标志位),这意味着它不设置 TDI\_SERVICE\_FORCE\_ACCESS\_CHECK 标志

  2. 在套接字绑定阶段,通过符号链接将传输设备路径从 \Device\ndis 重定向到任意目标设备(如 \Device\NetBT\Device\MountPointManager)。

  3. 调用 AfdQueryHandles IOCTL。这个函数将 Endpoint->AddressFileObject 转换为用户句柄,调用 ObOpenObjectByPointer 并请求 MAXIMUM\_ALLOWED 访问权限。关键在于 AccessMode 参数——如果 TdiServiceFlags 中未设置访问检查标志,AccessMode 将是 KernelMode,从而绕过所有安全检查,返回一个拥有完整访问权限的用户态句柄。

  4. 持有 Mount Manager 的全权句柄后,攻击者可以执行 IOCTL\_MOUNTMGR\_CREATE\_POINT 等特权操作,将系统目录重定向到攻击者控制的路径,最终通过 Windows Media Sharing 服务的 DLL 劫持实现从 Network Service 到 SYSTEM 的提权。

这个利用链不涉及任何内存损坏,不涉及竞态条件,是一个 100% 成功的纯逻辑漏洞利用。而且,存在漏洞的逻辑在代码库中存在了近 20 年。

五、文件组合链

演讲者还展示了另一条攻击路径(CVE-2026-25176):使用类似的符号链接重定向技术,将传输设备路径从 \Device\ndis 重定向到一个文件系统路径(如 \??\C:\Windows\System32\...)。在套接字连接阶段,AFD 将通过 IoCreateFile 调用目标,由于同样缺失 IO\_FORCE\_ACCESS\_CHECK 标志,低权限用户可以在受保护的目录中创建任意文件。

通过劫持 Microsoft Edge Elevation Service 加载的 ntasn1.dll,攻击者可以从任意文件创建直接升级到 SYSTEM 权限。

▲ CVE-2026-25176:通过符号链接将传输设备路径重定向到文件系统路径,触发缺少访问检查的 IoCreateFile(来源:Black Hat USA 2026 Slides)

微软在 2026 年的补丁中分别修复了 AfdQueryHandlesAfdCreateConnection 的访问检查缺失问题——但演讲者指出,新的绕过(CVE-2026-26182、CVE-2026-34335 等)已经被发现,并在演讲中以一个新的 CVE 列表作为结尾。

六、超越传统攻击面

演讲的最后部分探讨了 AFD 在 LPAC(Less Privileged AppContainer)环境下的沙箱逃逸可能性。LPAC 限制了 TCP/UDP 连接、符号链接访问和大多数设备的访问——但在 TLI 传输模式下,AF_UNIX(Unix 域套接字)和 AF_HYPERV(Hyper-V 套接字)仍然可以从 LPAC 中访问。演讲者已经在此基础上发现了一系列新的漏洞(CVE-2026-26168、CVE-2026-26177、CVE-2026-45601 等)。

▲ LPAC 环境下 TLI 传输模式:AF_UNIX 与 AF_HYPERV 套接字仍可从 LPAC 访问(来源:Black Hat USA 2026 Slides)

七、启示与思考

Angelboy 的这次演讲从表面上看是一个关于特定 Windows 内核驱动的漏洞挖掘案例,但它传递了更深层的方法论启示:

1. 跨层组合视角:单独审视 AFD 本身可能看不到太多问题,但将 AFD 与底层传输驱动、对象管理器、符号链接机制组合起来看,攻击面急剧扩大。驱动不是孤岛——它们之间的接口和假设就是漏洞藏身之处。

2. 过度信任上游输入:底层传输驱动默认认为 AFD 传来的请求已经经过校验,这种”信任传递”是许多漏洞的根源。跨层边界上的每一条假设都值得重新审视。

3. 攻击面不会自然收敛:经过多年补丁,AFD 看似应该变得更安全,但新功能带来了新的 IOCTL handler 和新的代码路径。安全加固的速度如果不跟上功能扩展的速度,攻击面就会增长。

4. 逻辑漏洞的价值:本次发现的利用链不依赖内存损坏,具有 100% 的可靠性和跨版本稳定性。对防御方而言,逻辑漏洞更难通过通用缓解措施(如 CFG、ACG)来拦截,值得给予更多关注。

对于安全研究人员而言,这套”漏洞组装”方法论也适用于其他内核驱动。只要有跨组件交互、有隐式的信任关系、有多条代码路径实现类似功能——就可能有漏洞等待被组装。

◆ ◆ ◆

原文链接:https://www.blackhat.com/us-26/briefings/schedule/#vulnerabilities-assembled-the-vulnerability-factory-inside-the-windows-kernel-52366


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:AIxSec69 AIxSec69 AIxSec69《漏洞组装工厂:AFD 驱动中的 Windows 内核漏洞挖掘方法论》

评论:0   参与:  0