作者:啟明星辰ADLab
原文鏈接:https://mp.weixin.qq.com/s/dUQb0XNNT8AQFUcVamG-oQ
背景
intel Wi-Fi芯片廣泛應用于個人筆記本電腦產品,如ThinkPad、Dell筆記本等。2020年ZDI組織披露了intel無線網卡windows驅動程序中存在的CVE-2020-0557 和 CVE-2020-0558漏洞。其中CVE-2020-0557 CSS評分為 8.1 分和 CVE-2020-0558評分為 8.2 分。通過這兩個漏洞攻擊者可以可以在受害者電腦中遠程執行任意代碼。
| 漏洞編號 | 影響的無線網卡 |
|---|---|
| CVE-2020-0557 | AC 7265 Rev D、AC 3168、AC 8265和AC8260 |
| CVE-2020-0558 | AC8265 |
CVE-2020-0558漏洞分析
漏洞原理
當AP熱點處理AssocReq時,會調用prvhPanClientSaveAssocResp函數保存AssocReq幀中SSID的值,在處理SSID的過程中,會調用parse_ie函數從數據幀中取出ssid的TLV結構,并調用memcpy_s函數將ssid的內容復制到目標緩沖區。在調用memcpy_s函數的時候,錯誤地使用ssid的length作為數據復制長度,當ssid的長度大于目標緩沖區的長度時,會導致緩沖區溢出。
問題代碼
調用parse_ie函數從數據幀中取出ssid的TLV結構,并調用memcpy_s函數將ssid的內容復制到目標緩沖區。在調用memcpy_s函數的時候,錯誤地使用ssid的length作為數據復制長度,當ssid的長度大于目標緩沖區的長度時,會導致緩沖區溢出。在下圖中,攻擊者可以控制*(v8+1)的值,可以拷貝超長的數據復制到目標地址中,從而導致緩沖區溢出。
漏洞修復
新版本的代碼中使用osalMemoryCopy函數替代了原來的memcpy_s函數,另外把SSID的拷貝的最大長度強制設為32字節,這樣就避免了緩存區溢出的問題。
CVE-2020-0557漏洞分析
漏洞原理:
當AP熱點處理AssocReq時,會調用prvhPanClientSaveAssocResp函數處理AssocReq幀中的數據,其中在函數中會調用prvGoVifClientAssocStoreSupportedChannels函數來處理及保存請求端通道信息,這其中prvGoVifClientAssocStoreSupportedChannels函數會循環調用utilRegulatoryClassToChannelList來處理RegulatoryClass(管制要求)信息。由于在循環處理沒有考慮目標的偏移是否越界,當AP熱點接收到AssocReq數據幀中RegulatoryClass信息單元有多個信道數據時會導致越界寫。
問題代碼
prvGoVifClientAssocStoreSupportedChannels函數
漏洞修復
在新版本 增進了對當前index的判斷,如果index大于255則退出循環。
參考
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1578/
暫無評論