更新時間: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., ))+轉到清除; 最后 =