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