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