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