FragAttacks误差剖析

宣布时间 2021-05-18

配景


克日,纽约大学阿布扎比分校的清静研究员Mathy Vanhoef发明了一系列影响重大的Wi-Fi误差,这一系列误差被统称为FragAttacks,FragAttacks影响了1997年Wi-Fi手艺降生以来的所有Wi-Fi装备(包括盘算机、智能手机、园区网络、家庭路由器、智能家居装备、智能汽车、物联网等等)。


其中三个误差影响大大都WiFi装备,属于Wi-Fi 802.11标准帧聚合和帧分片功效中的设计缺陷,而其他误差是Wi-Fi产品中的编程过失。


黑客只要在目的装备的Wi-Fi规模内,就能使用FragAttacks误差窃取敏感用户数据并执行恶意代码,甚至可以接受整个装备。


尊龙凯官网入口ADLab第一时间对误差举行了剖析,并提出了响应的缓解建议。由于WiFi产品的协议栈,包括了Soft Mac及Full Mac多种实现计划。FragAttacks系列误差不但保存影响操作系统内核、WiFi驱动,还影响WiFi的SOC芯片,以是误差的影响恒久保存。请实时关注并更新装备供应商的清静更新。


修复及缓解建议


● 实时更新装备供应商宣布的FragAttacks误差清静更新。

● 确保您会见的所有网站和在线服务都启用了清静超文本传输协议HTTPS(好比装置HTTPS Everywhere插件)。

● 例如在Wi-Fi 6(802.11ax)装备中禁用分片,禁用成对重新天生密钥以及禁用动态分片。


误差列表及详细影响


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]。


误差剖析


我们选取了在所有装备普遍保存的CVE-2020-24586、CVE-2020-24587、CVE-2020-24588三个设计误差举行剖析。由于CVE-2020-24588的误差影响较大,我们着重举行先容CVE-2020-24588。 


1、手艺配景

由于802.11MAC层协议泯灭了相当多开销用作链路的维护,为了提高MAC层的效率,802.11n引入帧聚合手艺,报文帧聚合手艺包括:A-MSDU(MAC服务数据单位聚合) 及 A-MPDU(MAC协议数据单位聚合)。


A-MSDU允许对目的地及应用都相同的多个A-MSDU子帧举行聚合,聚合后的多个子帧只有一个配合的MAC帧头,当多个子帧聚合到一起后,从而镌汰了发送每一个802.11报文所需的PLCP Preamble、PLCP Header和802.11MAC头的开销,同时镌汰了应答帧的数目,从而提高无线传输效率。A-MSDU报文帧聚合手艺是802.11n协议的强制要求,所有支持802.11n协议的装备都必需支持。


下图示意了在802.11协议栈中,发送端和吸收端是如那里置A-MSDU数据的。


1.png

图1. 802.11协议数据处置惩罚流程 


在802.11协议栈中,发送端未来自3-7层的网络数据经由数据链路层的LLC子层添加LLC/SNAP头后封装成MSDU(MAC服务数据单位),MSDU经由添加DA、SA、长度及pading后,封装成A-MSDU子帧,在MAC子层的顶层将多个A-MSDU子帧封装成A-MSDU,经MAC子层后,帧数据被添加上MAC头及帧尾封装成802.11数据�。∕PDU),MPDU/PSDU经由物理层添加PLCP Preamble(PLCP前导码)及PLCP Header(PHY头),无线侧最后通过射频口将二进制流发送到吸收端。


吸收端通过相反路径对802.11数据帧举行拆解,最后获得发送端的3-7层的网络数据。


A-MSDU的协议数据组成如图2所示,我们从上到下举行划辩白明:

(1)一个MSDU由LCC/SNAP头、IP头、TCP/UDP头及协议数据Data组成。

(2)MSDU添加DA(目的地址),SA(源地址),后续数据长度及Padding(四字节对齐)组成一个MSDU子帧。

(3)多个MSDU子帧组成一个802.11帧的A-MSDU域。

(4)802.11数据帧通过QOS Control的A-MSDU Present位来体现这是一个包括A-MSDU域的数据帧。


2.png

 图2. A-MSDU数据组成示意


在802.11协议中,一个通俗的802.11数据帧与A-MSDU数据帧的结构是相同的,只是QOS Control域的A-MSDU Preset位 为1,则标示了该数据帧是一个A-MSDU数据帧。A-MSDU Preset位为0,则标示这是通俗802.11数据帧。


在802.11协议中WEP及CCMP只�;�802.11MAC的有用载荷,至于802.11帧头以及下层协议的标头则原封不动,也就是说802.11协议中数据帧中QOS Control并没有加密,这为攻击者提供了攻击入口。


3.png

图3. CCMP加密的802.11数据帧名堂


为避免中心人攻击,IEEE在2011年设计了SPPA-MSDU机制来�;-MSDU Preset位及A-MSDU的Payload。SPP A-MSDU通过在RSN capabilities 域中添加SPP A-MSDU Capable及SPP A-MSDU Required来标示是否支持SPP A-MSDU机制及是否接纳SPP A-MSDU机制。


4.png

图4. RSN Capabilities 域数据名堂


2、针对A-MSDU聚合的帧注入攻击(CVE-2020-24588)


虽然有SPP A-MSDU机制来�;-MSDU Preset位不被改动,可是在现实的测试中,险些所有的装备都不遵照SPP A-MSDU机制,这使得中心人攻击成为可能。


我们假设发送端发送了一个正常的802.11数据帧,这是一个内里封装的是一个通俗TCP包,其dst=“192.168.1.2", src="1.2.3.4", id=34


5.png

图5. 原始的802.11数据帧


由于偏移0x18的QOS Control(0200)不受�;�,攻击者可以将 QOS Control域中的A-MSDU Preset翻转为1,使得QOS Control的值为8200,同时在帧末尾注入恶意的A-MSDU子帧2(如下图的红色线标示),最后发送给吸收端。


6.png

 图6. 改动后的802.11A-MSDU数据帧


由于QOS Control域中的A-MSDU Preset翻转为1,当吸收端吸收到数据帧后,会按A-MSDU名堂来拆解内里的数据。数据被识别成两个A-MSDU子帧。A-MSDU子帧1中的数据是原始的MSDU数据,以是会被协议栈扬弃,但第二个子帧会被准确剖析并处置惩罚。这上面的例子中第二个子帧会被识别成ICMP ping包,吸收端会回复一个ICMP echo Reply给发送端。


视频1. 发送端收到ICMP echo Reply


下图示意了中心人帧注入流程:


7.png

 图7. 中心人帧注入流程 


(1)STA(终端)和AP(热门/无线路由器)信道A(如信道6), 建设关联

(2)MITM使用多信道中心人手艺使得STA以为AP已经切换到信道B(如信道11)。

(3)STA在信道11给 MITM发送加密的Wifi正常数据帧。

(4)MITM将 吸收到的Wifi帧QOS域的A-MSDU Preset标示设为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月Windows宣布了响应的补丁,修复了FragAttacks系列误差,5月11日Linux也宣布了FragAttacks系列误差补丁[6],Linux针对CVE-2020-24588的修复如下:


---

 net/wireless/util.c | 3 +++

 1 file changed, 3 insertions(+)

 

diff --git a/net/wireless/util.c b/net/wireless/util.c

index 39966a873e40..7ec021a610ae 100644

--- a/net/wireless/util.c

+++ b/net/wireless/util.c

@@ -771,6 +771,9 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list,

 remaining = skb->len - offset;

 if (subframe_len > remaining)

 goto purge;

+/* mitigate A-MSDU aggregation injection attacks */

+if (ether_addr_equal(eth.h_dest, rfc1042_header))

+goto purge;

 

 offset += sizeof(struct ethhdr);

 last = remaining <= subframe_len + padding;

--


由于在A-MSDU聚合注入攻击中,需要将通俗加密Wi-Fi帧转换为A-MSDU帧。这意味着第一个A-MSDU子帧的前6字节对应于RFC1042的帧头,liunx内核通过增添判断DA(目的地址)是否和rfc1042_header(\xaa\xaa\x03\x00\x00\x00)一致,若是相等则以为是恶意攻击,可以把这个A-MSDU帧扬弃。


混淆密钥攻击(CVE-2020-24587)


8.png

图8.混淆密钥攻击流程


在办法1当中,攻击者诱导受害者会见受攻击者控制的服务器,通过一些手段,好比指定一个超长的URL,从而使受害者发送的数据包不得不分成两段举行传输,分片的数据包用秘钥k加密,这两个数据包为和。而攻击者通过多信道的中心人举行阻挡,一旦监测到攻击者指定IP数据包,便将此数据包转发给AP,即AP一旦收到此数据包后,就将其解密后保存内存当中。 


在办法2举行之前,受害者需要与AP重新举行四次握手并协商新的密钥。之后攻击者期待受害者发送包括敏感信息的数据包,即和。攻击者将数据包号码为n+1的数据包阻挡,并将其序列号修改为s,然后转发给AP,即数据包。而AP直接把他看成序列号s数据包的第二个分片信息,将他解密后重组成新的数据包,而新的数据包中包括受害者的敏感信息与攻击者指定的IP。于是敏感信息就被发送到受害者控制的服务器上,造成信息泄露。


分片缓存投毒攻击(CVE-2020-24586)


9.png

图9.分片缓存投毒攻击流程


在办法1中,攻击者嗅探到受害者的MAC地址后,伪造受害者MAC地址去毗连AP。这样就可以正当的用受害者的身份在AP的内存中插入分片。


在办法2中,受害者举行正常的认证事情,此时攻击者发送数据包,这个数据包中包括攻击者指定的IP数据包。然后AP解密此数据包,并生涯在内存中,以受害者的MAC地址作为标识。然后攻击者通过发送扫除认证的数据包并断开毗连,随后在受害者和AP之间建设一个多信道的中心人。注重此时AP内存中的分片并没有被扫除。


之后受害者与AP之间举行正常的毗连。此时攻击者只需要期待受害者发送第二个分片,数据包号码为n+1,攻击者将此数据包阻挡后,并将此数据包的序列号修改为s,然后其转发给AP,即数据包,一旦AP收到此数据包,和混淆密钥误差类似,AP会将此数据包解密,并和之宿世保存缓存中的数据包重组成新的数据包,由于这两个数据包包括相同的MAC地址和序列号。最后,AP将重组后的数据包发送给攻击者控制的服务器,从而造成敏感信息泄露。


参考链接:

【1】https://papers.mathyvanhoef.com/usenix2021.pdf

【2】https://www.youtube.com/embed/88YZ4061tYw

【3】https://www.fragattacks.com/#notpatched

【4】https://github.com/vanhoefm/fragattacks

【5】https://lore.kernel.org/linux-wireless/20210511180259.159598-1-johannes@sipsolutions.net/


尊龙凯官网入口起劲防御实验室(ADLab)


ADLab建设于1999年,是中国清静行业最早建设的攻防手艺研究实验室之一,微软MAPP妄想焦点成员,“黑雀攻击”看法首推者。阻止现在,ADLab已通过CVE累计宣布清静误差近1100个,通过 CNVD/CNNVD累计宣布清静误差1000余个,一连坚持国际网络清静领域一流水准。实验室研究偏向涵盖操作系统与应用系统清静研究、智能终端清静研究、物联网智能装备清静研究、Web清静研究、工控系统清静研究、云清静研究。研究效果应用于产品焦点手艺研究、国家重点科技项目攻关、专业清静服务等。


adlab.jpg