Wi-Fi WPA2 “Kr00k”漏洞分析與復現

發布時間 2020-03-26

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函數用于處理STA的初始化連接,該函數對wpa_ptk結構體進行內存分配和初始化,wpa_ptk結構體大小為0x13C。



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



3.漏洞驗證


3.1 測試環境



設備名稱

數量

受影響的設備

Nexus5

1

iphone6s手機

1

Attacker

NETGEAR網卡

2

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