Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測(cè)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測(cè)方法。
【背景技術(shù)】
[0002]隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,移動(dòng)支付、移動(dòng)辦公等將融入人們生活,商業(yè)機(jī)密、個(gè)人隱私等敏感信息保護(hù)變得至關(guān)重要。伴隨著Android系統(tǒng)的普及,越來越多的開發(fā)者加入Android陣營(yíng),隨之而產(chǎn)生的Android軟件安全問題越來越嚴(yán)峻,更由于眾多開發(fā)人員安全意識(shí)的參差不齊,以及Android系統(tǒng)碎片化的嚴(yán)重,這些因素將使得軟件漏洞長(zhǎng)期存在,導(dǎo)致Android應(yīng)用軟件易被攻擊。
[0003]在Android軟件漏洞類型中,其中有一類漏洞很大程度是由于開發(fā)者沒有按照google提供的安全編程規(guī)范而導(dǎo)致的漏洞。例如:framework API誤用,AndroidManifest配置錯(cuò)誤。針對(duì)應(yīng)用軟件API誤用導(dǎo)致的漏洞的利用不僅可以竊取用戶信息,遠(yuǎn)程控制用戶手機(jī),甚至還會(huì)影響開發(fā)者的利益。
[0004]目前現(xiàn)有技術(shù)中,針對(duì)API誤用類漏洞的檢測(cè),主要還是針對(duì)具體漏洞進(jìn)行檢測(cè),并對(duì)具體漏洞類型進(jìn)行工具開發(fā)檢測(cè)。其中Attacks on WebView in the Androidsystem[C]//Proceedings of the 27th Annual Computer Security Applicat1nsConference.ACM, 2011: 343-352.對(duì)Android應(yīng)用軟件常用的webview組件進(jìn)行了分析,指出其中可能存在的安全隱患,包括調(diào)用導(dǎo)出接口執(zhí)行APK native功能等。Why Eve andMallory love Android: An analysis of Android SSL (in) security[C]//Proceedingsof the 2012 ACM conference on Computer and communicat1ns security.ACM, 2012:50-61.重點(diǎn)關(guān)注于Android應(yīng)用中SSL/TLS協(xié)議的使用問題,發(fā)現(xiàn)存在大量API的https類API誤用問題,可導(dǎo)致中間人攻擊,并設(shè)計(jì)了 MalloDroid通過靜態(tài)動(dòng)態(tài)結(jié)合的技術(shù)對(duì)可能存在漏洞進(jìn)行中間人攻擊檢測(cè)。An empirical study of cryptographic misusein android applicat1ns[C]//Proceedings of the 2013 ACM SIGSAC conference onComputer & communicat1ns security.ACM, 2013: 73-84.發(fā)現(xiàn)了在大量Android應(yīng)用中存在的對(duì)加密API的誤用,相關(guān)加密存在安全風(fēng)險(xiǎn)。
[0005]但以上研宄主要關(guān)注與某種特定漏洞,只能進(jìn)行相應(yīng)漏洞的分析,不能較便捷的進(jìn)行擴(kuò)展,但其實(shí)本質(zhì)上都是由于開發(fā)者對(duì)于framework API使用不規(guī)范而導(dǎo)致的漏洞,除了以上相關(guān)API的誤用類漏洞,還存在一類關(guān)于文件權(quán)限控制相關(guān)的API誤用漏洞,該類漏洞可導(dǎo)致的應(yīng)用程序文件內(nèi)容泄露。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測(cè)方法,采用動(dòng)態(tài)靜態(tài)結(jié)合的方式對(duì)存在的API誤用類漏洞進(jìn)行檢測(cè),減少市面上靜態(tài)檢測(cè)存在的誤報(bào)率,同時(shí)提高動(dòng)態(tài)檢測(cè)的覆蓋率。
[0007]為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:一種Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測(cè)方法,包括靜態(tài)分析和動(dòng)態(tài)分析,其特征在于:
所述靜態(tài)分析的主要內(nèi)容為:解析待檢測(cè)應(yīng)用軟件的AndroidManifest.xml配置文件及其所有組件,并將各個(gè)組件的系統(tǒng)回調(diào)函數(shù)通過靜態(tài)插粧連接在一起生成新的入口函數(shù),以所述入口函數(shù)為入口點(diǎn)生成到各個(gè)組件的入口控制流程圖;通過所述入口點(diǎn)對(duì)所述待檢測(cè)應(yīng)用軟件進(jìn)行建模構(gòu)造全程序控制流程圖,結(jié)合程序結(jié)構(gòu)遍歷進(jìn)行API誤用可達(dá)性分析和常量傳播分析篩選出候選可疑漏洞;
所述動(dòng)態(tài)分析的主要內(nèi)容為:針對(duì)不同類型的漏洞設(shè)計(jì)不同的模塊對(duì)所述靜態(tài)分析得到的候選可疑漏洞進(jìn)行漏洞觸發(fā),記錄所述候選可疑漏洞的行為,最終給出所述待檢測(cè)應(yīng)用軟件的漏洞安全評(píng)估。
[0008]進(jìn)一步的,所述靜態(tài)分析中的候選可疑漏洞的檢測(cè)包括:
WebView漏洞檢測(cè):a、遠(yuǎn)程執(zhí)行漏洞檢測(cè):targetSDK是否小與17,并檢測(cè)是否調(diào)用了 addjavascriptlnterface 接口,是否調(diào)用了 removejavascriptlnterface 移除系統(tǒng)內(nèi)置的暴露接口 ;b、file域隱私泄露漏洞檢測(cè):檢測(cè)4.1以下的應(yīng)用的webview是否存在setAllowFi IeAccessFromFi IeURI s 與 setAllowUniversalAccessFromFi IeURIs 誤用;
Android HTTPS中間人攻擊漏洞檢測(cè):a、檢測(cè)是否存在使用setHostnameVerifier(ALLOff_ALL_HOSTNAME_VERIFIER) ;b、是否自定義 X509TrustManager 不校驗(yàn)證書;
文件權(quán)限誤用檢測(cè):檢測(cè) Database,Shared Preferences,Internal Storage 安全風(fēng)險(xiǎn),其中對(duì)相關(guān)的文件分別進(jìn)行API誤用可達(dá)分析,并分析是否使用MODE_WORLD_READABLE或M0DE_W0RLD_WRITEABLE模式創(chuàng)建文件;
密碼學(xué)誤用API檢測(cè):通過靜態(tài)分析一系列的加密函數(shù),所述加密函數(shù)包括Cipher.doFinal,KeySpec初始化函數(shù),通過檢查所述加密函數(shù)的參數(shù)值,檢測(cè)是否存在密碼學(xué)API誤用;
Android通用拒絕服務(wù)漏洞特征定位檢測(cè):通過可達(dá)分析,確認(rèn)應(yīng)用組件有關(guān)intent處理extras函數(shù)的位置,記錄解析該組件接收intent的特征,以便于進(jìn)行拒絕服務(wù)檢測(cè);配置文件錯(cuò)誤檢測(cè):allowBackup安全風(fēng)險(xiǎn),暴露組件安全風(fēng)險(xiǎn),可調(diào)試安全風(fēng)險(xiǎn)。
[0009]進(jìn)一步的,所述動(dòng)態(tài)分析中不同類型的漏洞包括:與網(wǎng)絡(luò)相關(guān)漏洞、與文件操作相關(guān)漏洞及與組件IPC相關(guān)漏洞。
[0010]進(jìn)一步的,針對(duì)所述不同類型的漏洞的測(cè)試方法如下:
與網(wǎng)絡(luò)相關(guān)漏洞:使用網(wǎng)絡(luò)代理工具M(jìn)MT實(shí)施中間人流量劫持,通過替換證書后能夠解密https流量或在手機(jī)上安裝簽發(fā)自定義證書的CA根證書后能夠解密https流量則證明存在https漏洞;通過劫持網(wǎng)站跳轉(zhuǎn)到掛馬網(wǎng)站或注入js,可以驗(yàn)證靜態(tài)檢測(cè)的webview漏洞,后期有關(guān)網(wǎng)絡(luò)部分的API誤用漏洞動(dòng)態(tài)測(cè)試可在其進(jìn)行擴(kuò)展;
與文件操作相關(guān)漏洞:通過運(yùn)行應(yīng)用,觸發(fā)其相應(yīng)API,通過adb shell對(duì)其/data/data目錄下的所屬權(quán)限進(jìn)行文件API誤用類漏洞進(jìn)行驗(yàn)證,對(duì)于新類型的API誤用漏洞,對(duì)其進(jìn)行動(dòng)態(tài)測(cè)試可以在其基礎(chǔ)上增加模塊;
與組件IPC相關(guān)漏洞:通過靜態(tài)分析解析出的intent特征進(jìn)行畸形數(shù)據(jù)的構(gòu)造,生成動(dòng)態(tài)測(cè)試數(shù)據(jù),嘗試觸發(fā)Android通用拒絕服務(wù)漏洞。
[0011]本發(fā)明與現(xiàn)有技術(shù)相比具有以下有益效果:本發(fā)明采用靜態(tài)動(dòng)態(tài)結(jié)合的方式對(duì)存在的API誤用類漏洞進(jìn)行漏洞檢測(cè),靜態(tài)分析中通過對(duì)應(yīng)用程序進(jìn)行建模,結(jié)合Android應(yīng)用程序組件生命周期,事件回調(diào)等特點(diǎn)構(gòu)建全程序控制流程圖,通過在圖上進(jìn)行遍歷與程序結(jié)構(gòu)緊密結(jié)合在一起,減少市面上靜態(tài)檢測(cè)存在的誤報(bào)率,同時(shí)提高動(dòng)態(tài)檢測(cè)的覆蓋率;而動(dòng)態(tài)檢測(cè)結(jié)合靜態(tài)檢測(cè)的特征進(jìn)行動(dòng)態(tài)行為測(cè)試,一旦觸發(fā)則將為有效漏洞,通過動(dòng)態(tài)自動(dòng)化測(cè)試的方式也彌補(bǔ)了靜態(tài)分析誤報(bào)率的不足,減少人工確認(rèn)環(huán)節(jié),自動(dòng)化發(fā)現(xiàn)Android應(yīng)用存在的API誤用類漏洞。對(duì)于以后相關(guān)的存在誤用漏洞的API,可以通過簡(jiǎn)單的擴(kuò)展進(jìn)行漏洞的檢測(cè),可以提高API誤用類檢測(cè)的效率。
【附圖說明】
[0012]圖1是本發(fā)明方法流程圖。
[0013]圖2是本發(fā)明靜態(tài)分析流程圖。
[0014]圖3是本發(fā)明動(dòng)態(tài)分析流程圖。
【具體實(shí)施方式】
[0015]下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步說明。
[0016]請(qǐng)參照?qǐng)D1,本發(fā)明提供一種Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測(cè)方法,包括靜態(tài)分析和動(dòng)態(tài)分析,其特征在于:
如圖2所示,所述靜態(tài)分析的主要內(nèi)容為:解析待檢測(cè)應(yīng)用軟件的AndroidManifest.xml配置文件及其所有組件,并將各個(gè)組件的系統(tǒng)回調(diào)函數(shù)通過靜態(tài)插粧連接在一起生成新的入口函數(shù),以所述入口函數(shù)為入口點(diǎn)生成到各個(gè)組件的入口控制流程圖;通過所述入口點(diǎn)對(duì)所述待檢測(cè)應(yīng)用軟件進(jìn)行建模構(gòu)造全程序控制流程圖