針對Wi-Fi的幀聚合和幀分段漏洞攻擊
在本文中介紹了支持Wi-Fi的802.11標準中的三個設計缺陷。一個設計缺陷在幀聚合功能,另外兩個缺陷在幀分段功能。這些設計缺陷使攻擊者能夠以各種方式偽造加密的幀,進而使敏感數據得以泄露。還發現了與聚合、分段相關的常見實現缺陷,這進一步加劇了攻擊的影響。本研究結果影響了從WEP一直到WPA3的所有受保護的Wi-Fi網絡,這意味著自1997年發布以來,所發現的缺陷就一直是Wi-Fi的一部分。在實驗中,所有設備都容易受到一個或多個本研究攻擊的影響,確認所有Wi-Fi設備都可能受到影響。最后,提供了一種工具來測試設備是否受到任何漏洞的影響,并討論了防止攻擊的對策(https://www.fragattacks.com )。
Introduction
在過去的幾年中,Wi-Fi的安全性已進行了重大改進。最值得注意的是,這包括發現和防止WPA2中重安裝密鑰,以及WPA3的標準化,其中除了其他方面,還可以防止離線字典攻擊。此外,額外的防御措施已經標準化,例如運行通道驗證和信標保護,這進一步提高了Wi-Fi網絡的安全性。這些最新的改進是Wi-Fi的一個受歡迎的補充,因為Wi-Fi仍然是用于訪問互聯網的主要方法之一。此外,Wi-Fi還用于家庭網絡中,以防止外部人員訪問個人打印機,安全攝像機,智能家庭設備等。在企業網絡中,Wi-Fi扮演著同等重要的角色,因為它對用戶進行身份驗證,保護對內部服務的訪問并在將內容傳輸到例如本地文件服務器,會議室中的智能演示屏幕等時保護內容。
盡管最近在Wi-Fi安全方面取得了進步,但本研究發現設計問題在二十多年內未被發現。這些問題是通過分析開源Wi-Fi堆棧并系統檢查802.11標準而發現的。研究結果會影響所有受保護的Wi-Fi網絡,包括使用有線等效保密性(WEP)的舊網絡,直至并包括最新的Wi-Fi保護訪問(WPA3)。由于WEP也受到影響,這意味著自1997年發布以來,Wi-Fi一直是多個設計缺陷的根本原因。同樣令人擔憂的是,測試的每個設備都容易受到至少一種攻擊的影響。
最簡單的設計缺陷在于802.11的幀聚合功能:通過翻轉幀頭中未經身份驗證的標志,加密的有效負載將被解析為包含一個或多個聚合幀,而不是正常的網絡數據包。濫用此方法可以注入任意幀,然后通過使用惡意DNS服務器來攔截受害者的流量。實際上,測試過的所有設備都容易受到這種攻擊。
802.11的幀分割功能還有另外兩個設計缺陷,該功能可將大幀分割成較小的片段。首先,盡管一幀的所有片段總是在相同的密鑰下加密的,但是并不需要接收者檢查這種情況是否確實如此。本文證明了攻擊者可以通過混合使用不同密鑰加密的片段來濫用此丟失的支票來偽造幀并泄露數據。其次,在連接到其他網絡時,不需要接收者從內存中刪除(不完整)片段。濫用這一點將惡意片段注入到片段緩存中,即例如受害者的緩存,從而注入任意數據包。大多數設備受到這些攻擊中至少一種的影響。
除了設計缺陷,還發現了與框架聚合和分段相關的廣泛實施漏洞。這些漏洞可以被單獨挖掘,也可以使濫用已發現的設計問題變得更加容易。最常見的實現漏洞是接收者不檢查所有片段是否都屬于同一幀,這意味著攻擊者可以通過混合兩個不同幀的片段來偽造幀。針對某些實施方式,還可以混合加密的片段和純文本片段,通過將它們偽裝為握手消息來注入純文本聚合幀,以及注入純文本片段化(廣播)幀。還發現了其他幾個實現缺陷,本文創建了一個工具來測試所有這些缺陷。
發現的設計缺陷之所以被忽視這么長時間有兩個主要原因。首先,濫用的某些功能通常不被視為Wi-Fi核心加密功能的一部分,因此未得到嚴格或正式的分析。其次,在實踐中需要打補丁的驅動程序或固件來確認基于分段的漏洞。當使用普通驅動程序時,注入的幀的某些字段可能會被覆蓋,而程序員不會意識到這一點。這會導致攻擊失敗,因此研究人員可能會錯誤地得出結論:設備是安全的,而實際上它們很容易受到攻擊。
因為本文發現會影響所有Wi-Fi設備,所以聯系了互聯網安全企業論壇(ICASI),以幫助進行多方協作的公開披露。還與Wi-Fi聯盟合作,以向供應商分發信息。
Background
A.幀布局和數據包聚合

上圖顯示了802.11幀的布局,首先說明其通用字段。首先,幀控制(FC)字段包含幾個標志并定義幀的類型,例如。例如,它是數據幀還是管理幀。接下來是三個MAC地址,它們定義了幀的接收方,發送方以及目的地或源。服務質量(QoS)字段定義幀的優先級,在802.11中稱為流量標識符(TID)。正常幀的有效載荷字段包含已傳輸的數據包,該數據包以LLC / SNAP標頭(有時也稱為rfc1042標頭)開頭,它定義了數據包的類型,例如。例如,它是IP還是ARP數據包(請參見下圖)。
當數據包較小時,將多個數據包聚合到一個較大的幀中會更有效。802.11n修正案定義了兩種聚合方法,集中于所有支持802.11n的設備都必須支持的聚合MAC服務數據單元(A-MSDU)。A-MSDU幀的布局與上圖所示的普通幀相似,不同之處在于,已設置QoS字段中的A-MSDU標志,并且有效載荷字段包含一個或多個A-MSDU子幀,如上圖所示。每個子幀都以等效于802.3報頭開頭:數據包的目標和源MAC地址,然后是數據包的長度。請注意,數據包本身以LLC / SNAP標頭開頭,就像在正常幀中一樣。最后,除了最后一個子幀,每個子幀都被填充,以使其長度是4的倍數。
當接收方看到在QoS字段中設置了A-MSDU標志時,它將提取所有A-MSDU子幀并將其轉換為具有在子幀中指定的目標地址和源地址的以太網幀。問題在于,盡管對QoS字段進行了身份驗證,但默認情況下,A-MSDU標志被掩碼為零,這意味著該標志實際上并未得到身份驗證。結果,攻擊者可以截取正常幀,設置A-MSDU標志,并且接收方現在將錯誤地將有效載荷解釋為包含A-MSDU子幀。
B.幀分段
在嘈雜的環境中,將較大的幀拆分為較小的片段可能會更有效,因此,如果某個片段損壞,則僅需要重新傳輸該片段。片段的布局也稱為MAC協議數據單元(MPDU),與普通幀相同,如上圖所示。由于它們的相似性,使用術語幀來指代普通幀和MPDU,術語“片段”將用于顯式地引用MPDU。將一幀分割成多個片段時,每個片段都分配有一個遞增的4位片段編號(上圖中的片段編號)。這意味著一個幀最多可分為2^4個片段。為了使接收者能夠確定何時接收到所有片段,除最后一個片段外,每個片段都在其幀控制字段中設置了更多片段標志。最后,特定幀的所有片段都具有相同的12位序列號(上圖中的序列號)。僅單播數據幀被(解分段),并且這些幀可以由幀控制字段中的類型子字段和接收者MAC地址(Addr1)識別。在本文中,使用符號Fragx(s)表示具有片段號x和序列號s的片段。例如,Frag1(9)表示序列號為9的第二個片段。

缺省情況下,僅當幀大于配置的分段閾值時才將其拆分為分段。該分段閾值獨立于最大分組大小,例如,最大傳輸單位(MTU)。當設備支持動態分段(這是802.11ax的一部分)時,發送器可以根據分段閾值將幀拆分為多個分段。特別是,當為客戶端分配固定時間的傳輸機會(在802.11ax中稱為資源單元)時,它可以使用片段化的幀填充此持續時間的最后部分。
C.身份驗證和加密
在受保護的家庭和企業Wi-Fi網絡中,客戶端最終都將使用4次握手來與AP協商成對會話密鑰。該會話密鑰用于加密數據幀。在任何時間點,AP都可以開始新的4次握手以更新會話密鑰。
使用(AES-)CCMP或GCMP數據機密協議時,首先將大于分段閾值的幀拆分為片段,然后以與普通幀相同的方式對所有片段進行加密:對有效負載字段進行身份驗證和加密,并且所選的元數據也將得到驗證。除其他事項外,該元數據包含報頭中的所有MAC地址,片段編號和更多片段標志。序列號未經驗證,因為其值僅在站能夠發送之前才知道。請注意,可以通過FC字段中的保護標志識別加密的幀。每個加密幀還具有嚴格增加的數據包編號(PN),通常稱為隨機數,用于防止重放攻擊,并由數據保密協議隱式地進行身份驗證。使用符號Enc n k {f}表示使用密鑰k和數據包編號n對幀f的加密。
接收器首先檢查PN是否增加,否則丟棄片段(或幀)。然后,它將片段解密并存儲,直到收到所有片段為止。接收到最后一個片段后,所有解密的片段將重新組合到原始幀中。由于片段號和更多片段標志是經過身份驗證的,因此攻擊者無法更改片段數或它們的相對位置。另外,為了防止攻擊者通過組合不同幀的片段來偽造幀,如果接收者的PN不連續,則它們必須丟棄所有片段。
較早但尚未棄用的WPA-TKIP數據保密協議不會對分片編號和更多分片標志進行身份驗證,也不會檢查分片的PN是否連續。取而代之的是,使用邁克爾算法對重新組裝的框架進行身份驗證。當使用殘破和不建議使用的WEP協議時,片段編號和更多片段標記未通過身份驗證,并且重組后的幀也未單獨進行身份驗證。這導致了針對WEP的新穎攻擊,攻擊者可以混合并重新排列不同幀的片段。
D.攻擊技巧和場景
盡管利用發現的每個設計缺陷都需要不同的威脅模型(在每一節的開頭都進行了介紹),但是大多數威脅模型之間都有相似之處。特別是,有些攻擊依賴于中間的多通道計算機(MitM)位置,有些攻擊還依賴于寬松的BEAST威脅模型,而一種攻擊則針對熱點類型的網絡。因此首先介紹這些概念:
多通道MitM:許多(已知)攻擊都需要能夠阻止,修改或延遲在客戶端和AP之間發送的加密幀。為了可靠地做到這一點,引入了多通道MitM位置。在此MitM技術中,攻擊者將真實的AP克隆到不同的通道上,迫使客戶端在克隆的通道上連接到惡意AP,并在客戶端和真實的AP之間轉發幀。攻擊者然后可以在轉發幀之前修改幀,或者根本不轉發幀。最近,針對此MitM的防御措施已被批準為802.11標準草案,稱為操作通道驗證,但實際上尚未使用。結果,在實踐中可以可靠地建立多通道MitM位置:唯一的要求是攻擊者擁有兩個WiFi天線,并且在客戶端和AP的無線電范圍內。
BEAST威脅模型:針對TLS的BEAST攻擊引入了一種新穎的威脅模型,其中,誘騙受害者執行惡意JavaScript代碼。例如,這可以通過對受害者進行社會工程設計以使其在攻擊者的控制下訪問網站來實現,并使敵人能夠使受害者發送大量流量。其他針對TLS的攻擊也依賴于此威脅模型,將其稱為BEAST威脅模型。在此威脅模型的寬松版本中,僅要求受害者連接到攻擊者的服務器,而無需執行惡意的JavaScript代碼。
熱點安全:熱點曾經是開放和不安全的Wi-Fi網絡的代名詞。但是,情況已不再如此。在現代熱點類型的網絡(例如eduroam)和Hotspot 2.0網絡中,用戶可以(例如例如,使用他們的移動SIM卡進行身份驗證,每個用戶擁有唯一的身份驗證密鑰,因此,他們的加密密鑰也保持秘密。為了防止用戶相互攻擊,熱點通常使用下游組地址轉發和客戶端隔離。使用前一種功能,將為每個客戶端分配一個隨機的組密鑰,以防止濫用本來共享的組密鑰的攻擊。客戶端隔離是后者的功能,可防止用戶彼此通信,這尤其是阻止了基于ARP的MitM攻擊。
Abusing Frame Aggregation
在本節中介紹了802.11幀聚合功能的設計缺陷,該缺陷使攻擊者通過使受害者將正常的Wi-Fi幀作為聚合幀處理來注入任意數據包。濫用它來執行端口掃描,并誘使受害者使用惡意DNS服務器。此設計缺陷已分配為CVE-2020-24588。
A.威脅模型
該攻擊針對Wi-Fi的所有當前數據機密協議,即WEP,TKIP,CCMP和GCMP,這意味著所有受保護的Wi-Fi網絡都會受到影響。攻擊者必須在受害者的無線電范圍內,以便可以獲得多信道MitM,并且受害者必須支持A-MSDU幀的接收,這是802.11n的強制性部分。此外,攻擊者必須能夠通過對有效負載進行一定控制并使用可預測的IP標識(ID)字段將IPv4數據包發送給受害者。本節重點介紹一種通用的攻擊技術,在這種技術中,攻擊者可以按如下方式將此類IPv4數據包發送到客戶端或AP:
攻擊客戶端:如果客戶端的IP地址已知,并且沒有防火墻阻止傳入的數據包,可以直接向受害者發送IPv4數據包。否則,假設攻擊者能夠使受害者在攻擊者的控制下連接到服務器,從而允許攻擊者通過此連接注入IPv4數據包。實現此目的的一種廣泛方法是注冊一個拼寫錯誤的域名或利用流行網站中的第三方廣告。還可以使用寬松的BEAST威脅模型,對受害人進行社交設計以使其訪問攻擊者的網站。
攻擊AP:要攻擊AP,至少一個連接的客戶端的IP ID字段必須是可預測的。對于較舊的客戶端可能是這種情況,在某些設備上,此字段始終等于零。還依靠BEAST威脅模型來使該客戶端發送具有給定有效負載的IPv4數據包。
B.通過欺騙A-MSDU注入幀
默認情況下,不通知A-MSDU標志(通知接收方如何解析幀的加密有效載荷)。僅當發送方和接收方支持信令和有效負載保護(SPP)A-MSDU時,A-MSDU標志才經過身份驗證。但是測試的設備均不支持此功能,這意味著實際上A-MSDU標志永遠不會經過身份驗證。這是有問題的,因為測試的幾乎所有設備都支持接收A-MSDU,這意味著它們可以被欺騙來將正常幀作為A-MSDU處理,反之亦然。

可以通過處理正常的802.11幀來利用此設計缺陷,以便在將其作為A-MSDU幀處理時,其中一個子幀將與要注入的數據包相對應。這要求幀的有效載荷包含特制的數據包,例如,上圖中所示的IPv4數據包。請注意,當將這個IPv4數據包封裝在802.11幀中時,它前面帶有8字節的LLC / SNAP標頭(請參閱參考資料2.1)。在威脅模型中以客戶端為目標時,攻擊者可以控制IP ID字段和IPv4標頭后面的有效負載。當這些字節被解釋為A-MSDU子幀時,第一個子幀的長度字段對應于IP ID字段(請參見上圖)。這意味著攻擊者可以將2字節IP ID字段設置為e,這意味著下一個A-MSDU子幀在注入幀的TCP或UDP報頭之后開始。這就留出了在惡意IPv4數據包中包含有效TCP或UDP標頭的空間,從而增加了將數據包正確路由到受害者的機會。最后,指出NAT設備或其他中間盒不會更改IP ID字段,因此此類設備不會干擾攻擊。
為了將IPv4數據包更改為A-MSDU幀,攻擊者在客戶端和AP之間建立了多通道MitM。根據其長度和QoS優先級來檢測包含IPv4數據包的加密802.11幀。攻擊者在未經身份驗證的QoS字段中設置A-MSDU標志,從而使客戶端將幀的有效載荷視為A-MSDU子幀。第一個子幀將具有未知的發送方和目標MAC地址,將被忽略。第二個子幀將包含攻擊者想要注入的數據包,客戶端將解析并處理此注入的數據包。如果至少一個客戶端使用可預測的IP ID,則可以類似的方式攻擊AP,某些較舊的操作系統(OS)就是這種情況。依靠BEAST威脅模型,使此客戶端執行包含攻擊者控制的二進制數據的POST請求。
實質上,這會導致IP數據包的傳輸受到攻擊者控制的部分負載。如果正確預測了此IPv4數據包的ID字段,則第二個A-MSDU子幀將對應于攻擊者控制的數據。結果,攻擊者可以注入任意數據包。AP將將此數據包轉發到其下一個目的地,即網關或網絡中的任何客戶端。最后,如果客戶端始終使用零的IP ID值,則可以使用附錄C中的注入技術。
C.實際影響
注入任意數據包的影響取決于受害者上運行的服務,是否定期更新等等。作為一般示例,對具有IPv6或IPv4功能的受害者進行了以下兩種攻擊:
端口掃描:對IPv4和IPv6主機執行了一個端口掃描,以演示大量數據包的注入。根據加密的TCP SYN / ACK答復的長度檢測到打開的端口。
惡意DNS服務器:針對雙棧IPv4 / 6客戶端,可以注入ICMPv6路由器廣告,以誘騙受害者使用被控制的DNS服務器。更確切地說,通過注入包含惡意DNS服務器的ICMPv6路由器廣告來濫用IPv6無狀態地址自動配置。在Linux,Windows 10,Android 8.1,iOS 13.4.1和macOS 10.15.4上,確認這成功毒化了OS使用的DNS服務器。一旦受害者使用了惡意DNS服務器,攻擊者就可以將所有流量重定向到其惡意服務器,從而有效攔截客戶端的所有基于IP的流量。請注意,惡意DNS服務器將托管在IPv6地址上,但如果需要,仍可以使用IPv4地址響應DNS請求。
對于僅使用IPv4的客戶端,如果可以獲得客戶端在其DHCP發現和請求中包含的4字節事務標識符,則可能會發生類似的攻擊。該標識符通常是不可預測的。但是發現iOS和macOS會在啟動時隨機生成一個標識符,然后為每個DHCP消息遞增該標識符。同樣,Halvorsen等。發現Mac OS X使用了可預測的標識符。此外,某些物聯網設備(例如小米安全攝像機)會在啟動時隨機生成一個事務標識符,并在所有DHCP消息中重用此值。這意味著,如果一個事務標識符可能被泄漏或強行使用,則有可能欺騙DHCPv4消息并迫使客戶端使用惡意DNS服務器。最后,即使重啟后,ESP-12F始終使用相同的標識符,這意味著如果可以向其注入數據包,則可以使它使用惡意的DNS服務器。
D.適用于短A-MSDU
在修正802.11ad定義的定向多吉比特(DMG)網絡中,站也可以發送短A-MSDU,其中每個子幀僅由長度字段和傳輸的數據組成。短A-MSDU只能封裝在DMG幀內,因為只有這些幀在QoS字段中定義了短A-MSDU標志。此標志始終在DMG網絡中進行身份驗證。由于DMG幀僅應在DMG網絡中發送,因此短A-MSDU標志始終是經過身份驗證的,因此無法被攻擊者操縱。但是,建議標準更明確地要求短A-MSDU標志僅在經過身份驗證時才使用。
實現的風險是硬件支持并驗證短A-MSDU標志,但是基于軟件的網絡堆棧不支持短A-MSDU。在那種情況下,短的A-MSDU可以被視為正常的A-MSDU。不幸的是,目前很少有設備支持802.11ad,這意味著無法檢查是否有任何設備受到此類特定于實現的問題的影響。
E.將A-MSDU欺騙為普通幀
還可以欺騙受害者將A-MSDU幀作為普通幀進行處理。這導致將第一個A-MSDU子幀的目標MAC地址作為LLC / SNAP標頭的開始進行處理。這意味著僅當目標具有(本地管理的)MAC地址AA:AA:03:00:00:00時,生成的LLC / SNAP標頭才有效。由于此限制,在實踐中不太可能將其濫用。
F.實驗
所有主要操作系統都容易受到本文攻擊,包括Windows,Linux,Android,macOS和iOS。測試的所有AP也都容易受到攻擊,包括家用路由器和專業AP。唯一的例外是NetBSD和OpenBSD:它們不支持A-MSDU的接收,因此不受攻擊的影響。
測試了針對多個客戶端的端到端攻擊。在這些測試中,為多通道MitM使用了兩個TL-WN722N加密狗,并且通過欺騙通道切換公告來可靠地獲得了該MitM位置。根據其長度檢測到注入的IPv4數據包,在將其轉發給受害者之前先設置A-MSDU標志,并成功注入路由器通告以毒害受害者的DNS服務器。
在測試針對FreeBSD和Linux 4.9及更高版本的攻擊時,注意到無法如前文所述注入數據包。經過仔細檢查,發現如果這些操作系統看起來像有效的LLC / SNAP標頭,則這些操作系統會剝離A-MSDU幀的前8個字節,然后對其進行進一步處理。此行為不符合802.11標準。當剝離前8個字節時,第一個A-MSDU子幀的長度字段與源IP地址的前兩個字節相對應。如果受害者不在防火墻后面,可以欺騙IPv4數據包的源地址,以便注入的數據包將再次包含在第二個A-MSDU子幀中。如果受害者阻止了欺騙性的IP地址,可以在IP地址為3.5.0.0/16的子網內的Amazon AWS上租用一臺服務器。然后,第一個A-MSDU子幀的長度為773字節,從而留出了足夠的空間來注入惡意數據包。
G.討論
為防止聚合攻擊,站點不得使用A-MSDU,或始終對A-MSDU標志進行身份驗證,即僅使用SPP A-MSDU。推測將正常幀轉換為A-MSDU也可能被用作泄漏數據的預言。例如,AP可能會根據位于A-MSDU標頭字段中的值而采取不同的行動。將對濫用A-MSDU泄漏數據進行更詳細的分析,以作為將來的工作。
Mixed Key Attack against Fragmentation
在本節中首先討論發現的兩個基于分段的設計缺陷的共同根源。然后將重點放在第一個設計缺陷上,即802.11標準如何使攻擊者通過混合使用不同密鑰加密的片段來偽造幀。此設計缺陷已分配為CVE-2020-24587。將展示如何利用此缺陷來竊取客戶端數據,以及如何恢復通過純文本HTTP連接發送的敏感信息。
A.分段設計缺陷
從高層次來看,發現的分段缺陷是由于未正確分離不同的安全上下文及其關聯的內存,接收隊列或分段緩存引起的:
混合密鑰攻擊:第一個問題是802.11標準不要求每個片段都使用相同的密鑰解密。因此,攻擊者可以通過混合使用不同密鑰加密的幀片段來偽造幀。例如,通過混合屬于不同安全上下文的片段。此設計缺陷將在本節中進一步討論和濫用。
片段高速緩存中毒:802.11標準也沒有規定何時應從內存中刪除解密的片段,例如,來自片段緩存。即當安全上下文由于(重新)連接或(重新)關聯而改變時,解密的片段不會被丟棄。攻擊者可以濫用此方法將片段注入受害者的片段緩存中,然后將其與合法片段組合以注入數據包或泄露已解密的片段。
B.威脅模型
首先關注針對WEP,CCMP和GCMP的混合密鑰攻擊。僅當接收者忘記驗證重組幀的真實性時,才會影響較舊的TKIP協議。
攻擊需要網絡中的一個或多個設備發送分段幀。盡管并非所有設備默認情況下都執行此操作,但是由于其配置的分段閾值等于或大于MTU,因此建議在嘈雜的環境中使用分段。此外,預計802.11ax設備將支持動態分段,這使得分段的使用在實踐中更加普遍。例如,Cisco Catalyst 9130默認情況下啟用了動態分段,而Aruba AP也支持它。考慮到這一點,基于分段的攻擊與新設備特別相關。
為了進行攻擊,網絡還必須定期刷新所連接設備的會話密鑰,并且必須能夠誘使受害者將數據包發送到攻擊者控制的服務器。盡管大多數網絡默認情況下不會定期刷新會話密鑰,但確實指出此假設符合針對WPA2的某些密鑰重新安裝攻擊的要求。為了誘使受害者將數據包發送到被控制的服務器,可以依靠寬松的BEAST威脅模型。將在沒有這些假設的情況下利用其他設計和實現缺陷來執行混合密鑰攻擊。
C.提取敏感數據
攻擊者的目標是通過混合使用不同密鑰加密的幀片段來偽造數據包。這些片段必須具有連續的數據包編號,因為否則接收者將丟棄這些片段。盡管許多實現不檢查片段是否使用連續的數據包編號,但本文攻擊確實假定受害者已對此進行檢查,因此說明即使完全符合該標準的實現也容易受到攻擊。
混合分段:下圖說明了本文攻擊,其中利用易受攻擊的AP竊取客戶端發送的數據。攻擊始于向攻擊者的服務器生成數據包(第1階段)。例如,此攻擊者指定的數據包可能是通過對受害者進行社會工程改造而在攻擊者的服務器上加載無害資源而生成的。通過將資源托管在一個較長的URL上,生成的數據包將足夠大,以便在傳輸之前將其分為兩個片段。這兩個加密的片段用Enc n k {Frag0(s)}和Encn + 1 k {Frag1(s)}表示。然后,攻擊者依靠多通道MitM位置來攔截所有分段幀,并根據其唯一長度來檢測攻擊者指定的數據包。請注意,攻擊者必須先收集一幀的所有片段,然后才能確定整個幀的長度。一旦檢測到攻擊者指定的數據包,攻擊者就只會將第一個片段轉發給AP。然后,AP將解密該片段并將解密后的片段存儲在其內存中。

在攻擊的第1階段和第2階段之間,攻擊者會阻止客戶端和AP之間的所有幀。為了防止這些幀干擾攻擊,在將幀轉發到AP時,請勿使用序列號s。這樣可以確保不會將攻擊者指定數據包的第一個片段從AP的內存中刪除。任何其他轉發的片段也不會干擾攻擊,因為該標準要求設備必須支持并發接收至少3個片段幀。在階段2開始之前,客戶端和AP必須進行更新,即例如,使用四次握手將成對的會話密鑰從k更改為l。請注意,攻擊者可以預測何時發生重新生成密鑰,因為它們以固定的間隔發生,并且可以檢測到重新生成密鑰,因為它們導致數據保密協議的數據包編號從零重新開始。
當客戶端發送包含敏感信息的片段時,攻擊的第2階段開始。第二個片段必須具有等于n + 1的數據包號,否則攻擊者必須等待,直到執行了另一次4次握手,以便數據包號再次從零開始。攻擊者將序列號s分配給第二個片段,這是可能的,因為此字段未經身份驗證,然后將所得的片段Enc n+1 l{Frag1(s)}轉發給AP(上圖中的階段2)。在接收到第二個片段后,AP將兩個解密的片段組合在一起以重新組裝數據包。現在,此數據包是攻擊者指定的數據包和包含敏感用戶數據的數據包的組合。
對于僅接受具有連續數據包編號的片段的設備,第二個片段必須具有數據包編號n + 1。為了增加這種情況的發生,攻擊者可以依靠BEAST威脅模型來使客戶端使用惡意JavaScript發送后臺流量。

數據包的構造:在攻擊中,將攻擊者指定的IP數據包的片段與包含用戶數據的數據包的片段混合在一起。此過程如上圖所示。偽造數據包的IP校驗和是正確的,因為它僅在IP報頭上計算得出。TCP校驗和將是錯誤的,但這對攻擊沒有影響:中間躍點仍將數據包轉發到其最終目的地,因為它們僅驗證IP校驗和。而且由于攻擊者控制了最終目的地,因此他們可以簡單地忽略不正確的TCP校驗和。最后,攻擊者指定的數據包不得大于包含敏感用戶數據的目標數據包。否則,IP長度字段將大于重組數據包的實際有效負載,從而導致AP丟棄數據包。如果IP長度字段小于有效負載,則僅丟棄尾隨數據。
可以泄露的數據取決于網絡和受害者的配置。當使用512字節的分段閾值時(例如Arch Linux建議),超出此位置的數據位于第二個分段中,這意味著可以對其進行過濾。因此可以提取HTTP cookie,POST數據,基本身份驗證憑據等。此外,借助BEAST威脅模型,惡意JavaScript可以使客戶端執行帶有URL中額外參數的跨域請求,從而將cookie推向第二個片段。這類似于針對TLS攻擊的當前標準方法。
D.攻擊變化
易受攻擊的客戶端:針對客戶端,可以執行類似的攻擊來偽造數據包。但是,偽造數據包的TCP或UDP校驗和只有2^(-16)的正確幾率,這意味著該數據包可能會被丟棄。但是,仍然可以針對通過UDP-Lite運行的多媒體流協議進行攻擊。這是因為UDP-Lite中的校驗和僅在數據包的一部分上,因此可以更改某些數據而不會使校驗和無效。與片段緩存攻擊結合使用時,可能會出現針對客戶端的更一般的混合密鑰攻擊。
多密鑰支持:802.11標準包含一個可選功能,發送方可以在兩個密鑰之間進行選擇以加密單播幀。這有助于簡化向新會話密鑰的切換,并且可以通過在幀的標頭中包含密鑰ID來標識已使用的密鑰,從而使其成為可能。使用此功能時,可以將緊接在不同密鑰下的兩個片段彼此立即轉發到目標。如果目標在某個超時后從內存中刪除了片段,或者片段之間發送的任何幀都干擾了它們在目標上的重組,這將使攻擊變得更加容易。
E.適用于WEP和TKIP
當使用帶有動態密鑰更新的WEP時,還可以混合使用不同密鑰加密的片段。針對Linux進行了經驗驗證,這表明自1997年發布以來,發現的設計缺陷就一直是Wi-Fi的一部分。此外,由于WEP不需要分段具有連續的數據包編號,即i。例如,初始化向量,攻擊者甚至可以混合使用同一密鑰加密的兩個幀的片段。
TKIP協議不受影響,因為與CCMP和GCMP不同,它的真實性檢查覆蓋整個幀,而不是單個片段。但是,某些設備不執行此真實性檢查,這意味著在實踐中仍然可能對TKIP進行混合密鑰攻擊。
F.實驗
要執行攻擊,必須注入具有特定片段和序列號的幀。但是,無線網卡可能會覆蓋這些字段。此外,網卡可能會對具有不同QoS優先級的幀進行重新排序,這也可能會干擾攻擊。為了解決這些問題,修補了Intel卡的驅動程序,并修補了Atheros卡的驅動程序和固件。
在測試中,所有主要操作系統都容易受到攻擊,包括Windows,Linux,Android,macOS和iOS。少數設備不會受到影響,因為它們要求立即接連收到所有分段,并且在它們之間發送的任何幀都會干擾其重組,從而防止了默認的混合密鑰攻擊。例如,針對NetBSD,FreeBSD以及Windows和Linux上的一些網卡,就是這種情況。此行為不符合該標準。此外,發現了一種仍然可以對FreeBSD進行混合密鑰攻擊的方法。該技術依賴于非平凡的條件,最后,OpenBSD不受影響,因為它不支持分段。
盡管三個專業AP中只有一個受到影響,但測試的所有四個家用路由器都受到了影響。在Aruba AP-305上,分段之間發送的任何幀都會干擾其重組。Cisco Catalyst 9130不支持更新成對會話密鑰,這意味著不可能進行默認的混合密鑰攻擊。
為了保持實驗的可重復性,使用虛擬Wi-Fi接口對Linux進行了端到端攻擊。特別是實施并成功實施了針對易受攻擊的AP的攻擊,以竊聽(解密)客戶端發送的分段。
在Linux上,此攻擊比較乏味,因為它會在兩秒鐘后從內存中清除分段。這可以在BEAST威脅模型中克服,在該模型中,客戶端上的惡意JavaScript可以在4次握手完成之前觸發攻擊者指定的數據包的傳輸。此后,可以生成流量,以使帶有敏感數據的數據包在兩秒鐘內以足夠高的數據包編號發送,然后可以將其提取。已針對Linux 4.9成功測試了此方法。
G.討論
為防止混合密鑰攻擊,接收方應驗證所有片段均已在同一密鑰下加密。攻擊假設網絡定期刷新成對會話密鑰。根據經驗,大多數路由器和AP都不默認執行此操作。但是,這實際上并沒有限制攻擊,因為幾乎所有實現都接受非連續的數據包號,這意味著攻擊是可能的,而無需依靠密鑰。
攻擊的局限性在于,僅當一個或多個設備發送分段幀時才可以使用它。但是,推測可以使用動態分段來延遲分段幀的傳輸。通過動態分段,發送器將發送分段的幀以填充分配的時隙。為了誘發這種類型的分段,可以使用MitM位置來欺騙客戶端或AP的802.11ax功能元素,并宣傳它們支持動態分段。該技術的實驗分析留作未來的工作。
Poisoning the Fragment Cache
在本節中介紹了一個設計缺陷,該缺陷使廣告客戶可以將片段注入到內存中,例如受害者的分段緩存。此漏洞允許攻擊者竊取客戶端數據并注入任意數據包。此設計缺陷已分配給CVE-2020-24586。
A.威脅模型
攻擊針對WEP,CCMP和GCMP。僅當未驗證重組框架的真實性時,才會影響TKIP協議。與混合密鑰攻擊類似,網絡中的設備必須發送分段的幀才能進行攻擊。在沒有這種假設的情況下濫用實現缺陷來執行片段緩存攻擊。還根據目標是客戶端還是AP做出以下假設:
易受攻擊的AP:攻擊將利用熱點類型的網絡(如eduroam)和Hotspot 2.0網絡中的易受攻擊的AP,在這些網絡中,用戶可以使用其移動SIM卡進行身份驗證。在這些網絡中,用戶可能會彼此不信任,他們將使用單獨的身份驗證和加密密鑰。當這些網絡使用下游組地址轉發和客戶端隔離時,攻擊也會起作用。
易受攻擊的客戶端:假設客戶端將連接到受保護的Wi-Fi網絡,而攻擊者也知道該密碼。客戶端不信任該網絡,并且在連接到該網絡時不會發送敏感數據。這樣的網絡可以是公開共享密碼的咖啡店或會議網絡。請注意,實際上,攻擊者可以偵聽探測請求以獲取(舊)設備愿意連接的網絡,并且可以使用密碼共享應用程序獲取附近熱點的密碼。
B.提取客戶端數據

首先攻擊易受攻擊的AP,然后竊取客戶端發送的數據。在此攻擊的第一階段,欺騙了目標客戶端的MAC地址,并使用有效的憑據連接到網絡(請參見上圖)。這樣就可以將片段注入到AP的內存中,這些片段保存在受害者的MAC地址下。請注意,由于以熱點類型的網絡為目標,因此攻擊者擁有有效的憑據。
當真實客戶端發送Auth幀以連接到網絡時,攻擊的第2階段開始。此時,攻擊者將加密的片段Enc n k {Frag0(s)}發送到AP,該片段包含攻擊者指定IP數據包的開頭。AP解密該片段并將其存儲在受害者MAC地址下的片段緩存中。此后,攻擊者通過發送Deauth幀與網絡斷開連接,隨后在客戶端和AP之間建立多通道MitM。802.11標準沒有規定客戶端斷開連接或重新連接時AP必須刪除片段,這意味著注入的片段保留在AP的片段緩存中。
在攻擊的第2階段和第3階段之間,攻擊者讓客戶端正常連接。此外,攻擊者永遠不會將序列號為s的幀發送給AP。這樣可以確保在攻擊的第二階段注入的片段保留在AP的片段緩存中。
在攻擊的第3階段,攻擊者等待,直到發送了第n + 1個數據包的第二個片段。攻擊者將此片段發送給序列號為s的AP。由于它們具有相同的序列號和MAC地址,因此這會導致AP將其與注入的片段組合在一起。因為AP不會存儲接收這些片段的憑據,所以它不會意識到這兩個片段實際上是由不同的用戶發送的。重組后的幀將包含一個IP數據包,該數據包將攻擊者作為目的地,并將用戶數據作為有效負載。這會將用戶數據泄露給攻擊者。如果數據包編號為n + 1的幀不是第二個片段,則可以通過強制斷開客戶端與AP的連接來重新開始攻擊。
C.數據包注入
攻擊者還可以通過使片段緩存中毒來注入數據包。針對AP,此攻擊類似于數據滲透攻擊,不同之處在于,階段2中注入的片段Frag0包含要注入的數據包。當接收到第二個分段時重新組裝框架時,未知內容將被添加到注入的框架中。但是,802.11之上的網絡層將丟棄此未知內容作為填充數據。接收者知道填充數據的起始位置,因為網絡數據包(例如IP或ARP數據包)包含定義數據包大小的長度字段。結果,攻擊者可以使用其他客戶的身份注入數據包,而這在熱點類型網絡中是不可能的。

為了對客戶端濫用片段緩存中毒,依賴于新穎的威脅模型,其中客戶端將連接到不受信任的受保護網絡,但僅在連接到受信任的網絡時才發送敏感數據。例如,公司筆記本電腦可以配置為僅在連接到公司網絡時發送敏感數據,但是筆記本電腦還可以用于休閑上網,例如通過使用公開共享的密碼連接到咖啡店網絡。為了攻擊客戶,攻擊者首先欺騙了受信任(公司)網絡的MAC地址,但廣告了不受信任(咖啡店)網絡的SSID(請參見上圖中的階段1)。一旦客戶端連接到該惡意網絡,攻擊者就會將片段Frag0注入受害者的記憶中。該片段包含要注入的數據包。
在攻擊的第1階段和第2階段之間,客戶端與不受信任的網絡斷開連接,此后,客戶端將連接到受信任的(公司)網絡。在客戶端連接時,攻擊者會在客戶端和AP之間建立多通道MitM位置。在此MitM位置,攻擊者避免在客戶端和AP之間轉發所有幀,同時避免使用幀中的序列號s向客戶端發送。請注意,802.11標準不要求客戶端在(重新)連接到AP時清除其片段緩存。
當受信網絡的AP發送第二個數據包編號為n + 1的片段時,攻擊的第2階段開始。攻擊者轉發序列號為s的該幀,以便客戶端將其與注入的片段Frag0(s)重新組合。類似于對AP的攻擊,客戶端的網絡層將丟棄第二個片段中的內容作為填充字節,然后將處理Frag0中包含的數據包。實際上,攻擊者可以使用此數據包注入功能來誘使客戶端使用惡意DNS服務器(請參閱第3.3節)。反過來,這使攻擊者可以攔截客戶端僅在連接到受信任(公司)網絡時才傳輸的數據。
D.實驗
與混合密鑰攻擊類似,在實踐中需要打補丁的驅動程序才能執行攻擊。Windows和Linux容易受到所有測試網卡的一半以上的攻擊。測試的Android和iOS設備不容易受到攻擊。在經過測試的BSD系統中,只有FreeBSD在AP模式下以及使用附錄E的注入技術時容易受到攻擊。三個專業AP并未受到影響,但不幸的是所有四個家用路由器都受到了影響。
為了使實驗更容易重現,再次測試了針對Linux用戶虛擬Wi-Fi接口的端到端攻擊。目標網絡使用EAP-PWD,這意味著用戶使用用戶名和密碼進行身份驗證。在此設置中成功攻擊了一個易受攻擊的AP,并通過向服務器發送IP數據包來毒化了其片段緩存,并泄漏了受害者發送的(解密的)片段。
還成功確認了對Linux上WEP的攻擊,這意味著自1997年發布以來,此設計缺陷一直是802.11標準的一部分。最后注意到,攻擊Linux并非易事,因為它在兩秒鐘后從內存中清除了片段。盡管如此,針對Linux AP的攻擊還是很實用的,因為可以在客戶端已經嘗試連接到AP之前立即注入惡意片段,從而確保注入和轉發的片段之間的延遲很短。
E.討論
向后兼容的防御是在(重新)連接或(重新)與工作站關聯時清除片段緩存。僅當網絡中的設備使用分段時,才可能發生緩存中毒攻擊。與混合密鑰攻擊類似,推測MitM位置可以假裝客戶端和AP支持動態分段,從而誘使針對802.11ax設備使用分段。實際上,如果設備容易受到緩存攻擊,那么它也很可能容易受到混合密鑰攻擊。但是,這不能保證,因為可以防止混合密鑰攻擊,同時仍然可以進行緩存攻擊(反之亦然)。
Experiments and Implementation Flaws
A.實驗裝置


為了確認實踐中的設計缺陷,測試了智能手機,筆記本電腦,物聯網設備,家用路由器和專業AP(請參見上表)。還在Latitude 7490和MSI GE60上使用16個無線網卡對Windows 10和Linux 5.5作為客戶端進行了測試(上表)。然后,使用多個網卡(下表)測試了FreeBSD 12.1和NetBSD 7.0,并使用了少量受支持的網卡測試了OpenBSD 6.4。總共這意味著測試了75臺設備。例如,網卡和操作系統組合。在這些實驗中,所有設備都受到一種或多種攻擊的影響。通常,設備是否受影響取決于操作系統,網卡以及它是否充當客戶端或AP。在進行實驗時,還分析了泄漏和開源網絡堆棧的代碼,并發現了一些與聚合和分段有關的實現缺陷。
本研究創建了一個工具,可以測試客戶端或AP是否受到發現的設計和實現缺陷的影響。它可以測試家庭網絡和企業網絡,在這些網絡中,可以使用以下方式完成身份驗證:例如PEAP-MSCHAPv2或EAP-TLS。工具支持45多個測試用例,并且在所有設備組合中,執行了上千個測試。
B.非連續數據包編號

一個常見的實現缺陷是設備不檢查幀的所有片段是否具有連續的數據包編號,即例如,所接收的片段是否確實屬于同一幀。此漏洞已分配為CVE-2020-26146。在測試中使用Intel 3160或8265卡時,除Windows 10外,所有設備均受到影響;當內核本身重新組裝片段時,Linux和Linux均受影響(對于SoftMAC 802.11驅動程序通常是這種情況)。這意味著在68個支持分段的經過測試的設備中,有52個是易受攻擊的。有關受影響的設備的概述,請參見中的“ Non-con”列。類似于混合密鑰攻擊,攻擊者可以通過混合不同數據包的片段來濫用此漏洞,以泄露用戶數據。下圖說明了這種攻擊的詳細信息。

該漏洞影響CCMP和GCMP。TKIP僅在未驗證重組框架的真實性的情況下才會受到影響。WEP協議在設計上容易受到攻擊,這意味著可以將其視為第四個新穎的設計缺陷。有趣的是,當GCMP于2013年推出時,其規范并不要求GCMP加密的片段必須具有連續的PN。802.11小組在2015年注意到了這一錯誤,并更新了標準,也要求對GCMP進行此檢查。由于這個臨時的設計缺陷,即使內核重新組裝了片段,使用GCMP的Linux 4.0到4.4也容易受到攻擊。
C.混合純文本和加密片段
本文解決的另一個常見實現缺陷是設備重新組合了加密的片段和純文本片段,而不是僅接受加密的片段(CVE-2020-26147)。這使攻擊者可以將某些加密的片段替換為純文本片段。在測試中,有21臺設備僅要求對第一個片段進行加密(? ),而9則對最后一個片段進行加密(?),并且僅3個僅對一個片段進行加密(?)。此外,有11個設備甚至接受純文本幀(CVE-2020-26140),另外9個設備接受分段但不分段的明文幀(CVE-2020-26143)。分別使用?和◎表示這兩個最后的實現漏洞。在支持分段的68個設備中,共有53個受這些實施漏洞中的至少一個漏洞影響(請參閱表1、2和3中的“純分段”列)。
Linux中的分段整理代碼試圖通過檢查所有片段是否具有連續的PN來強制對所有片段進行加密。不幸的是,這種檢查是不安全地實現的:解密幀后,其PN存儲一個會話變量,并且將前一個片段的PN與該會話變量進行比較。結果,當接收到(第二個)明文片段時,它檢查該會話變量中的PN是否與先前的片段連續,并且沒有意識到此PN與接收的明文片段無關。這意味著可以通過以下方法繞過PN檢查:首先使用連續的PN,但使用不同的序列號將有效的加密片段轉發到Linux,然后在正確的序列號下注入純文本片段(有關詳細信息請參見下圖)。

實際影響:如果第一個片段可以是純文本片段,則攻擊者可以在該片段中包含一個惡意數據包,一旦受害者收到所有片段,該惡意數據包便會對其進行處理。這類似于緩存攻擊。
如果必須對第一個片段進行加密,可以將此漏洞與A-MSDU或片段緩存攻擊結合使用,以注入任意幀。與A-MSDU攻擊結合使用時,攻擊者將使用其多通道MitM位置來設置已加密的第一個片段的A-MSDU標志。此后,攻擊者注入一個純文本片段,受害者在其上重新組裝這兩個片段并處理生成的A-MSDU。現在的想法是,第二個子幀將對應于明文片段的有效載荷,并包含攻擊者想要注入的數據包。障礙在于,攻擊者無法控制的第一加密片段必須導致可預測長度的小的第一子幀,以使第二子幀包含在注入的(第二)明文片段中。這可以通過預測數據包的IP ID來確保,類似于針對客戶端的A-MSDU攻擊。第二個限制是并非所有設備都支持分段的A-MSDU。特別是,在支持A-MSDU的56臺設備中,有33臺經過適當處理的分段化A-MSDU,有9臺接收它們為格式錯誤的幀,其他14臺則無聲地丟棄了它們。
當與高速緩存攻擊結合使用時,攻擊者首先會使用包含要注入的數據包(部分)的加密片段,為AP或客戶端的片段緩存進行定位。受害者連接到目標網絡后,攻擊者將第二個片段作為明文注入,受害者將重新組裝幀并處理注入的數據包。與默認的高速緩存攻擊相比,此組合的一個優點是,即使網絡中沒有設備發送分段的幀,也可以執行此組合。
適用于WEP和TKIP:還在Linux上對WEP進行了測試,發現由于未經過身份驗證,攻擊者可以輕易設置更多片段標志,然后將第一個加密片段與純文本片段組合在一起。僅當未驗證重組框架的真實性時,才會影響TKIP協議(請參見6.7節)。
D.廣播明文片段
盡管廣播幀永遠不應該被分段,但是一些設備將廣播的片段作為正常的未分段幀進行處理。此外,即使在受保護的Wi-Fi網絡中未加密發送(CVE-2020-26145)時,某些設備也會接受第二個(或后續)廣播片段。攻擊者可以通過將數據包封裝在第二個分段的純文本廣播幀中來濫用此功能,以注入數據包。例如,在具有廣播接收器地址的Frag1幀中。甚至單播網絡數據包(例如IPv4或ARP數據包)也可以封裝在廣播802.11幀中,并因此以這種方式注入。
受影響的設備列在“Bcast. frag.”中,在前表中列出。受影響的設備主要是Apple和NetBSD和FreeBSD上的AP。某些設備僅在執行4次握手時易受攻擊,但這并不能限制攻擊:受害者可以被強制斷開連接,例如。例如,已取消身份驗證或被阻塞,則受害者將重新連接并執行新的4次握手。
E.隱藏A-MSDU作為握手幀
設備接受純文本4次握手幀,即例如,當連接到網絡時,帶有EAPOL LLC / SNAP標頭的純文本數據幀。如果實施不正確,則可以濫用此方法來注入純文本A-MSDU(CVE-2020-26144)。尤其是,攻擊者可以構造一個純文本A-MSDU,其前8個字節也可以解釋為有效的EAPOL LLC / SNAP標頭(請參見下圖)。盡管這導致第一個子幀的目的地址和源地址無效,這意味著接收器丟棄了該子幀,但仍處理其他子幀。因此,攻擊者可以向接受其前8個字節等于EAPOL LLC / SNAP標頭的純文本A-MSDU的設備注入任意數據包。

針對FreeBSD和表1和2中所示的幾種設備,這允許攻擊者注入純文本A-MSDU幀。某些設備僅在執行4次握手時易受攻擊。對于Windows 10上的AWUS036ACH,以有效EAPOL標頭開頭的A-MSDU導致藍屏死機。最后,如果某些實現等于有效的LLC / SNAP標頭,則一些實現會剝離A-MSDU的前8個字節。這不符合該標準,也不能阻止對易受攻擊的設備的攻擊。
F.EAPOL轉發和分段
如上一節中突出顯示的那樣,當客戶端連接到網絡時,設備必須接受純文本4次握手幀。發現即使發件人尚未通過身份驗證,某些設備也將轉發給網絡中其他客戶端的純文本握手幀(CVE-2020-26139)。受影響的設備包括FreeBSD和NetBSD AP,以及某些家用路由器,例如Asus RT-N10和Linksys WAG320N。攻擊者可以濫用它來僅使用多通道MitM位置來執行A-MSDU攻擊。尤其是,攻擊者首先與目標網絡相關聯。然后,攻擊者將不發送四次握手,而是發送一次握手,例如EAPOL,以連接到網絡的客戶端作為最終目的地,將幀固定到AP。易受攻擊的AP接受此EAPOL幀并將其轉發到其目的地(在本例中為目標客戶端)。此外,AP將向客戶端加密此幀。然后,攻擊者可以使用其MitM位置在加密的EAPOL幀中設置A-MSDU標志。然后,攻擊者可以通過構建如上圖所示的EAPOL幀并將要注入的數據包放入第二個A-MSDU子幀來注入任意數據包。
攻擊者還可以針對NetBSD AP發送較大的EAPOL幀,然后AP將對其進行分段,加密并將其轉發給目標客戶端。換句話說,攻擊者可以濫用NetBSD AP來生成加密的片段。可以通過首先中毒受害者的片段緩存,然后通過NetBSD AP生成第二個加密的片段,使受害者重新組裝片段并處理注入的數據包,從而與緩存攻擊相結合。另一種選擇是,只要加密最后一個片段,就會對接受片段幀的客戶端進行濫用。不幸的是,大多數NetBSD驅動程序不支持發送分段的幀,而僅發送第一個分段并丟棄后續的分段。但是,諸如ath之類的驅動程序確實會傳輸所有分段,攻擊者可以利用這些分段更輕松地執行基于分段的攻擊。
G.繞過KIP真實性檢查
對TKIP的分段攻擊應該是不可能的,因為它可以驗證完整(重組)框架的真實性。但是,在Linux和Windows上發現了幾張網卡,它們無法驗證重新組裝的TKIP幀的真實性(CVE-2020-26141)。在Windows上,AWUS036H,AWUS036ACH和TL-WN725N受到影響,而在Linux上,NWD6505和AWUS036ACM受到影響。針對這些設備,即使使用舊的TKIP協議,也可能基于分段的攻擊。
H.將片段視為全幀
某些實現,例如OpenBSD和ESP-12F,不支持A-MSDU或分段的幀。但是,它們仍然容易受到攻擊,因為它們將所有幀都視為非分段幀(CVE-2020-26142)。攻擊者可以通過控制分段之一中包含的內容來濫用此特征以注入任意網絡數據包。在寬松的BEAST威脅模型中,可以通過使客戶端加載攻擊者控制的URL或資源來實現此目的,從而使結果請求或響應在Wi-Fi層中被分段,并且其中一個片段純粹由攻擊者控制數據(然后將其視為完整幀)。
對于OpenBSD解密片段時,更多的片段標志未包含在關聯的元數據中,導致除最后一個片段之外的所有片段解密均失敗。最后一個片段沒有設置此標志,這意味著它已成功解密,并將作為完整幀進行處理。OpenBSD還可以將解密工作轉移到Wi-Fi芯片上。在那種情況下,所有片段都會被正確解密,但是OpenBSD會將每個解密片段視為未分段的幀。在這兩種情況下,都可以通過控制最后一個片段中包含的內容來注入任意網絡數據包。
本文證實了針對ESP-12F的攻擊,該攻擊甚至接受了明文幀,并且針對使用Belkin F5D8053 v3或Intel 8265作為客戶端的OpenBSD 6.6進行了攻擊。推測其他設備也不支持分段,可以用類似的方式進行攻擊。
Conclusion
本研究發現了與幀聚合和分段有關的廣泛設計和實現缺陷。有趣的是,如果設備較早地實現了可選的安全性改進,則可以避免聚合攻擊。這突出了在已知實際攻擊之前部署安全性改進的重要性。從根本上說,這兩個基于分段的設計缺陷是由于未充分分離不同的安全上下文而造成的。由此了解到,正確隔離安全上下文是設計協議時要考慮的重要原則。在實踐中,特定于實現的漏洞是最破壞性的。有幾種方法可以實現簡單的幀注入,可以濫用這些幀來誘騙受害者使用惡意DNS服務器來攔截大多數受害者的流量。