FragAttacks漏洞

最近纽约大学阿布扎比分校的安全研究员Mathy Vanhoef发现了一系列影响巨大的Wi-Fi漏洞,这一系列漏洞被统称为FragAttacks,FragAttacks影响了1997年Wi-Fi技术诞生以来的所有Wi-Fi设备(包括计算机、智能手机、园区网络、家庭路由器、智能家居设备、智能汽车、物联网等等)。

其中三个漏洞影响大多数WiFi设备,属于Wi-Fi 802.11标准帧聚合和帧分片功能中的设计缺陷,而其他漏洞是Wi-Fi产品中的编程错误。
黑客只要在目标设备的Wi-Fi范围内,就能利用FragAttacks漏洞窃取敏感用户数据并执行恶意代码,甚至可以接管整个设备。
对漏洞进行了分析,并提出了相应的缓解建议。由于WiFi产品的协议栈,包括了Soft Mac及Full Mac多种实现方案。FragAttacks系列漏洞不仅存在影响操作系统内核、WiFi驱动,还影响WiFi的SOC芯片,所以漏洞的影响长期存在。请及时关注并更新设备供应商的安全更新。

修复及缓解建议

● 及时更新设备供应商发布的FragAttacks漏洞安全更新。
● 确保您访问的所有网站和在线服务都启用了安全超文本传输协议HTTPS(比如安装HTTPS Everywhere插件)。
● 例如在Wi-Fi 6(802.11ax)设备中禁用分片,禁用成对重新生成密钥以及禁用动态分片。

漏洞列表及具体影响
CVE-2020-24588
针对A-MSDU聚合的注入攻击(无效的SPP A-MSDU保护机制)
攻击者可插入恶意帧,篡改数据包
CVE-2020-24587
混合密钥攻击(重组时使用不同密钥加密的分片密取用户的敏感数据
CVE-2020-24586
分片缓存攻击(重新连接到网络时不清除分片缓存) 窃取用户敏感数据或篡改任意数据包
CVE-2020-26145
在加密通讯中,仍接受未加密广播分片作为完整帧
CVE-2020-26144
在加密通讯中,仍接受未加密的A-MSDU帧
CVE-2020-26140
在受保护的网络中接受未加密数据帧
CVE-2020-26143
在受保护的网络中接受分片的未加密数据帧
CVE-2020-26139
转发EAPOL帧时未验证发送端的身份
CVE-2020-26146
对于非连续数据包编号的加密分片依然进行重新组合
CVE-2020-26147
对分片进行重新组合时不区分加密或未加密
CVE-2020-26142
将分片帧作为完整帧进行处理
CVE-2020-26141
不验证分片帧的TKIP MIC
通过这一系列漏洞,攻击者完全可以获得用户的敏感信息或直接控制智能设备,如控制智能电源插座,甚至直接接管网络中存在漏洞的计算机,参见下文参考资料[2]。

漏洞实测如:
A-MSDU attack tests (§3 – CVE-2020-24588)
./fragattack.py wlp3s0 ping I,E –amsdu
./fragattack.py wlp3s0 amsdu-inject
./fragattack.py wlp3s0 amsdu-inject-bad
Mixed key attack tests (§4 – CVE-2020-24587)
./fragattack.py wlp3s0 ping I,F,BE,AE --pn-per-qos --rekey-req
AP forwards EAPOL attack tests (§6.6 – CVE-2020-26139)
./fragattack.py wlp3s0 eapol-inject 00:11:22:33:44:55

漏洞分析:
在所有设备普遍存在的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协议栈中,发送端将来自3-7层的网络数据经过数据链路层的LLC子层添加LLC/SNAP头后封装成MSDU(MAC服务数据单元),MSDU经过添加DA、SA、长度及pading后,封装成A-MSDU子帧,在MAC子层的顶层将多个A-MSDU子帧封装成A-MSDU,经MAC子层后,帧数据被添加上MAC头及帧尾封装成802.11数据帧(MPDU),MPDU/PSDU经过物理层添加PLCP Preamble(PLCP前导码)及PLCP Header(PHY头),无线侧最后通过射频口将二进制流发送到接收端。
接收端通过相反路径对802.11数据帧进行拆解,最后获得发送端的3-7层的网络数据。
A-MSDU的协议数据,从上到下进行分别说明:
(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域的数据帧。
在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并没有加密,这为攻击者提供了攻击入口。
防止中间人攻击,IEEE在2011年设计了SPPA-MSDU机制来保护A-MSDU Preset位及A-MSDU的Payload。SPP A-MSDU通过在RSN capabilities 域中添加SPP A-MSDU Capable及SPP A-MSDU Required来标示是否支持SPP A-MSDU机制及是否采用SPP A-MSDU机制。
2、针对A-MSDU聚合的帧注入攻击(CVE-2020-24588)
虽然有SPP A-MSDU机制来保护A-MSDU Preset位不被篡改,但是在实际的测试中,几乎所有的设备都不遵循SPP A-MSDU机制,这使得中间人攻击成为可能。
假设发送端发送了一个正常的802.11数据帧,这是一个里面封装的是一个普通TCP包,其dst=“192.168.1.2", src=“1.2.3.4”, id=34
由于偏移0x18的QOS Control(0200)不受保护,攻击者可以将 QOS Control域中的A-MSDU Preset翻转为1,使得QOS Control的值为8200,同时在帧末尾注入恶意的A-MSDU子帧2,最后发送给接收端。
由于QOS Control域中的A-MSDU Preset翻转为1,当接收端接收到数据帧后,会按A-MSDU格式来拆解里面的数据。数据被识别成两个A-MSDU子帧。A-MSDU子帧1中的数据是原始的MSDU数据,所以会被协议栈丢弃,但第二个子帧会被正确解析并处理。这上面的例子中第二个子帧会被识别成ICMP ping包,接收端会回复一个ICMP echo Reply给发送端。

参考链接:

【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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值