無線通信新威脅!Realtek RTL8170C Wi-Fi 模塊存在嚴重漏洞
網絡安全研究人員在Realtek RTL8170C Wi-Fi 模塊中發現一組新的嚴重漏洞,攻擊者可以利用這些漏洞獲得設備上的更高權限并劫持無線通信。攻擊成功后將導致完全控制Wi-Fi模塊,并在使用該模塊的嵌入式設備的操作系統(Linux或Android)上進行潛在的root訪問。
Realtek Wi-Fi模塊嚴重缺陷
Realtek RTL8710C Wi-Fi SoC用于支持Ameba,這是一個 Arduino 兼容的可編程平臺,配備外設接口。一般用于構建跨越農業、汽車、能源、醫療保健、工業、安全和智能家居領域的設備的各種物聯網應用。
這些缺陷會影響所有使用該組件連接到Wi-Fi網絡的嵌入式和物聯網設備,并要求攻擊者與使用RTL8710C模塊的設備處于同一Wi-Fi網絡上,或者知道網絡的預共享密鑰(PSK)。
調查結果是在2月份發現,當時分析發現Realtek RTL8195A Wi-Fi模塊存在類似的弱點,其中最主要的是緩沖區溢出漏洞(CVE-2020-9395),這個漏洞允許在RTL8195模塊附近的攻擊者無需知道Wi-Fi 網絡密碼即可通過模塊。
同樣的是,在RTL8170C Wi-Fi模塊的four-way handshake機制容易受到兩個基于堆棧緩沖區溢出漏洞(CVE-2020-27301 和 CVE-2020-27302,CVSS 評分:8.0)的影響,攻擊者可以通過此系統漏洞在使用此模塊的WPA2 客戶端上遠程執行代碼。
研究人員通過PoC驗證了攻擊者利用此漏洞的場景,他們偽裝成一個合法的接入點,并向通過WPA2協議連接到它的任何客戶機(又名請求者)發送一個惡意的加密組臨時密鑰(GTK)。
在PoC中,右側窗口顯示 “發送惡意加密GTK”

驗證演示了堆棧溢出,最終將返回地址覆蓋為無效地址 0x95f98179。這是一個“隨機”地址,因為緩沖區經過 AES 解密,然而——由于攻擊者完全了解所有加密參數(網絡的 PSK 等),因此可以實現對返回地址的精確控制。
雖然目前還沒發現利用此漏洞的已知攻擊,而且在2021年1月11日之后發布了固件版本,但還是建議使用強大的私人 WPA2 密碼,以防止在設備固件無法更新的情況下通過以上系統漏洞受到攻擊。
緩沖區溢出
緩沖區是一塊連續的計算機內存區域,可保存相同數據類型的多個實例。緩沖區可以是堆棧(自動變量)、堆(動態內存)和靜態數據區(全局或靜態)。緩沖區溢出是指當計算機向緩沖區填充數據時超出了緩沖區本身的容量,溢出的數據覆蓋在合法數據上。緩沖區溢出可以導致程序崩潰,更可以被不法分子利用跳轉并執行惡意代碼。比較嚴重的安全漏洞事件包括2003年8月的沖擊波病毒、2014年4月報出的openssl“Heartbleed”(心臟滴血)漏洞,2015年1月的glibc庫幽靈漏洞。根據CNNVD2021年5月30日周報顯示,當周采集漏洞446個,其中緩沖區溢出錯誤一共59個,占比13.23%,排名第一。
防范緩沖區溢出
首先,編寫代碼時確保做邊界檢查,不要為接收數據預留相對過小的緩沖區,大的數組應通過malloc/new分配堆空間來解決,在將數據讀入或復制到目標緩沖區前,檢查數據長度是否超過緩沖區空間。同樣,檢查以確保不會將過大的數據傳遞給別的程序,尤其是第三方COTS(Commercial-off-the-shelf)商用軟件庫。
其次要嚴格要求代碼編寫規范,對很多開發人員來說,盡管謹慎編寫了一個世紀,但是依舊存在很多代碼漏洞。所以可以靈活利用一些代碼查錯工具來尋找人為產生的緩沖區溢出帶來的漏洞。但對不同語言存在局限性,因此并不是萬能的。
最穩妥的方式是通過靜態代碼分析來檢測,一般靜態代碼分析工具都有適配不同語言的特點,而且因為緩沖區溢出導致系統安全漏洞,主要是由于開發人員在編寫代碼中緩沖區使用不當引起的,這種類型有共同的特征,就是通過簡單的源代碼靜態分析手段可以檢測出來,并且在開發階段就能發現,因此這個時候進行漏洞修復是成本最低的。