1 研究背景
在今年2月份的RSA大會上,ESET的研究人員公開披露Wi-Fi晶片存在嚴重安全漏洞CVE-2019-15126,並將其命名為“Kr00k”。攻擊者可以利用“Kr00k”解密無線網路流量,獲取傳輸過程中的敏感資料。
Kr00k漏洞影響部分安裝Broadcom和Cypress Wi-Fi晶片的裝置,這兩家晶片產品被廣泛應用於手機、平板電腦及IOT裝置中。保守估計,全球總計超過10億的裝置受該漏洞的影響。
2 漏洞分析
2.1 漏洞原理
在介紹Kr00k漏洞之前,先簡單瞭解下WPA2協議。目前基於AES-CCMP的WPA2協議是Wi-Fi網路中最普遍的標準。下圖是客戶端(Station, STA)連線接入點(Access Point, AP)的訊息互動過程。

STA和AP在四次握手中,協商會話金鑰PTK(Pairwise Transient Key),PTK是由PMK和PKE計算生成,而PMK由ANonce、SNonce和雙方MAC地址等計算生成。PTK分為KCK、KEK和TK三部分,其中,KCK用於MIC校驗,KEK用於加密GTK,TK為資料加密金鑰。四次握手完成後,傳輸資料使用TK進行加密。

在WPA2協議中,解除關聯操作可以由未經身份驗證和未加密的管理幀觸發,Kr00k漏洞與解除關聯操作密切相關。在下圖所示中,當站點的連線會話解除關聯後,儲存在Wi-Fi晶片中的會話金鑰(TK)被置零,如果使用已置零的TK金鑰對晶片快取中的資料進行加密並傳輸,將導致漏洞產生。

攻擊者利用無線網路卡即可完成入侵,通過不斷觸發解除關聯、重新關聯,然後使用全零TK對捕獲的資料幀進行解密,從而獲取敏感資訊。
2.2韌體分析
本文選取Nexus5中的BCM4339晶片韌體進行分析。首先,定位韌體中計算ptk的位置,如下圖所示。

然後,對其上層函式wlc_wpa_sup_eapol進行分析。


wlc_wpa_sup_eapol呼叫wpa_pmk_to_ptk時,傳入的引數分別為mac1、mac2、Nonce1、Nonce2、pmk、pmk_len、ptk、ptk_len。 ptk計算結果被儲存在wpa_ptk結構體偏移0x8c位置中。
wlc_sup_attach函式用於處理S他的初始化連線,該函式對wpa_ptk結構體進行記憶體分配和初始化,wpa_ptk結構體大小為0x13C。

當初始化失敗、連線超時或解除連線的時候,則會呼叫wlc_sup_detach函式對wpa_ptk結構體進行置零操作。



3漏洞驗證
3.1 測試環境

3.2 測試步驟
(1)對wireshark解密資料包的相關功能進行patch,使其能夠成功解密全零TK加密的資料。
(2)使用patch後的wireshark監聽目標裝置和AP通訊的資料包。
(3)使用目標裝置連線AP並任意訪問網頁。
(4)對AP和測試目標傳送Disassocation包。
(5)重複執行步驟(3)和(4),觀察wireshark中資料包是否解密。
3.3測試結果
Nexus 5:

iphone 6s:

可以看出,Nexus 5和iphone 6s部分資料被成功解密。
4 影響範圍
目前已知受影響的裝置有:
· Amazon Echo 2nd gen
· Amazon Kindle 8th gen
· Apple iPad mini 2
· Apple iPhone 6, 6S, 8, XR
· Apple MacBook Air Retina 13-inch 2018
· Google Nexus 5
· Google Nexus 6
· Google Nexus 6P
· Raspberry Pi 3
· Samsung Galaxy S4 GT-I9505
· Samsung Galaxy S8
· Xiaomi Redmi 3S
· Asus RT-N12
· Huawei B612S-25d
· Huawei EchoLife HG8245H
· Huawei E5577Cs-321
5安全建議
裝置製造商已釋出的安全建議如下:
· https://support.apple.com/en-us/HT210721
· https://support.apple.com/en-us/HT210722
· https://support.apple.com/en-us/HT210788
· https://www.arubanetworks.com/assets/alert/ARUBA-PSA-2020-003.txt
· https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20200226-wi-fi-info-disclosure
· https://www.huawei.com/en/psirt/security-notices/huawei-sn-20200228-01-kr00k-en
· https://www.microchip.com/design-centers/wireless-connectivity/embedded-wi-fi/kr00k-vulnerability
· https://www.mist.com/documentation/mist-security-advisory-kr00k-attack-faq/
· https://www.zebra.com/us/en/support-downloads/lifeguard-security/kr00k-vulnerability.html
