這個高危漏洞威脅近 9 成 iPhone 用戶

10-01

雷鋒網編者按:谷歌 "Project Zero" 團隊近日發現一個嚴重的 Wi-Fi 晶片漏洞,目前涉及到的機型包括 iPhone 7、三星 S7 edge 等各大主流機型,這些手機搭載的博通 Wi-Fi 芯片存在的後門安全漏洞,非常容易被黑客入侵。考慮到這個漏洞對上億部手機所產生的影響,美國國傢標準和技術研究所為補丁嚴重性的評級高達 9.8 分(滿分 10 分)。下面這篇文章就對 iOS 系統的 Wi-Fi 晶片漏洞細節進行瞭詳細剖析,雷鋒網做瞭不改變原意的整理。

作者:百度安全實驗室

1. 摘要

隨著 iOS 11 的發佈,多個 BroadCom WiFi 芯片的高危漏洞被公開 [ 1 ] 。這些漏洞對上億臺未來得及更新的 iOS 設備造成瞭嚴重的安全威脅。黑客可對同一 WiFi 網絡下的設備發起攻擊,遠程控制受害設備的 WiFi 芯片,甚至進一步攻破 iOS 內核。本文對 iOS 設備 WiFI 芯片相關漏洞進行簡要技術分析,然後根據 iOS 設備的系統版本統計出受影響的規模。

截至 9 月 27 日,國內 92.3% 的 iOS 用戶都受到相關高危漏洞的威脅。我們呼籲用戶盡快升級 iOS 系統到最新版本,並號召手機廠商采用更有效的防護技術,避免用戶受到已知高危漏洞的威脅。

2. BroadCom WiFi 芯片漏洞技術分析

本文著重分析兩個 BroadCom WiFi 芯片漏洞:CVE-2017-11120 和 CVE-2017-11121。這兩個漏洞都是 WiFi 芯片固件代碼在處理數據幀時缺乏對特定字段的嚴格校驗。攻擊者可以利用它們制造內存破壞,實現任意代碼執行,獲得對設備的遠程控制。

2.1 漏洞 CVE-2017-11120

iOS 設備搭載的 BroadCom WiFi 芯片采用瞭快速基本服務設置轉換(Fast BSS Transition)和無線資源管理(Radio Resource Management)標準。在接入無線接入點(Access Point,簡稱 AP)後,iOS 設備會發送相鄰接入點請求(Neighbor Report Request),AP 則返回相鄰接入點應答(Neighbor Report Response),包含當前無線局域網內的相鄰 AP 以及各自的 BSSID,Operating Class 和 Channel Number 等信息。在處理 Neighbor Report Response 數據幀時,BroadCom WiFi 芯片將每一種 Operating Class 和 Neighbor Report 信息保存在一個 456 字節的內存塊中(如圖 1 所示),並且將這些塊通過指針串接起來。其中,Neighbor Count Array 記錄瞭各個 Channel Number 的 Neighbor 數量。Array 長度為 450 字節,每 2 個字節記錄一個 Channel Number,所以最大可記錄的 Channel Number 為 224(0xE0)。

▲圖 1:BroadCom WiFi 芯片記錄 Neighbor Report Response 信息的內存塊結構 [ 2 ]

▲圖 2:BroadCom WiFi 芯片處理 Neighbor Report Response 信息的函數 [ 2 ]

如圖 2 所示,WiFi 芯片固件裡位於地址 0xAC0A8 的函數(簡稱 function_AC0A8,下同)首先在串聯的內存塊中查找 Operating Class 對應的條目,如果沒有找到,則會動態創建一個條目 ,然後從數據幀中讀出 Channel Number 作為數組索引,定位到 Neighbor Count Array 中元素,將其值加一。此過程並沒有對 Channel Number 做出校驗,當偽造的數據幀中 Channel Number 大於 0xE0(如 0xFF)時,上述過程將會造成內存越界寫。攻擊者可以通過內存越界寫改變關鍵指針數據或者控制流元素,一步步接管代碼執行。值得一提的是,BroadCom WiFi 芯片裡沒有 ASLR、DEP 等防護,攻擊者可以很容易做代碼改寫,註入任意代碼執行。

此漏洞影響 iOS 11.0 以前的設備。目前此漏洞的利用代碼已公開 [ 2 ] ,攻擊者能直接復用這一利用代碼攻擊漏洞設備,在 WiFi 芯片中插入後門,並在用戶無感知的情況下實現對設備的遠程控制。

2.2 漏洞 CVE-2017-11121

根據 Fast BSS Transition 標準,當設備在無線網絡環境下進行快速漫遊(fast roaming)時,會觸發校驗和重關聯(reassociation)操作。Reassociation 操作會對組臨時秘鑰(Group Temporal Key,簡稱 GTK)進行解密和安裝。這兩個過程中存在多處 memcpy 調用,調用前都缺少對 copy 長度的校驗,可能導致內存破壞。

▲圖 3:BroadCom WiFi 芯片重關聯操作時 GTK 解密和安裝的相關函數 [ 3 ]

如圖 3 所示,reassociation 由 function_8462C 函數負責,它調用 function_6D8 對 GTK 解密,然後會繼續調用 function_C9C14 對 GTK 進行安裝。相關代碼片段如下:

上述處理過程中,有兩處 memcpy 調用存在問題:

1)GTK 解密函數 function_6D8 中,當構造的畸形數據幀中 gtk_subelem [ 1 ] 為 11 時,函數參數 input_length 為 0。在第二處調用 memcpy 時,input_length-8 為 0xfffffff8,這將導致大量數據被 copy,破壞 stack 上的數據;

2)GTK 安裝函數 function_C9C14,參數 gtk_len 取值為 gtk_subelem [ 4 ] 。攻擊者可以構造畸形數據幀,使 gtk_subelem [ 4 ] 大於 164,函數中 memcpy 調用前沒有檢查 gtk_len 取值,可能導致堆溢出。

攻擊者同樣可以攻擊此漏洞造成內存破壞,實現遠程任意代碼執行。此漏洞影響系統版本在 11.0 以前的 iOS 設備。

3. 通過 WiFi 芯片漏洞可進一步攻擊 iOS 內核

攻擊者可將 WiFi 芯片漏洞作為跳板,進一步攻擊 iOS 內核。iOS 設備進行 WiFi 通信時,內核的 WiFi 驅動會向 WiFi 芯片發送 ioctl 請求。如果 WiFi 芯片被攻擊者控制,攻擊者能夠篡改 ioctl 返回的結果數據,觸發內核 WiFi 驅動中結果處理函數的漏洞,從而實現對 iOS 內核的攻擊。

▲表 1: 當攻擊者控制 WiFi 芯片後,可用於攻擊 iOS 內核驅動的漏洞

表 1 中列舉瞭可由 WiFi 芯片作為跳板攻擊內核的漏洞。漏洞原理簡要說明如下:

● CVE-2017-7103:驅動 AppleBCMWLANBusInterfacePCIe 中的函數 completeFirmwareTimestampMsg,在 Firmware Timestamp 消息完成後會被回調。函數內部將 Timestamp 消息封裝為 mbuf,交由 processFirmwareTimeSyncMessage 處理,mbuf pkthdr_len 設置為消息中 timestamp_length 字段的值。processFirmwareTimeSyncMessage 函數內部存在一處 memmove 調用,長度參數為 pkthdr_len。程序沒有對 pkthdr_len 進行檢查,構造過大的 pkthdr_len 會使 memmove 調用產生內存溢出。

● CVE-2017-7105:驅動 AppleBCMWLANCore 中的函數 assembleBGScanResults,在處理 WLC_GET_VAR ioctl 返回的結果時,會調用 IOMalloc 分配一塊堆內存,內存分配長度根據返回結果中的字段計算得出。代碼中缺少對分配長度的溢出校驗,在 WiFi 芯片被控制情況下,攻擊者可通過篡改 ioctl 返回數據,使 IOMalloc 分配長度在計算時產生整型溢出,進而導致過小的內存分配,後續對分配內存的 copy 操作可能引起堆溢出。

● CVE-2017-7108:驅動 AppleBCMWLANCore 中的 updateRateSetAsyncCallback 函數,在處理 WLC_GET_CURR_RATESET ioctl 請求結果時,首先將 0x14 字節的結果數據中讀到棧中 buffer。rate 數目由 buffer 中前 4 字節獲得,接著函數從 buffer+4 處循環讀出 rate 數據。由於在循環操作前缺少對 rate 數目的校驗,攻擊者可以篡改 ioctl 返回的 rate 結果,將 rate 數目字段改為過大的值,實現對 buffer 數據的越界讀,造成棧上數據信息泄露。

● CVE-2017-7110:設備向 WiFi 芯片發送獲得所有 Vendor IE 列表信息的 ioctl 請求,返回結果交由驅動 AppleBCMWLANCore 中 setVendorIE 函數處理。setVendorIE 內部調用 obvcopy 時,length 參數根據 ioctl 返回結果中字段的計算得出。然而程序中缺乏對 length 值的校驗,在 WiFi 芯片受控下,攻擊者可以構造畸形請求結果,使得 obvcopy 的 length 過大,導致堆溢出。

● CVE-2017-7112:驅動 AppleBCMWLANCore 中 handleTraceEvent 函數,在處理 WLC_E_TRACE 消息時,缺少對消息頭中 len 字段的檢查。而後根據 len 計算得到的數組索引,進而改寫數組內容時,可能對數組以外的內存寫入 NULL byte。

4. 絕大多數 iOS 用戶受到 WiFi 高危漏洞威脅

截至 2017 年 9 月 27 日,通過對國內上億臺 iOS 設備的系統版本進行的統計,排除虛假設備幹擾結果後,詳細系統版本比例分佈如圖 4 所示。從左半部分開始,逆時針方向按新舊版本次序依次為最新的 iOS 11.x 到 iOS 7.x。其中,最新的 iOS 11.x 設備占比為 7.7%,iOS 10.3.3 系統占比 50.8%,此版本之外的 iOS 10.x 版本(10.0.0 至 10.3.2)占比 23.8%。早期的 iOS 9.x 設備占比 11.2%,iOS 8.x 占比 5.8%,更早期的 iOS 7 占比 0.7%。

從圖中可以看到,目前國內升級到最新的 iOS 11.x 系統的設備僅占 7.7%,有近半的 iOS 設備系統版本為 10.3.3。其餘設備停留在 10.3.2 到更早的 7.x 等不同的版本。這些舊版 iOS 系統的設備(高達 92.3%)面臨著文中列舉的 WiFi 芯片高危漏洞帶來的安全威脅。

▲圖 4:國內 iOS 設備系統版本分佈(2017 年 9 月 27 日)

此外,我們統計瞭從 2017 年 9 月 11 日到 2017 年 9 月 27 日(iOS 11 的升級推出於 9 月 19 日)iOS 各個系統版本的升級情況。結果如圖 5 所示。可以看到,從 9 月 19 日開始推送 iOS 11.0 升級至 9 月 27 日期間,iOS 11.x 用戶占比緩慢遞增至 7.7%,升級主要來源於 iOS 10.3.3。整個統計期間 iOS 7.x 至 10.x 的用戶占比基本不變,也就是說,仍然有近 41.5% 的用戶選擇停留在 iOS 10.3.2 及以下系統不升級。

▲圖 5:國內 iOS 設備系統升級趨勢(2017 年 9 月 11 日 -2017 年 9 月 27 日)

5. 結語

本文分析瞭近期曝出的 iOS 設備 WiFi 芯片高危漏洞以及影響范圍。文中提及的漏洞雖然已在 iOS 11 得到修復,但通過實際統計發現,絕大多數用戶由於各種原因沒有升級上來,仍面臨嚴重的安全威脅。雷鋒網建議用戶及時升級系統到最新版本,避免受到高危漏洞影響。同時,我們也呼籲手機以及硬件廠商采取更積極的防護技術,避免用戶受到已知的高危漏洞威脅。

精彩圖片
文章評論 相關閱讀
© 2016 看看新聞 http://www.kankannews.cc/