,結(jié)合程序結(jié)構(gòu)遍歷進(jìn)行API誤用可達(dá)性分析和常量傳播分析篩選出候選可疑漏洞;
所述靜態(tài)分析中的候選可疑漏洞的檢測包括:
WebView漏洞檢測:a、遠(yuǎn)程執(zhí)行漏洞檢測:targetSDK是否小與17,并檢測是否調(diào)用了 addjavascriptlnterface 接口,是否調(diào)用了 removejavascriptlnterface 移除系統(tǒng)內(nèi)置的暴露接口 ;b、file域隱私泄露漏洞檢測:檢測4.1以下的應(yīng)用的webview是否存在setAllowFiIeAccessFromFiIeURIs 與 setAllowUniversalAccessFromFiIeURIs 誤用;
Android HTTPS中間人攻擊漏洞檢測:a、檢測是否存在使用setHostnameVerif ier(ALL0ff_ALL_H0STNAME_VERIFIER) ;b、是否自定義 X509TrustManager 不校驗(yàn)證書;
文件權(quán)限誤用檢測:檢測 Database,Shared Preferences,Internal Storage 安全風(fēng)險(xiǎn),其中對相關(guān)的文件分別進(jìn)行API誤用可達(dá)分析,并分析是否使用M0DE_W0RLD_READABLE或M0DE_W0RLD_WRITEABLE模式創(chuàng)建文件;
密碼學(xué)誤用API檢測:通過靜態(tài)分析一系列的加密函數(shù),所述加密函數(shù)包括Cipher.doFinal,KeySpec初始化函數(shù),通過檢查所述加密函數(shù)的參數(shù)值,檢測是否存在密碼學(xué)API誤用;
Android通用拒絕服務(wù)漏洞特征定位檢測:通過可達(dá)分析,確認(rèn)應(yīng)用組件有關(guān)intent處理extras函數(shù)的位置,記錄解析該組件接收intent的特征,以便于進(jìn)行拒絕服務(wù)檢測;配置文件錯(cuò)誤檢測:allowBackup安全風(fēng)險(xiǎn),暴露組件安全風(fēng)險(xiǎn),可調(diào)試安全風(fēng)險(xiǎn)。
[0017]如圖3所示,所述動(dòng)態(tài)分析的主要內(nèi)容為:針對不同類型的漏洞設(shè)計(jì)不同的模塊對所述靜態(tài)分析得到的候選可疑漏洞進(jìn)行漏洞觸發(fā),記錄所述候選可疑漏洞的行為,最終給出所述待檢測應(yīng)用軟件的漏洞安全評估。
[0018]所述動(dòng)態(tài)分析中不同類型的漏洞包括:與網(wǎng)絡(luò)相關(guān)漏洞、與文件操作相關(guān)漏洞及與組件IPC相關(guān)漏洞;其中與網(wǎng)絡(luò)相關(guān)漏洞包括WebView漏洞、Android HTTPS中間人攻擊漏洞,與文件操作相關(guān)漏洞包括文件權(quán)限誤用,與組件IPC相關(guān)漏洞包括Android通用拒絕服務(wù)漏洞。
[0019]針對所述不同類型的漏洞的測試方法如下:
與網(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)檢測的webview漏洞,后期有關(guān)網(wǎng)絡(luò)部分的API誤用漏洞動(dòng)態(tài)測試可在其進(jìn)行擴(kuò)展;
與文件操作相關(guān)漏洞:通過運(yùn)行應(yīng)用,觸發(fā)其相應(yīng)API,通過adb shell對其/data/data目錄下的所屬權(quán)限進(jìn)行文件API誤用類漏洞進(jìn)行驗(yàn)證,對于新類型的API誤用漏洞,對其進(jìn)行動(dòng)態(tài)測試可以在其基礎(chǔ)上增加模塊;
與組件IPC相關(guān)漏洞:通過靜態(tài)分析解析出的intent特征進(jìn)行畸形數(shù)據(jù)的構(gòu)造,生成動(dòng)態(tài)測試數(shù)據(jù),嘗試觸發(fā)Android通用拒絕服務(wù)漏洞。
[0020]用戶可上傳需要檢測漏洞的應(yīng)用軟件,暴露組件漏洞檢測系統(tǒng)對該應(yīng)用進(jìn)行靜態(tài)程序結(jié)構(gòu)分析以及動(dòng)態(tài)測試。對于觸發(fā)的漏洞,系統(tǒng)記錄下詳細(xì)的信息,并進(jìn)行歸類(WebView漏洞、Android HTTPS中間人攻擊漏洞、文件權(quán)限誤用、密碼學(xué)誤用AP1、Android通用拒絕服務(wù)漏洞,配置文件錯(cuò)誤)展現(xiàn)給用戶,以供用戶進(jìn)行應(yīng)用程序改進(jìn)。
[0021]以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
【主權(quán)項(xiàng)】
1.一種Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測方法,包括靜態(tài)分析和動(dòng)態(tài)分析,其特征在于: 所述靜態(tài)分析的主要內(nèi)容為:解析待檢測應(yīng)用軟件的AndroidManifest.xml配置文件及其所有組件,并將各個(gè)組件的系統(tǒng)回調(diào)函數(shù)通過靜態(tài)插粧連接在一起生成新的入口函數(shù),以所述入口函數(shù)為入口點(diǎn)生成到各個(gè)組件的入口控制流程圖;通過所述入口點(diǎn)對所述待檢測應(yīng)用軟件進(jìn)行建模構(gòu)造全程序控制流程圖,結(jié)合程序結(jié)構(gòu)遍歷進(jìn)行API誤用可達(dá)性分析和常量傳播分析篩選出候選可疑漏洞; 所述動(dòng)態(tài)分析的主要內(nèi)容為:針對不同類型的漏洞設(shè)計(jì)不同的模塊對所述靜態(tài)分析得到的候選可疑漏洞進(jìn)行漏洞觸發(fā),記錄所述候選可疑漏洞的行為,最終給出所述待檢測應(yīng)用軟件的漏洞安全評估。2.根據(jù)權(quán)利要求1所述的Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測方法,其特征在于:所述靜態(tài)分析中的候選可疑漏洞的檢測包括: WebView漏洞檢測:a、遠(yuǎn)程執(zhí)行漏洞檢測:targetSDK是否小與17,并檢測是否調(diào)用了 addjavascriptlnterface 接口,是否調(diào)用了 removejavascriptlnterface 移除系統(tǒng)內(nèi)置的暴露接口 ;b、file域隱私泄露漏洞檢測:檢測4.1以下的應(yīng)用的webview是否存在setAllowFi IeAccessFromFi IeURI s 與 setAllowUniversalAccessFromFi IeURIs 誤用; Android HTTPS中間人攻擊漏洞檢測:a、檢測是否存在使用setHostnameVerifier(ALLOff_ALL_HOSTNAME_VERIFIER) ;b、是否自定義 X509TrustManager 不校驗(yàn)證書; 文件權(quán)限誤用檢測:檢測 Database,Shared Preferences,Internal Storage 安全風(fēng)險(xiǎn),其中對相關(guān)的文件分別進(jìn)行API誤用可達(dá)分析,并分析是否使用MODE_WORLD_READABLE或M0DE_W0RLD_WRITEABLE模式創(chuàng)建文件; 密碼學(xué)誤用API檢測:通過靜態(tài)分析一系列的加密函數(shù),所述加密函數(shù)包括Cipher.doFinal,KeySpec初始化函數(shù),通過檢查所述加密函數(shù)的參數(shù)值,檢測是否存在密碼學(xué)API誤用; Android通用拒絕服務(wù)漏洞特征定位檢測:通過可達(dá)分析,確認(rèn)應(yīng)用組件有關(guān)intent處理extras函數(shù)的位置,記錄解析該組件接收intent的特征,以便于進(jìn)行拒絕服務(wù)檢測; 配置文件錯(cuò)誤檢測:allowBackup安全風(fēng)險(xiǎn),暴露組件安全風(fēng)險(xiǎn),可調(diào)試安全風(fēng)險(xiǎn)。3.根據(jù)權(quán)利要求1所述的Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測方法,其特征在于:所述動(dòng)態(tài)分析中不同類型的漏洞包括:與網(wǎng)絡(luò)相關(guān)漏洞、與文件操作相關(guān)漏洞及與組件IPC相關(guān)漏洞。4.根據(jù)權(quán)利要求3所述的Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測方法,其特征在于:針對所述不同類型的漏洞的測試方法如下: 與網(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)檢測的webview漏洞,后期有關(guān)網(wǎng)絡(luò)部分的API誤用漏洞動(dòng)態(tài)測試可在其進(jìn)行擴(kuò)展; 與文件操作相關(guān)漏洞:通過運(yùn)行應(yīng)用,觸發(fā)其相應(yīng)API,通過adb shell對其/data/data目錄下的所屬權(quán)限進(jìn)行文件API誤用類漏洞進(jìn)行驗(yàn)證,對于新類型的API誤用漏洞,對其進(jìn)行動(dòng)態(tài)測試可以在其基礎(chǔ)上增加模塊; 與組件IPC相關(guān)漏洞:通過靜態(tài)分析解析出的intent特征進(jìn)行畸形數(shù)據(jù)的構(gòu)造,生成動(dòng)態(tài)測試數(shù)據(jù),嘗試觸發(fā)Android通用拒絕服務(wù)漏洞。
【專利摘要】本發(fā)明涉及一種 Android應(yīng)用軟件API誤用類漏洞自動(dòng)化檢測方法,包括靜態(tài)分析和動(dòng)態(tài)分析:靜態(tài)分析的主要內(nèi)容為:結(jié)合Android應(yīng)用軟件特點(diǎn)進(jìn)行建模構(gòu)造全程序控制流程圖,結(jié)合程序結(jié)構(gòu)遍歷進(jìn)行API誤用可達(dá)性分析和常量傳播分析篩選出候選可疑漏洞;動(dòng)態(tài)分析的主要內(nèi)容為:針對不同類型的漏洞設(shè)計(jì)不同的模塊對所述靜態(tài)分析得到的候選可疑漏洞進(jìn)行漏洞觸發(fā),記錄所述候選可疑漏洞的行為,最終給出該應(yīng)用的漏洞安全評估。本發(fā)明采用動(dòng)態(tài)靜態(tài)結(jié)合的方式對存在的API誤用類漏洞進(jìn)行檢測,減少市面上靜態(tài)檢測存在的誤報(bào)率,同時(shí)提高動(dòng)態(tài)檢測的覆蓋率。
【IPC分類】G06F21/56, G06F21/57
【公開號(hào)】CN104933362
【申請?zhí)枴緾N201510328402
【發(fā)明人】林柏鋼, 李宇翔, 葉倩鴻, 倪一濤, 楊旸, 何蕭玲, 宋麗珠, 許為
【申請人】福州大學(xué)
【公開日】2015年9月23日
【申請日】2015年6月15日