更新时间:2024-04-15 16:08:12作者:佚名
原来的
一、背景
近日,纽约大学阿布扎比分校安全研究员Mathy发现了一系列影响巨大的Wi-Fi漏洞,统称为计算机、智能手机、校园网络、家庭路由器、智能家居设备、智能汽车、物联网等。 )。
其中影响大多数 WiFi 设备的三个漏洞是 Wi-Fi 802.11 标准的帧聚合和帧碎片功能的设计缺陷,而其他漏洞是 Wi-Fi 产品中的编程错误。
只要黑客处于目标设备的 Wi-Fi 范围内阿布扎比大学,他或她就可以利用漏洞窃取敏感用户数据并执行恶意代码,甚至接管整个设备。
启明星辰ADLab立即对该漏洞进行分析并提出相应的缓解建议。 由于WiFi产品的协议栈,包含了Soft Mac和Full Mac的多种实现方案。 该系列漏洞不仅影响操作系统内核和WiFi驱动,还影响WiFi SOC芯片,因此该漏洞的影响长期存在。 请及时关注并更新设备厂商的安全更新。
补救和缓解建议
漏洞和具体影响列表
与 Wi-Fi 设计缺陷相关的漏洞包括:
CVE编号 漏洞介绍 漏洞影响
CVE-2020-24588
针对A-MSDU聚合的注入攻击(无效的SPP A-MSDU保护机制)
攻击者可以插入恶意帧并篡改数据包
CVE-2020-24587
混合密钥攻击(重新组织使用不同密钥加密的分片)
窃取用户敏感数据
CVE-2020-24586
分片缓存攻击(重新连接网络时分片缓存未清除)
窃取敏感用户数据或篡改任意数据包
与 Wi-Fi 实施相关的漏洞包括:
CVE编号 漏洞介绍 漏洞影响
CVE-2020-26145
在加密通信中,未加密的广播片段仍被视为完整帧
与网络配置无关,插入任意帧来篡改数据包
CVE-2020-26144
在加密通信中,未加密的A-MSDU帧仍然被接受
CVE-2020-26140
在受保护的网络中接受未加密的数据帧
CVE-2020-26143
在受保护的网络中接受分段的未加密数据帧
CVE-2020-26139
转发 EAPOL 帧时不验证发送者的身份
结合CVE-2020-24588,任何攻击者都可以插入恶意帧并篡改数据包。
CVE-2020-26146
数据包编号不连续的加密片段仍会被重组。
窃取敏感用户数据
CVE-2020-26147
分片的重组不区分加密和未加密的分片
攻击者可以插入恶意帧并篡改数据包
CVE-2020-26142
将碎片帧处理为完整帧
CVE-2020-26141
不验证分段帧的 TKIP MIC
通过这一系列漏洞,攻击者可以完全获取用户的敏感信息或直接控制智能设备,例如控制智能电源插座,甚至直接接管网络中存在漏洞的计算机阿布扎比大学,见下文参考文献[2]。
2. 漏洞分析
我们选择了所有设备中常见的三个设计漏洞CVE-2020-24586、CVE-2020-24587和CVE-2020-24588进行分析。 由于CVE-2020-24588漏洞影响较大,因此我们重点介绍CVE-2020-24588。
1. 技术背景
由于802.11 MAC层协议消耗了大量的链路维护开销,为了提高MAC层的效率,802.11n引入了帧聚合技术。 消息帧聚合技术包括:A-MSDU(MAC Data Unit )和A-MSDU。 -MPDU(MAC 协议数据单元聚合)。
A-MSDU 允许聚合具有相同目的地和应用的多个 A-MSDU 子帧。 聚合子帧仅具有一个公共 MAC 帧头。 当多个子帧聚合在一起时,减少了发送每个802.11消息所需的PLCP、PLCP和802.11 MAC头的开销,并减少了响应帧的数量,从而提高了无线传输效率。 A-MSDU消息帧聚合技术是802.11n协议的强制要求,所有支持802.11n协议的设备都必须支持它。
下图说明了802.11协议栈中发送方和接收方如何处理A-MSDU数据。
图1. 802.11协议数据处理流程
在802.11协议栈中,发送方通过数据链路层的LLC子层为来自3-7层的网络数据添加LLC/SNAP头,并封装成MSDU(MAC Data Unit)。 MSDU添加DA、SA、长度后,封装成A-MSDU子帧。 多个A-MSDU子帧被封装在MAC子层顶层的A-MSDU中。 帧数据经过MAC子层后,添加MAC头和帧尾封装成802.11数据帧(MPDU),MPDU/PSDU通过物理层添加PLCP(PLCP前导码)和PLCP(PHY头),无线侧最终通过射频端口将二进制流发送至接收端。
接收端通过反向路径对802.11数据帧进行拆解,最终得到发送端的3-7层网络数据。
A-MSDU的协议数据组成如图2所示,我们从上到下进行解释:
(1)MSDU由LCC/SNAP头、IP头、TCP/UDP头和协议数据Data组成。
(2)MSDU加上DA(目的地址)、SA(源地址)、后续数据长度和(四字节对齐)形成MSDU子帧。
(3)多个MSDU子帧构成802.11帧的A-MSDU域。
(4)802.11数据帧使用QOS的A-MSDU比特来指示这是一个包含A-MSDU字段的数据帧。
图2. A-MSDU数据组成图
在802.11协议中,普通802.11数据帧的结构与A-MSDU数据帧相同,只是QOS字段中的A-MSDU位为1,表示该数据帧是A-MSDU。 MSDU 数据帧。 A-MSDU位为0,表明这是一个正常的802.11数据帧。
在802.11协议中,WEP和CCMP仅保护802.11MAC的净荷。 至于802.11帧头和下层协议头则保持不变。 也就是说,802.11协议中数据帧中的QOS是不加密的,这就为攻击者提供了攻击的入口。
图 3. CCMP 加密的 802.11 数据帧格式
为了防止中间人攻击,IEEE于2011年设计了SPPA-MSDU机制来保护A-MSDU位和A-MSDU。 SPP A-MSDU通过在RSN域中添加SPPA-MSDU和SPPA-MSDU来指示是否支持SPPA-MSDU机制以及是否采用SPPA-MSDU机制。
图 4. RSN 域数据格式
2. 针对 A-MSDU 聚合的帧注入攻击 (CVE-2020-24588)
虽然有SPP A-MSDU机制来保护A-MSDU位不被篡改,但在实际测试中,几乎所有设备都没有遵循SPP A-MSDU机制,这使得中间人攻击成为可能。
我们假设发送方发送的是一个普通的802.11数据帧,里面封装的是一个普通的TCP数据包,dst=“192.168.1.2”,src=“1.2.3.4”,id=34
图 5. 原始 802.11 数据帧
由于偏移量为0x18的QOS(0200)不受保护,攻击者可以将QOS字段中的A-MSDU翻转为1,使得QOS值为8200,同时在末尾注入恶意的A-MSDU子帧2帧(如下图)(图中红线标注),最后发送到接收端。
图 6. 被篡改的 802.11A-MSDU 数据帧
由于QOS域中的A-MSDU翻转为1,所以接收端接收到数据帧时,会按照A-MSDU格式拆解里面的数据。 数据被识别为两个A-MSDU子帧。 A-MSDU子帧1中的数据是原始的MSDU数据,因此会被协议栈丢弃,但第二子帧会被正确解析和处理。 在上面的例子中,第二个子帧将被识别为ICMP ping数据包,并且接收端将向发送端回复ICMP echo Reply。
下图说明了中间人帧注入过程:
图 7. 中间人帧注入过程
(1)STA(终端)与AP(热点/无线路由器)通道A(如通道6),建立关联
(2)MITM采用多通道中间人技术,使STA认为AP已经切换到通道B(如通道11)。
(3) STA在通道11上向MITM发送加密的Wifi普通数据帧。
(4)MITM将接收到的Wifi帧的QOS字段的A-MSDU标志设置为1,并插入被篡改的A-MSDU数据。 将普通Wifi帧更改为A-MSDU帧,注入ICMP请求数据包,并通过通道6发送到AP。
(5)AP接收A-MSDU数据帧。 AP将A-MSDU拆解并分成多个A-MSDU子帧。 第一个 A-MSDU 子帧是非法数据包,将被丢弃,但后续的 MSDU 子帧 帧将被系统正常处理。 AP 将使用收到的 ICMP Echo 响应来回复 MITM。
(6) MITM收到AP的回复后,将收到的WIFI帧转发给STA,以便STA收到AP的ICMP回复。
修复 CVE-2020-24588
今年3月发布了相应补丁,修复了一系列漏洞。 5月11日,Linux还发布了一系列漏洞补丁[6]。 Linux 针对 CVE-2020-24588 的修复如下:
--- net //util.c | 3 +++ 1 个文件,3 (+) diff --git a/net//util.cb/net//util. .. --- a/net//util .c+++ b/net//util.c@@ -771,6 +771,9 @@ void 023s( *skb, *list, = skb->len - ; if ( > ) 转到清除;+/* A- MSDU */+if ((eth., ))+转到清除; 最后 =