0
在諾大的安卓系統底層的沃土中,喂養了一個又一個不斷蔓延著的深坑,雖然在軟件層面,也躺著諸多的防護措施,但稍不注意也會一腳邁進洞穴之門。
Venus是搭載在高通芯片的智能手機上一款硬件解碼器。如今越來越多的設備搭載解碼器,對Venus的攻擊面和漏洞研究,將為網絡安全研究提供借鑒。
一支裝備精良的武裝隊伍正在越過“馬奇諾防線”直達安卓系統后方硬件解碼器,上演著現實版的攻守戰役,而這支隊伍就是騰訊安全平臺部的前瞻安全技術研究團隊——騰訊Blade Team。他們直接繞過安卓系統的諸多軟件保護,遠程操控智能手機機載的硬件解碼器,并以此為切入點尋求安全防護解決方案。
為了能夠更進一步地了解Venus的架構、工作原理、攻擊面,雷鋒網編輯和騰訊Blade Team高級研究員G聊了聊,讓他為我們深入解讀“馬奇諾防線”上的“攻守之道”。

Venus硬件解碼器的“繞行”方式
在安卓開放源代碼項目(AOSP)軟件實現的過程中,很多研究人員都在安卓智能手機的音頻、視頻編碼器的Stagefright框架里發現了大量漏洞,但是幾乎所有的智能手機芯片廠商都需要使用硬件解碼器來提高性能,降低功耗,因而需要將諸如H.264或H.265等復雜的視頻格式優先由硬件解碼器進行解碼,這就給硬件解碼器帶來了一系列亟待解決的安全問題。
“每一種視頻格式都類似于一個視頻壓縮方案,這是為了節省寬帶、提高畫質做出的一個平衡。當視頻數據解壓的時候,可能會有問題,解碼器的安全隱患主要就在這里。”
G在研究中發現,Venus的安全隱患主要存在于非計算區域。作為搭載高通芯片智能手機上的一款硬件解碼器, Venus是一款類似Baseband和WLAN專用于視頻硬件解碼的子系統。在這個子系統中會對指定的數據進行一些預處理,比如處理一個壓縮過的圖片數據,首先要做的就是提取,這是一個有結構的過程,用一個結構來描述哪一部分開始是這個圖片,哪一部分結束是這個圖片結束,最后怎么實現還原。雖然這個過程的計算量和計算密集度不是很大,但在這個結構處理過程中存在著許多安全問題。
在非計算區域的安全狀態中存在著一些基本的安全措施,G指出主要有5種:
1、地址隨機化,代碼段隨機化與數據段隨機化的保護。
2、內存堆的保護,每一塊生出的內存頭部會有一些用來做校驗的,如果有一個緩存區溢出,覆蓋掉后面的數據后,系統會檢測到。
3、棧保護,防止棧溢出和防止ROP鏈利用的保護。
4、W^X,這種保護不能在數據區域做執行,只能在代碼區域做執行;不能直接把數據寫到代碼區域,不能覆蓋掉已有的代碼。
5、CFI,這是一種比較高級的防護,可以保護函數調用地址。
在這5種保護中,準確來說只有W^X是有的,而其他幾種沒有,因而這個保護實際上是很原始的保護,基本相當于沒有,這也成為攻破解碼器提供了切入點。
G表示,Blade Team繞過了三道防線進入到Venus。
第一道防線是瀏覽器的沙箱保護,視頻是要在軟件瀏覽器里面播放的,因而在做要突破瀏覽器的沙箱保護;第二道防線是要進入到高權限的進程,瀏覽器還只是一個普通進程,要提升至一個高權限進程,這樣才能做高權限的事情;第三道防線要實現高權限進程與內核通信,從而控制內核。
“原本這些是安卓系統的保護,即沙箱、進程權限提升、內核的保護。但是我們在研究中,數據繞過了這三層保護,直接進入到Venus里。”
具體來說,在播視頻文件時,視頻數據會通過瀏覽器,流動至到Stagefright,然后經過內核的驅動傳給Venus,最后Venus在解析這些數據過程中,會出現緩沖區溢出漏洞,從而受到攻擊。
在實現繞道的過程中涉及到要繞過安全啟動來設置實時調試器, Blade Team通過找到一臺安全啟動配置有問題的手機,這臺手機的安全啟動配置中有一項沒有打開,因而可以在它啟動的某一個過程改一些東西,改完之后再做更復雜的操作,最終能夠修改整個固件,從而繞過安全啟動。也就是通過一個小的配置去提升它的功能,再進一步修改整個固件,改完固件后再到固件里插入自己的代碼,做成一個調試器。
G告訴雷鋒網,繞過安全啟動屬于本地攻擊,但不屬于遠程攻擊的前提。本地攻擊和遠程攻擊雖然沒有直接聯系,但對于黑客或者研究人員來說,先進行本地攻擊后,會對后期遠程攻擊的步驟有一些了解,能夠更好地知道目標的內部運行狀況,從而更好的找到漏洞。
“這種硬件解碼器的漏洞不僅在安卓系統包括高通平臺中存在,在其他智能手機,甚至是音響、電視等其他設備中也存在。硬件解碼器現在應用非常廣泛,黑產通過這種繞行的攻擊方式能夠提升效率,最嚴重的情況下將在我們使用的設備中植入病毒控制整個設備。”
攻破Venus的關鍵: 調試器
在被問及為何要做這項議題時,G表示,騰訊Blade Team從2018年3月開始著手準備,試圖挖掘有什么別人沒有研究過的比較新的東西,同時對安卓系統影響又比較大。如果能夠繞過安卓主流的防御系統機制,能不能通過這種方式去促進安卓整個生態進化發展。
在研究中,Blade Team首先去挖掘新的攻擊面,發現硬件解碼器是可以做,而別人也沒有關注過的,是一個比較新的東西。于是經過一個月時間的評估后開始了進一步的研究。在接下來的進程中,G將其分為三個階段:
第一階段,研究調試器。弄清楚怎么做,并且知道怎么分析、理解、查看運行狀態,這一階段耗時一個多月。
第二階段,漏洞發現。前期準備工作做得比較好,這一階段進行的比較快。另外在之前的研究中沒人去考慮這一點,防御也很薄弱,所以半個月就找到一個漏洞。
第三階段,漏洞利用。漏洞利用階段也比較快。找到的漏洞是常規的溢出漏洞,有一個內存,往里面拷貝數據,拷貝多了就可以覆蓋后面一些比較有用的數據。而漏洞本身就是一個傳統的漏洞,用傳統的漏洞利用方式就可以做到,最終把目標攻下來。
整個研究到5月前后就完成了,前期的工作比較慢一些,但后面的漏洞發現、漏洞利用都比較快。在每一階段的推薦過程中,Blade Team也遇到了一些困難。
首先是知識面的問題。對整個安卓系統在這一架構的理解不是很透徹,因而花費大量時間找切入點。目前Blade Team已經將這一塊的知識點分享出來。
其次就是技術上的問題。由于之前沒有人研究過,而里面的運行狀況、運行原理、內存狀況,都不清楚。并且Venus是跟基站或者Wi-Fi一同被保護的小系統,是個黑匣子,做這個議題就要突破這個保護機制,去研究它里面的運行狀況和內存情況,技術上的問題相對費時。
這里面的安全保護機制主要有兩方面。一方面是安卓系統原本對解碼器的保護,對多媒體文件處理的保護。在此前的研究只考慮了軟件層面,沒有考慮硬件解碼,所以對硬件的保護并沒有起到作用。在軟件解碼上有非常多的能力和保護措施,但Venus的解碼器攻擊實際上繞過軟件層面的保護,直接走到硬件層面的攻擊,所以硬件的保護也是沒起到作用。
另一方面是本地保護,因為高通會阻止研究這個目標,所以這一塊的保護是起作用的,并且很嚴密。只是在出廠時有一些疏忽,這幾臺機器正好就配置錯誤,導致Venus攻擊有機可趁。
在整個研究過程中,G表示印象最深刻的一個節點就是在做調試器的階段,要突破本地的保護需要花很多時間,找了很多方法去研究它本身保護是怎么做的,但一直都沒什么進展。后來突然有一天發現了檢查沒有開啟,最終用配置上的漏洞把調試器做出來。這樣才得以進行下一步的工作。
這對于一項創新性的研究來說,眼前一亮的感覺足以讓人振奮。在G看來,這樣的發現是有規律可循的,每一次做類似研究都會有一個類似的節點存在,突破了之后就清楚地知道下一步的方向,G稱之為外圍設備或者固件攻擊。
“比如我們研究的另外一個目標,高通WLAN固件,也有類似的情況。我印象最深的是把調試器做出來,才能找到一個漏洞寫調試器,關鍵節點還是在調試器。對于調試器,首先要理解Secure Boot是怎么做校驗,邏輯是怎樣的。其中有很多技術上的細節,可以做一個代碼分析,也可能要自己檢測,理解內部邏輯,再從整個邏輯中發現漏洞。
由此看來,不管是WLAN還是Venus的議題,調試器都是至關重要的東西,調試器的開啟過程都是整個研究里的一個轉折點。雷鋒網雷鋒網雷鋒網
“攻守”之間的平衡點
G表示,對Venus解碼器攻擊研究的最終目的是希望減少系統的攻擊面,制定安全的防守方案。“對我們來說主要是跟廠商合作,告訴他們哪些地方容易出問題,有問題我們是怎么去攻擊的。”
實際上,指出存在的問題只是第一步,其次還要告訴廠商確實能夠實現這樣的攻擊。而最主要的還是依賴于廠商自己的所作所為。
“比如廠商發現原來某個地方有這樣一個攻擊面,而我們以前沒有看過,現在要提升里面的安全保護,他們會去提升安全防御措施。通過找到一個問題,把同類問題都修復掉,我們能夠做的就是指出這里面的風險。”
針對Blade Team發現的這個漏洞,高通的響應非常迅速,已經對發現的問題發補丁,對同類問題進行了內部審計,并且已經對Venus進行了防御加固。
除了通過軟件的形式來做阻擋,在理論上攻擊鏈條上每一環都可以做阻擋。比如瀏覽器里播視頻,可以在瀏覽器里檢測這個視頻是不是合法視頻。也可能進入到下一層,比如在安卓多媒體框架里做檢測。但在實際上,最終的防御都是在Venus本身做,很多檢測是沒有必要的。
在提到關于硬件解碼器的研究Blade Team是否會繼續深入挖掘時,G表示目前的計劃已經告一段落。但對于此類漏洞,他表示很多設備都有可能受到硬件解碼器安全問題的影響,對于其他設備和系統的解碼器漏洞研究將是大勢所趨。
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。