谷歌旗下Project Zero的安全研究員Gal Beniamini指出,博通 Wi-Fi SoC(芯片)易遭受遠程代碼攻擊攻擊,可獲取系統內核權限。他表示,由于缺少訪問授權控制,智能手機等設備的內部芯片模塊仍存在大量未發現漏洞。
4月4日,Project Zero的博客中指出博通Wi-Fi SoC芯片存在安全漏洞,可獲取芯片遠程代碼執行權限。4月11日的博客中指出可以借助Wi-Fi SoC中的漏洞,在公共Wi-Fi網絡環境中,遠程在目標設備上執行惡意代碼,無需誘導用戶執行任何操作,即可遠程完全獲取用戶手機的權限。
博客指出雖然內存隔離可以有效的保護Wi-Fi SoC芯片,但是固件層面需要增強安全防御。目前可以借鑒的安全防御策略有stack cookies、safe unlinking、內存訪問控制MPU。
Gal Beniamini第一次只發布了在Wi-Fi芯片上遠程執行遠程代碼的案例,4月11日的博客中指出可以借助Wi-Fi SoC中的漏洞,在公共Wi-Fi網絡環境中,遠程在目標設備上執行惡意代碼,無需誘導用戶執行任何操作,即可遠程完全獲取用戶手機的權限,以下是詳細闡述。
Beniamini發現通過低級和高級(簡單和復雜)兩種通信路徑都可以攻擊應用處理器:
“簡單路徑”:攻擊將SoC連接到應用處理器的通信通道
“復雜路徑”:攻擊SoC傳輸的高級消息,從而向設備發送重要的Wi-Fi信息(例如SSID發現、Wi-Fi功率等級)。
從SoC到主機的鏈接SoC支持不同的上游接口, Beniamini羅列了SDIO、USB和PCIe。其中PCIe最快,PCIe使用DMA(直接內存訪問)與處理器通信。由于PCIe已經成為現代設備的默認接口,因此Beniamini選擇攻擊PCIe。
執行堆棧追蹤工作排除博通SoC用來與主機通信的通信協議后,Beniamini發現,Wi-Fi SoC設法對包含主機內核的物理地址范圍進行直接內存訪問,而沒有任何干擾(此外,這表明缺乏系統內存映射或出現配置錯誤)。
博通的SoftMAC驅動Brcmsmac向他揭露了如何映射SoC的DMA訪問,并識別哪些結構代表主機到設備和設備到主機的訪問。這就提供了一條路徑供研究人員通過自己制作的數據劫持任何內核函數--換句話講,即是完全劫持內核。
復雜路徑所謂的復雜方式就是,查看SoC如何將信號(如可用的SSID或Wi-Fi功率等級)發送給主機。
研究人員發現,這類控制信息均使用同樣的EtherType、0x886C(封裝必須由主機驅動處理的固件事件有關信息)。去年5月之前,0x886C幀未被過濾,但存在兩個問題:如果劫持SoC就可以恢復該補丁;并發送重要Wi-Fi改動(SWC)(雖然有144個受支持的事件代碼,但是安卓主機驅動Bcmdhd只支持很小的子集,盡管如此,驅動支持的事件有35個,且和Wi-Fi模塊一樣被認為是可信芯片,因此導致攻擊面很大)的WLC_E_PFN_SWC事件仍會遭受攻擊。
官方補丁中添加了驗證方法is_wlc_event_frame,驗證固件RX路徑及驅動路徑。芯片在接受到主機幀時,立即調用驗證,如果判斷到是一個事件幀,即立刻丟棄。否則將幀轉給驅動,最后驅動調用通用方法繼續下面的驗證。
但是既然可以獲取Wi-Fi SoC芯片的代碼執行權限,即可命令回復補丁邏輯。只需要在固件補丁返回處做修改,即可導致任意接受幀盲目的轉發到主機。流程如下:
博客指出雖然內存隔離可以有效的保護Wi-Fi SoC芯片,但是固件層面需要增強安全防御。目前可以借鑒的安全防御策略有stack cookies、safe unlinking、內存訪問控制MPU。