微软最新WiFi远程代码执行漏洞(CVE-2024-30078)探究
字数 1571 2025-08-24 20:49:22
微软WiFi驱动远程代码执行漏洞(CVE-2024-30078)技术分析与研究
漏洞概述
CVE-2024-30078是微软Windows系统中nwifi.sys驱动模块存在的一个堆越界写漏洞,影响使用传统NDIS驱动模型的无线网卡。攻击者可以通过构造特殊的WiFi数据包,在受害者连接恶意WiFi时触发漏洞,可能导致远程代码执行。
漏洞背景
- 漏洞发现者:赛博昆仑研究员@XiaoWei___
- 灵感来源:2023年Black Hat会议上古河关于Windows底层网络协议处理的议题
- 补丁发布时间:2024年6月微软安全更新
- 漏洞类型:堆越界写
- 影响组件:nwifi.sys(传统NDIS驱动模型)
技术分析
漏洞定位
通过对比补丁前后的nwifi.sys驱动文件,发现Dot11Translate80211ToEthernetNdisPacket函数被修改,增加了对数据包长度的额外检查:
if ( total_len < 80211_header_len + 12 ) // 新增的检查
return NDIS_STATUS_INVALID_PACKET;
漏洞触发条件
- 数据包必须是802.11数据帧(Type值为10)
- LLC(Logical-Link Control)层的Type字段值为0x81(表示VLAN-tagged frame)
- 数据包总长度恰好满足802.11头+8字节LLC,但不足802.11头+12字节
漏洞原理
-
正常VLAN帧处理流程:
- 802.11头(可变长度)
- 8字节LLC(其中Type=0x81表示VLAN)
- 4字节802.1Q VLAN头
- 实际数据
-
漏洞触发流程:
- 攻击者构造特殊数据包:802.11头 + 8字节LLC(Type=0x81)
- 驱动误认为有12字节LLC(8+4)
- 在转换802.11到以太网帧时,会越界写入2个字节(发送端MAC地址的后两位)
-
关键代码行为:
- 未打补丁版本只检查
total_len >= 80211_header_len+8 - 实际会处理12字节数据(8字节LLC + 4字节预期VLAN头)
- 导致在原buffer末尾越界写2个可控字节
- 未打补丁版本只检查
动态调试发现
-
数据包结构:
[802.11 Header][LLC(8字节)][...]其中LLC的Type字段:
- 0x0800: IPv4
- 0x86DD: IPv6
- 0x8100: VLAN(漏洞触发点)
-
越界写位置:
- 覆盖原buffer中802.11头结尾的6字节和LLC开头的6字节
- 在VLAN情况下,会额外偏移4字节,导致越界写2字节
利用场景与限制
可能的攻击场景
-
恶意AP模式:
- 攻击者设置恶意WiFi热点
- 诱导受害者连接该WiFi
- 发送特制数据包触发漏洞
-
同一网络攻击:
- 攻击者和受害者连接同一WiFi
- 攻击者发送特制数据包
利用限制
-
必要条件:
- 受害者必须主动连接恶意WiFi
- 不能仅通过开启WiFi功能就触发
- 需要传统NDIS驱动模型的无线网卡
-
利用难度:
- 仅越界写2个可控字节
- 需要精确的堆布局控制
- 实际环境中大量数据包交互会增加利用难度
-
驱动模型限制:
- 仅影响使用nwifi.sys的传统NDIS驱动
- 使用wdiwifi.sys的WDI驱动模型不受影响
缓解措施
- 及时安装微软2024年6月及以后的安全更新
- 避免连接不可信的WiFi网络
- 使用支持WDI驱动模型的无线网卡
- 禁用不必要的无线网络接口
研究工具与方法
-
静态分析工具:
- IDA Pro反汇编分析
- BinDiff补丁比对
-
动态调试环境:
- 双机内核调试(VMware + WinDbg)
- USB无线网卡直通
- Host-only网络连接
-
数据包分析:
- Wireshark协议分析
- 手动构造测试数据包
总结
CVE-2024-30078是一个需要近源条件的WiFi驱动漏洞,虽然存在RCE可能性,但实际利用有多重限制。该漏洞的研究展示了Windows网络协议栈处理中的边界条件问题,以及近源攻击的潜在威胁。对于安全研究人员,此案例也提供了分析驱动漏洞的完整方法论。