◆馬璐萍 朱大立
(1.中國科學(xué)院信息工程研究所 北京 100093;2.中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 北京 100049)
文獻(xiàn)[1]提供了一種Android 系統(tǒng)漏洞挖掘的方法和裝置:獲取與任一Android 系統(tǒng)服務(wù)接口相應(yīng)的函數(shù)及與函數(shù)相匹配的參數(shù)類型信息;基于參數(shù)類型信息,生成與函數(shù)相匹配的隨機(jī)參數(shù);基于函數(shù)及與函數(shù)相匹配的隨機(jī)參數(shù),通過Android 系統(tǒng)服務(wù)接口執(zhí)行調(diào)用處理,并提取執(zhí)行結(jié)果日志;根據(jù)執(zhí)行結(jié)果日志,判斷Android 系統(tǒng)服務(wù)接口是否存在系統(tǒng)漏洞。該方案主動(dòng)模擬Android 系統(tǒng)服務(wù)接口執(zhí)行調(diào)用處理的情形,在調(diào)用處理完畢后查看系統(tǒng)崩潰情況,即可準(zhǔn)確預(yù)知在實(shí)際應(yīng)用場(chǎng)景中,Android 系統(tǒng)服務(wù)接口執(zhí)行哪些調(diào)用處理時(shí)會(huì)發(fā)生崩潰,可為挖掘到的系統(tǒng)漏洞提供修復(fù)方案和可靠依據(jù)。
但是,此方案是關(guān)于挖掘Android 系統(tǒng)的漏洞,主要側(cè)重點(diǎn)在于挖掘出Android 系統(tǒng)中存在的漏洞,而Android 系統(tǒng)存在的漏洞對(duì)于不同移動(dòng)終端的系統(tǒng)安全的威脅大小是不一致的,該方案沒有對(duì)這些漏洞的可利用性及可利用途徑進(jìn)行評(píng)估和預(yù)測(cè),不能有效分析出漏洞對(duì)移動(dòng)終端安全的威脅大小程度。
文獻(xiàn)[2]提出一種Android 系統(tǒng)的堆溢出漏洞驗(yàn)證裝置和方法,包括:漏洞檢測(cè)模塊,用于向堆緩沖區(qū)填寫第一輸入樣本,檢測(cè)是否發(fā)生堆溢出,以確定堆溢出漏洞的存在性;利用判定模塊,用于根據(jù)漏洞檢測(cè)模塊的結(jié)果,向堆緩沖區(qū)填寫第二輸入樣本,通過執(zhí)行漏洞引發(fā)Android 系統(tǒng)的系統(tǒng)進(jìn)程崩潰,以確定堆溢出漏洞被利用的可能性;利用驗(yàn)證模塊,用于根據(jù)利用判定模塊的結(jié)果,向堆緩沖區(qū)填寫第三輸入樣本,通過執(zhí)行漏洞,控制Android 系統(tǒng)的系統(tǒng)進(jìn)程的執(zhí)行流程,以驗(yàn)證堆溢出漏洞的可利用性。但是,該方案是判斷Android 系統(tǒng)中堆溢出漏洞的存在情況及可利用情況,無法對(duì)UAF 漏洞的存在情況及可利用情況進(jìn)行判斷。
為了解決現(xiàn)有技術(shù)存在的不能針對(duì)具體的UAF 漏洞進(jìn)行可利用性及利用方式的有效判定和預(yù)測(cè)的問題,本文提出一種UAF 漏洞利用判斷方法。
本文提出一種UAF 漏洞利用判斷方法,本節(jié)將具體介紹其實(shí)現(xiàn)原理。
本文所提出的方法共分為4 個(gè)步驟,如圖1 所示。在步驟S1 中分析系統(tǒng)的內(nèi)存分配方式、系統(tǒng)中存在UAF 漏洞的函數(shù)、所述函數(shù)的參數(shù)以及所述函數(shù)的使用場(chǎng)景,然后根據(jù)分析結(jié)果,確定覆蓋已釋放內(nèi)存區(qū)域的實(shí)現(xiàn)方式,即構(gòu)造用于覆蓋已釋放的內(nèi)存區(qū)域的第一函數(shù)序列運(yùn)行樣本。

圖1 步驟
包括4 個(gè)模塊(如圖2 所示):第一構(gòu)造模塊21,漏洞驗(yàn)證模塊22、第二構(gòu)造模塊23 和漏洞利用模塊24。

圖2 4 個(gè)模塊
其中,第一構(gòu)造模塊21,用于分析移動(dòng)終端操作系統(tǒng)的內(nèi)存分配方式、所述系統(tǒng)中存在UAF 漏洞的函數(shù)、所述函數(shù)的參數(shù)以及所述函數(shù)的使用場(chǎng)景,構(gòu)造用于覆蓋已被異常釋放的內(nèi)存區(qū)域的第一函數(shù)序列運(yùn)行樣本。
電子商務(wù)作為重要的新興產(chǎn)業(yè),帶動(dòng)了很多嘉興市中小型物流企業(yè)的發(fā)展。2017年嘉興電子商務(wù)交易額1454.25億元,在全省排名第4,同比增長30.7%。跨境電子商務(wù)網(wǎng)絡(luò)零售出口額7.44億元,網(wǎng)店4.94萬家。近年來,嘉興市委市政府在推進(jìn)“電商換市”戰(zhàn)略中,“出政策、搭平臺(tái)、引人才、促發(fā)展”,使得嘉興電子商務(wù)成為全省網(wǎng)路零售增長幅度最明顯的三個(gè)城市之一。
漏洞驗(yàn)證模塊22,用于運(yùn)行所述第一函數(shù)序列運(yùn)行樣本,確認(rèn)所述已釋放的內(nèi)存區(qū)域被成功覆蓋。
第二構(gòu)造模塊23,用于分析所述第一函數(shù)序列運(yùn)行樣本在運(yùn)行過程中所產(chǎn)生的可控對(duì)象的內(nèi)容,構(gòu)造用于控制所述系統(tǒng)中系統(tǒng)進(jìn)程的執(zhí)行流程的第二函數(shù)序列運(yùn)行樣本。
漏洞利用模塊24,用于運(yùn)行所述第二函數(shù)序列運(yùn)行樣本,確認(rèn)UAF 漏洞能夠被利用。
本文提出的漏洞利用判斷結(jié)果有兩種:漏洞存在但不可利用、漏洞存在且可利用。漏洞可利用的依據(jù)是:攻擊者可以通過執(zhí)行漏洞控制移動(dòng)終端操作系統(tǒng)的系統(tǒng)進(jìn)程的執(zhí)行流程。
第一構(gòu)造模塊21 用于分析系統(tǒng)的內(nèi)存分配方式、所述系統(tǒng)中存在UAF 漏洞的函數(shù)、所述函數(shù)的參數(shù)以及所述函數(shù)的使用場(chǎng)景,然后根據(jù)分析結(jié)果,確定覆蓋已釋放內(nèi)存區(qū)域的實(shí)現(xiàn)方式,即確定用于覆蓋已釋放的內(nèi)存區(qū)域的第一函數(shù)序列運(yùn)行樣本。
漏洞驗(yàn)證模塊22 用于運(yùn)行所述第一函數(shù)序列運(yùn)行樣本,確認(rèn)所述已釋放的內(nèi)存區(qū)域被成功覆蓋。運(yùn)行第一函數(shù)序列運(yùn)行樣本所要實(shí)現(xiàn)的功能為:將構(gòu)造的數(shù)據(jù)覆蓋已被釋放的目標(biāo)對(duì)象所對(duì)應(yīng)的內(nèi)存區(qū)域。如果可以檢測(cè)到構(gòu)造的數(shù)據(jù)可以成功覆蓋已釋放的目標(biāo)對(duì)象所對(duì)應(yīng)的內(nèi)存區(qū)域,則說明此漏洞可能可以被利用。如果已釋放的目標(biāo)對(duì)象所對(duì)應(yīng)的內(nèi)存區(qū)域無法被覆蓋,則說明此漏洞存在但不能被利用。比如有的UAF 漏洞,它的UAF 對(duì)象釋放和重用操作就在同一個(gè)函數(shù)中,剛剛釋放完馬上就重用了,這種情況根本沒有機(jī)會(huì)去進(jìn)行內(nèi)存覆蓋,從而無法對(duì)其進(jìn)行利用。
第二構(gòu)造模塊23 用于分析所述第一函數(shù)序列運(yùn)行樣本在運(yùn)行過程中所產(chǎn)生的可控對(duì)象的內(nèi)容,構(gòu)造用于控制移動(dòng)終端操作系統(tǒng)中系統(tǒng)進(jìn)程的執(zhí)行流程的第二函數(shù)序列運(yùn)行樣本。在第一函數(shù)序列運(yùn)行樣本運(yùn)行成功的基礎(chǔ)上,通過分析第一函數(shù)序列運(yùn)行樣本在運(yùn)行過程中所產(chǎn)生的可控對(duì)象的內(nèi)容,構(gòu)造第二函數(shù)序列運(yùn)行樣本,所述可控對(duì)象是指用構(gòu)造的數(shù)據(jù)覆蓋已釋放的目標(biāo)對(duì)象后,所述目標(biāo)對(duì)象于是就成了可控對(duì)象。分析所述可控對(duì)象的內(nèi)容,構(gòu)造第二函數(shù)序列運(yùn)行樣本,使得再次使用所述已釋放的目標(biāo)對(duì)象,嘗試通過某種方式獲得在內(nèi)核中執(zhí)行代碼的能力,從而控制系統(tǒng)進(jìn)程的執(zhí)行流程。
運(yùn)行第二函數(shù)序列運(yùn)行樣本所要實(shí)現(xiàn)的功能是:使得系統(tǒng)重引用已釋放的目標(biāo)對(duì)象,這時(shí)真正執(zhí)行的是填充到已釋放目標(biāo)對(duì)象所對(duì)應(yīng)的內(nèi)存區(qū)域中的惡意數(shù)據(jù)或函數(shù)等,這會(huì)使得系統(tǒng)流程走入了惡意構(gòu)造的代碼,以此來控制系統(tǒng)進(jìn)程的執(zhí)行流程,如果檢測(cè)出通過運(yùn)行第二函數(shù)運(yùn)行序列可以控制系統(tǒng)進(jìn)程的執(zhí)行流程,則可判斷此漏洞可以被利用。
漏洞利用模塊24 具體用于:運(yùn)行第二函數(shù)序列運(yùn)行樣本,執(zhí)行一個(gè)顯示的功能;若檢測(cè)到所述顯示的功能被成功執(zhí)行,則確定UAF漏洞可利用。若能夠成功覆蓋已釋放的內(nèi)存區(qū)域,則向存在UAF 漏洞的系統(tǒng)運(yùn)行第二函數(shù)序列運(yùn)行樣本,實(shí)現(xiàn)控制移動(dòng)終端操作系統(tǒng)中系統(tǒng)進(jìn)程的執(zhí)行流程,同時(shí)執(zhí)行一個(gè)顯示的任務(wù),比如打印一個(gè)字符,通過是否可以成功執(zhí)行此顯示任務(wù)驗(yàn)證此漏洞的可利用性,并給出漏洞利用途徑。
為驗(yàn)證本文所提出的UAF 漏洞利用判斷方法的有效性,我們進(jìn)行了如下幾方面的工作:
1)使用本文所提出的方法已有Android 系統(tǒng)中的典型UAF漏洞進(jìn)行分析,得出此漏洞的可用性;
2)對(duì)1)中分析的漏洞進(jìn)行人工分析以驗(yàn)證本文提出方法的正確性。
例如:
分析漏洞CVE-2014-3153,分析所述漏洞由于釋放重引用對(duì)象rt_waiter 指向前一個(gè)節(jié)點(diǎn)和后一個(gè)節(jié)點(diǎn)的地址已被惡意構(gòu)造的內(nèi)容覆蓋,rt_waiter 指向的下一個(gè)節(jié)點(diǎn)可以被惡意構(gòu)造為一個(gè)指向用戶內(nèi)存的假的rt_waiter 節(jié)點(diǎn),以此可以構(gòu)造第二函數(shù)序列運(yùn)行樣本,此樣本的目的是在假節(jié)點(diǎn)的前面插入一個(gè)新的真的結(jié)點(diǎn),通過此操作就可以泄露出內(nèi)核的地址,進(jìn)而進(jìn)一步控制系統(tǒng)的執(zhí)行流程。本文提出的方法可以給出此漏洞的可用性及風(fēng)險(xiǎn)。
實(shí)驗(yàn)結(jié)果表明,本文提出的方法可有效判斷UAF 漏洞的可利用性及其風(fēng)險(xiǎn)。
本文提出的一種UAF 漏洞利用判斷方法,通過觸發(fā)移動(dòng)終端操作系統(tǒng)中特定UAF 漏洞,繼而構(gòu)造并運(yùn)行函數(shù)序列運(yùn)行樣本,可以有效判斷系統(tǒng)中特定UAF 漏洞能否被攻擊者利用,從而評(píng)估相應(yīng)UAF 漏洞給系統(tǒng)帶來的安全風(fēng)險(xiǎn),促使安全研究人員及時(shí)采取保護(hù)措施對(duì)系統(tǒng)進(jìn)行安全加固,以提高系統(tǒng)安全。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年7期