• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Android應(yīng)用程序漏洞檢測(cè)方法和工具新進(jìn)展

      2024-02-21 04:36:22楊慧婷樊樹銘
      關(guān)鍵詞:漏洞應(yīng)用程序靜態(tài)

      王 斌,李 峰,楊慧婷,樊樹銘

      (國網(wǎng)新疆電力有限公司電力科學(xué)研究院,新疆 烏魯木齊 830011)

      0 引 言

      Android是移動(dòng)設(shè)備和智能設(shè)備的主流操作系統(tǒng)之一,然而,由于開發(fā)生命周期較短且沒有集成適當(dāng)?shù)陌踩珯C(jī)制,尤其是Android APP在發(fā)布時(shí)并未強(qiáng)迫檢測(cè)代碼漏洞,因此大大增加了APP隱藏漏洞的可能性。

      作者從ACM,IEEE,Web of Science,EI ScienceDirect和中文核心數(shù)據(jù)庫檢索并查閱了2016年至2022年發(fā)表相關(guān)的687篇英文文獻(xiàn)和32篇中文文獻(xiàn),從中選取了70篇重要的文獻(xiàn)和數(shù)據(jù)集進(jìn)行了引用和總結(jié)。

      1 Android系統(tǒng)安全與漏洞

      由于移動(dòng)設(shè)備很容易丟失或被盜,可以隨時(shí)隨地與多個(gè)網(wǎng)絡(luò)連接,并且由于多數(shù)為個(gè)人使用設(shè)備,因此Android系統(tǒng)包含更多的隱私數(shù)據(jù),傳統(tǒng)的安全機(jī)制不足以應(yīng)對(duì)Android系統(tǒng)。Mayrhofer等[1]認(rèn)為惡意行為(包括獲取設(shè)備的物理訪問權(quán)、連接不受信任的網(wǎng)絡(luò)、安裝和運(yùn)行不受信任應(yīng)用程序、執(zhí)行未測(cè)試的代碼塊和內(nèi)容等)也應(yīng)作為Android系統(tǒng)的漏洞威脅,并提出了Android安全模型包括的規(guī)則:多方同意(multi-party consent)、開放生態(tài)系統(tǒng)訪問(open eco-system access)、安全和兼容性要求(security and compatibility requirements)、工廠將設(shè)備恢復(fù)到安全狀態(tài)(factory restores the device to a safe state)以及應(yīng)用程序的安全原則(applications’ security principles)等。Zhang等[2]提出了Android系統(tǒng)的三種安全機(jī)制:進(jìn)程沙盒(process sandbox)、簽名機(jī)制(signature mechanism)和權(quán)限機(jī)制(permission mechanism)。

      Gao等[3]總結(jié)了Android APP漏洞產(chǎn)生的具體來源:安全套接字層(Secure Sockets Layer)、傳輸層安全命令(Transport Layer Security Commands)、權(quán)限(permissions)、Web視圖(Web views)、密鑰存儲(chǔ)(key stores)、碎片(fragments)、加密(encryptions)、意圖(intents)、意圖過濾器(intent ilters)和泄漏(leaks)等。此外,用戶的錯(cuò)誤操作也會(huì)導(dǎo)致風(fēng)險(xiǎn),Malik[4]指出多數(shù)安全問題都是由用戶的操作引起的。

      CyBOK組織[5]給出了Android系統(tǒng)的幾種典型漏洞:內(nèi)存管理漏洞(memory management vulnerabilities)、結(jié)構(gòu)化輸出生成漏洞(structured output generation vulnerabilities)、競(jìng)爭(zhēng)條件漏洞(race condition vulnerabilities)、API漏洞(API vulnerabilities)和側(cè)通道漏洞(side-channel vulnerabilities)。Garg等[6]列出了563個(gè)與Android相關(guān)的漏洞,包括獲取特權(quán)和信息(gain privileges and information)、內(nèi)存損壞(memory corruption)、拒絕服務(wù)(DoS)、惡意代碼執(zhí)行(malicious code execution)、溢出(overflow)和繞過安全措施(bypass security measures)等。Linares-Vasquez等[7]通過實(shí)證研究討論了Android相關(guān)漏洞的類型、可能受到漏洞影響的Android層和子系統(tǒng),以及漏洞的生存能力,囊括了來自CVE[8]和Android官方安全公告[9]的660個(gè)漏洞,其中大多數(shù)漏洞都可能來自數(shù)據(jù)處理問題、訪問控制、內(nèi)存緩沖區(qū)和不正確的輸入驗(yàn)證等。

      2 Android應(yīng)用程序的特征提取方法

      特征提取是進(jìn)行漏洞檢測(cè)的基礎(chǔ)。Android應(yīng)用程序的特征提取有兩個(gè)主要路徑:一是檢測(cè)源代碼中的結(jié)構(gòu)特征,二是檢測(cè)應(yīng)用程序安裝包(APK)執(zhí)行時(shí)的行為特征。特征提取方法主要包括靜態(tài)分析法、動(dòng)態(tài)分析法和混合分析法。

      2.1 靜態(tài)分析法

      靜態(tài)分析法檢查程序代碼結(jié)構(gòu)中隱藏的特征,程序代碼的獲取有兩種方式,除了開發(fā)人員直接対編寫的源代碼進(jìn)行分析外,更普遍的是對(duì)Android APK實(shí)施逆向工程獲得源代碼。Garg等[10]總結(jié)了靜態(tài)分析的四個(gè)關(guān)鍵因素:分析技術(shù)(analysis techniques)、敏感性分析(sensitivity analysis)、數(shù)據(jù)結(jié)構(gòu)(data structure)和代碼表示(code representation)。除了源代碼,Android應(yīng)用程序還包含若干重要的XML文件,例如AndroidManifest、用戶界面布局和應(yīng)用程序所需的資源。因此,靜態(tài)分析對(duì)源代碼和XML文件進(jìn)行分析,分別稱為代碼分析法和清單分析法。代碼分析法從源代碼文件中提取API調(diào)用(API calls)、信息流(information flow)、污點(diǎn)跟蹤(taint tracking)、本地代碼(native code)、明文分析(clear-text analysis)和操作碼(opcodes)等信息。清單分析法從Manifest.xml文件中提取包名稱(package names)、權(quán)限(permissions)、活動(dòng)(activities)、服務(wù)(services)、意圖(intents)和提供者(providers)。

      2.2 動(dòng)態(tài)分析法

      動(dòng)態(tài)分析關(guān)注程序在運(yùn)行時(shí)的實(shí)際行為,通過在沙箱運(yùn)行時(shí)環(huán)境中執(zhí)行APK來提取特征,因此需要一個(gè)完整的產(chǎn)品(APK)。Garg等[10]給出了動(dòng)態(tài)分析的兩個(gè)關(guān)鍵因素:檢查級(jí)別(inspection level)和方法。檢查級(jí)別分為內(nèi)核(kernel)、應(yīng)用(application)和模擬器(emulator)。方法包括污點(diǎn)分析(taint analysis)和異常檢測(cè)(anomaly detection)。

      2.3 混合分析法

      混合分析法同時(shí)使用靜態(tài)分析和動(dòng)態(tài)分析來檢測(cè)給定的應(yīng)用程序。多數(shù)混合分析方法先采用靜態(tài)分析,再采用動(dòng)態(tài)分析進(jìn)行漏洞檢測(cè)。Nawaz等[11]同時(shí)使用靜態(tài)特征(權(quán)限和意圖)和動(dòng)態(tài)特性(IP、電子郵件和URL)來檢測(cè)與應(yīng)用程序相關(guān)的各種漏洞。APKTool[12]首先對(duì)APK進(jìn)行反編譯,在提取數(shù)據(jù)后,使用分解的索引文件創(chuàng)建靜態(tài)特征向量以進(jìn)行進(jìn)一步分析。隨后APK文件在模擬器中執(zhí)行,以提取動(dòng)態(tài)特征的行為。Tang等[13]使用靜態(tài)分析法獲取元數(shù)據(jù)和數(shù)據(jù)流,使用動(dòng)態(tài)分析法檢測(cè)API掛鉤(hooks)和可執(zhí)行腳本。

      3 基于機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的方法

      目前在Android漏洞檢測(cè)中常用的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)方法主要包括:NB(Naive Bayesian)、LR(Logistic Regression)、DT(Decision Tree)、RF(Random Forest)、GB(Gradient Boosting)、LSTM(Long Short-Term Memory)、CNN(Convolutional Neural Networks)、DNN(Deep Neural Networks)、RNN(Recurrent Neural Network)和MLP(Multilayer Perceptron)等。為了訓(xùn)練機(jī)器學(xué)習(xí)/深度學(xué)習(xí)模型,需要進(jìn)行特征抽取。后續(xù)依據(jù)特征抽取的靜態(tài)、動(dòng)態(tài)或混合方法進(jìn)行分類總結(jié)。

      3.1 基于靜態(tài)分析的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)方法

      Vulvet[14]是一個(gè)基于Soot[15]的框架,使用靜態(tài)分析方法和多層多管齊下(multi-tier multi-pronged)的分析技術(shù)檢測(cè)Android漏洞,并給出了一個(gè)針對(duì)漏洞的自動(dòng)補(bǔ)丁生成過程。該框架在3 700個(gè)應(yīng)用程序上達(dá)到了95.23%的準(zhǔn)確率和97.5%的F-score。其局限性在于不能分析和修補(bǔ)本機(jī)代碼中的漏洞,也不支持Java相關(guān)和動(dòng)態(tài)代碼加載,并直接將從外部存儲(chǔ)讀取的所有文件標(biāo)記為惡意文件。Sun等[16]提出了WaleDetector模型,使用極限學(xué)習(xí)機(jī)(Extreme Learning Machine)進(jìn)行Android惡意代碼和漏洞的檢測(cè),涉及了敏感權(quán)限、程序功能和API調(diào)用等特征。WaleDetector在包含騰訊應(yīng)用寶商店的625個(gè)良性應(yīng)用程序和Contagio網(wǎng)站的525個(gè)惡意應(yīng)用程序的數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn),除了F-score外,其檢測(cè)率遠(yuǎn)高于其它商業(yè)軟件。秦佳偉等[17]提出了一種基于代碼切片的程序特征提取方法,基于Bi-LSTM和注意力機(jī)制提出了一個(gè)上下文感知的Android APP漏洞檢測(cè)模型VulDGArcher,在包含隱式Intent通信漏洞和Pending Intent權(quán)限繞過漏洞的41 812個(gè)代碼片段(其中漏洞代碼片段有16 218個(gè))的數(shù)據(jù)集上取得了96%的準(zhǔn)確率。

      數(shù)據(jù)流分析對(duì)于檢測(cè)惡意代碼和應(yīng)用程序也很重要。Yang等[18]提出了一種主題特定數(shù)據(jù)流簽名的挖掘方法用于描述惡意程序特征,分析了3 691個(gè)無害程序和1 612個(gè)惡意應(yīng)用程序并利用LDA(Latent Dirichlet Allocation)和遺傳算法建立主題模型,發(fā)現(xiàn)主題特定數(shù)據(jù)流簽名比總體數(shù)據(jù)低簽名能更好地描述惡意程序和漏洞。

      從APK文件或可移植可執(zhí)行(Portable Executable,PE)文件中可抽取出源代碼,因此可通過對(duì)其靜態(tài)分析發(fā)現(xiàn)漏洞。Kim等[19]基于PE文件結(jié)構(gòu)進(jìn)行分析,使用了RF,GB,DT和CNN模型對(duì)惡意代碼和安全代碼進(jìn)行分類,達(dá)到98.77%的準(zhǔn)確率。Bilgin等[20]構(gòu)建了能夠在APP發(fā)布之前預(yù)測(cè)軟件代碼漏洞的機(jī)器學(xué)習(xí)模型,使用了來自NIST[21],SAMATE[22]和SATE IV Juliet Test Suites[23]數(shù)據(jù)集的Python,C和C++源代碼,將其表達(dá)為抽象語法樹進(jìn)行訓(xùn)練,在平衡數(shù)據(jù)集上部分漏洞取得了近90%的準(zhǔn)確率,其缺點(diǎn)是無法精確定位漏洞代碼的位置。邵帥等[24]提出了一種基于機(jī)器學(xué)習(xí)的Android APP組件暴露漏洞的分析方法,結(jié)合組件暴露漏洞模型,建立了相應(yīng)的機(jī)器學(xué)習(xí)系統(tǒng),能夠?qū)ndroid漏洞特征進(jìn)行提取、數(shù)據(jù)清理和向量化。在1 000個(gè)Android APK組成的數(shù)據(jù)集上取得了90%以上的準(zhǔn)確率。

      3.2 基于動(dòng)態(tài)分析的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)方法

      在APP執(zhí)行時(shí),動(dòng)態(tài)分析技術(shù)可以抽取特征,從而訓(xùn)練機(jī)器學(xué)習(xí)/深度學(xué)習(xí)模型檢測(cè)漏洞。Mahindru等[25]使用了動(dòng)態(tài)分析和NB,K-Star,RF,DT和Simple Logistic模型檢測(cè)漏洞和惡意程序,其中Simple Logistic模型表現(xiàn)最好,準(zhǔn)確度達(dá)到99.7%,召回率達(dá)到99.6%。

      Wu等[26]討論了利用深度學(xué)習(xí)模型進(jìn)行漏洞檢測(cè)的機(jī)制,比較了CNN,LSTM,CNN-LSTM等深度學(xué)習(xí)模型,其中CNN-LSTM取得了最佳的83.6%的準(zhǔn)確率。Pang等[27]利用DNN對(duì)漏洞代碼進(jìn)行預(yù)測(cè),利用N-gram分析和統(tǒng)計(jì)特征構(gòu)建特征向量,在Java代碼編寫的APP代碼中進(jìn)行了驗(yàn)證。Gupta等[28]探討了基于機(jī)器學(xué)習(xí)的漏洞檢測(cè)規(guī)則抽取方法,對(duì)比了32種監(jiān)督學(xué)習(xí)方法,其中J48機(jī)器學(xué)習(xí)算法取得了最佳的96%的準(zhǔn)確率。Sikder等[29]提出了一種名為6th Sense的上下文感知入侵檢測(cè)系統(tǒng),利用了NB,馬爾可夫鏈和邏輯模型樹等模型,通過移動(dòng)設(shè)備中的傳感器數(shù)據(jù)的變化來檢測(cè)漏洞。Malik等[30]利用機(jī)器學(xué)習(xí)模型和系統(tǒng)調(diào)用異常進(jìn)行漏洞檢測(cè),使用了kNN,LSTM和遺傳算法LSTM等模型,精確度、召回率和F-Score都超過了85%,其中遺傳算法LSTM的表現(xiàn)略好于其它算法。

      3.3 基于混合分析的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)方法

      Lu等[31]利用混合分析特征和機(jī)器學(xué)習(xí)方法進(jìn)行漏洞檢測(cè),應(yīng)用了DT,ID3(Iterative Dichotomiser 3),C4.5,NB和AB(Adaptive Boosting)等多種算法,重點(diǎn)研究了與Android Intent及其組合相關(guān)的漏洞檢測(cè)。實(shí)驗(yàn)數(shù)據(jù)集包括150個(gè)有漏洞和150個(gè)無漏洞的APP,平均檢測(cè)準(zhǔn)確率為77%。

      Garg等[32]提出了一種用于Android漏洞檢測(cè)的并行分類模式,利用了權(quán)限、API調(diào)用、版本、服務(wù)、已用庫、廣播接收器等靜態(tài)特征和系統(tǒng)調(diào)用、網(wǎng)絡(luò)調(diào)用等動(dòng)態(tài)特征,對(duì)Android中零日(zero-day)惡意軟件和其它漏洞進(jìn)行檢測(cè),其中MLP獲得了96.11%的最高準(zhǔn)確率。進(jìn)一步考慮并行分類的效率,發(fā)現(xiàn)最大概率法是最優(yōu)方案,可獲得98.27%的準(zhǔn)確率。

      Jannat等[33]首先利用Androguard工具[34]從APK文件中提取Manifest數(shù)據(jù)并轉(zhuǎn)化為Json文件用于靜態(tài)分析,之后利用Kaggle[35]和MalGenome[36]數(shù)據(jù)集對(duì)LR,SVM和kNN等機(jī)器學(xué)習(xí)模型進(jìn)行訓(xùn)練,在動(dòng)態(tài)執(zhí)行APK時(shí)利用訓(xùn)練好的機(jī)器學(xué)習(xí)模型開展漏洞檢測(cè),準(zhǔn)確率可達(dá)93%。Surendran等[37]提出了一種基于樹增強(qiáng)樸素貝葉斯網(wǎng)絡(luò)的機(jī)制,利用權(quán)限、系統(tǒng)和API調(diào)用等特征進(jìn)行建模。在AZ[38],Drebin[39],Android Malware Dataset[40]和GitHub[41]等數(shù)據(jù)集上的實(shí)驗(yàn)取得了97%的準(zhǔn)確率。

      表1總結(jié)了主流的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)模型,描述了其方法、分析技術(shù)、使用的方法或框架、數(shù)據(jù)集、準(zhǔn)確性及局限性。

      4 常規(guī)漏洞檢測(cè)方法

      常規(guī)方法指非基于機(jī)器學(xué)習(xí)的方法,包括基于啟發(fā)式方法、形式化方法等,該文也依據(jù)特征抽取的靜態(tài)、動(dòng)態(tài)或混合技術(shù)對(duì)其進(jìn)行分類總結(jié)。

      4.1 基于靜態(tài)分析的常規(guī)方法

      Bagheri等[42]引入了一個(gè)用于檢測(cè)基于Alloy語言[43]的Android許可協(xié)議中安全問題的規(guī)范模型,使用靜態(tài)分析技術(shù)自動(dòng)分析和識(shí)別協(xié)議中的潛在缺陷,能夠識(shí)別三種典型的漏洞:URI權(quán)限漏洞、不當(dāng)委派漏洞和自定義權(quán)限漏洞。胡英杰等[44]提出了基于靜態(tài)污點(diǎn)分析的Android隱私泄露檢測(cè)方法,首先創(chuàng)建敏感權(quán)限與API之間的映射關(guān)系,再生成函數(shù)調(diào)用圖,實(shí)現(xiàn)了APP中潛在隱私數(shù)據(jù)泄露行為的檢測(cè)。

      Chang等[45]提出了一個(gè)漏洞解析器模型,首先利用phython腳本執(zhí)行APK解壓縮,然后利用Manifest.xml解析器將APK反編譯,再用Dex解析器將其進(jìn)行處理獲得漏洞向量,并將每個(gè)漏洞劃分為嚴(yán)重、警告、通知和建議四個(gè)級(jí)別。

      由于第三方函數(shù)庫的廣泛應(yīng)用,因此對(duì)其進(jìn)行漏洞檢測(cè)非常必要。ATVHunter工具[46]可用于對(duì)第三方庫的可靠版本檢測(cè),能夠提取不同版本的第三方庫中的漏洞,并給出控制流圖和操作碼等詳細(xì)信息。實(shí)驗(yàn)數(shù)據(jù)集包含189 545個(gè)第三方庫,共有3 006 676個(gè)版本,涵蓋了1 180個(gè)常見的易受攻擊漏洞。ATVHunter在第三方庫級(jí)別獲得了98.58%的準(zhǔn)確率和88.79%的召回率,在版本級(jí)別獲得了90.55%的準(zhǔn)確率和87.16%的召回率。馬杰[47]選擇了35個(gè)使用較為廣泛的非官方SDK,使用FlowDroid[48]和Droidbox軟件工具并結(jié)合污點(diǎn)追蹤、二進(jìn)制插值方法進(jìn)行了分析研究。結(jié)果表明有19個(gè)(54.3%)SDK存在SSL/TLS錯(cuò)誤配置、不合理的敏感數(shù)據(jù)權(quán)限分配、HTTP的非必要調(diào)用、用戶日志泄漏、開發(fā)人員考慮不周等漏洞和威脅。為了使開發(fā)者能遵守第三庫的安全規(guī)約,張磊等[49]提出了一個(gè)基于安全提示的Android APP通用漏洞檢測(cè)框架TipTracer,定義了一個(gè)能形式化描述安全規(guī)約的安全性語言,并據(jù)此對(duì)已知的安全規(guī)約進(jìn)行形式化表述,開發(fā)了一個(gè)靜態(tài)代碼分析器,用于檢查應(yīng)用程序是否滿足安全規(guī)約,并通過實(shí)例對(duì)TipTracer進(jìn)行了驗(yàn)證。

      由于Android Web視圖對(duì)象也可能導(dǎo)致漏洞,El-Zawawy[50]提出了一個(gè)WebVSec框架對(duì)其進(jìn)行檢測(cè),主要涉及四種漏洞:Interface to Interface,Interface to WebViewClient,WebViewClient to WebViewClient和Reverse。實(shí)驗(yàn)分析了AndroZoo[51]數(shù)據(jù)集中的2 000個(gè)Android應(yīng)用程序,檢測(cè)到48個(gè)具有漏洞的應(yīng)用程序,其檢測(cè)一個(gè)應(yīng)用程序的平均速度為49秒。其缺陷在于僅考慮了JavaScript的代碼而不能處理Java代碼生成的WebView漏洞。朱璋穎等[52]提出了一種基于Soot構(gòu)建的數(shù)據(jù)流分析的靜態(tài)檢測(cè)方案,以檢測(cè)由于WebView跨域訪問漏洞引起的應(yīng)用克隆攻擊。

      DroidRA模型[53]通過馴化App中的關(guān)聯(lián)關(guān)系來增強(qiáng)靜態(tài)分析的能力,通過監(jiān)測(cè)Android應(yīng)用程序,以顯式標(biāo)準(zhǔn)Java調(diào)用來增強(qiáng)關(guān)聯(lián)關(guān)系,建立約束解決機(jī)制用于分解關(guān)聯(lián)關(guān)系調(diào)用。其優(yōu)點(diǎn)是可以發(fā)現(xiàn)危險(xiǎn)代碼,如敏感數(shù)據(jù)泄漏和敏感API調(diào)用,缺點(diǎn)在于單入口點(diǎn)方法無法涵蓋所有的相關(guān)調(diào)用。

      4.2 基于動(dòng)態(tài)分析的常規(guī)方法

      考慮動(dòng)態(tài)分析的傳統(tǒng)方法研究相對(duì)較少。Qin等[54]提出了一種啟發(fā)式漏洞搜索算法VulArcher來驗(yàn)證分析的準(zhǔn)確率,輸入可能導(dǎo)致漏洞的敏感API與方法、漏洞修復(fù)規(guī)則以及漏洞觸發(fā)規(guī)則,輸出漏洞的詳細(xì)代碼片段及所在路徑。重點(diǎn)分析了四種漏洞:阿里云OSS憑證泄露漏洞、證書驗(yàn)證不當(dāng)、Web View遠(yuǎn)程代碼執(zhí)行漏洞、Web View繞過證書驗(yàn)證漏洞(來自中國國家漏洞數(shù)據(jù)庫[55]、CVE[11]和CWE[56])。在6 177個(gè)Android應(yīng)用程序(瀏覽器、購物和金融類)的實(shí)驗(yàn)取得了91%的準(zhǔn)確率。其缺點(diǎn)是使用的數(shù)據(jù)集和第三方工具較舊,無法檢測(cè)最新的漏洞。

      靖二霞等[57]提出了一種基于Dalvik寄存器污點(diǎn)分析的Android應(yīng)用漏洞檢測(cè)方法,實(shí)現(xiàn)對(duì)污點(diǎn)的前向分析和后向分析功能,最后使用腳本執(zhí)行器連接預(yù)分析模塊、污點(diǎn)分析模塊和漏洞檢測(cè)腳本,共同實(shí)施漏洞檢測(cè)。

      石加玉等[58]設(shè)計(jì)了基于libdft API程序脆弱性檢測(cè)工具,可直接對(duì)二進(jìn)制程序進(jìn)行檢測(cè)。結(jié)果表明該工具可有效檢測(cè)出心臟滴血攻擊、格式化字符串攻擊、數(shù)據(jù)泄露、ReturnToLibc攻擊等多種程序脆弱性漏洞。

      4.3 基于混合分析的常規(guī)方法

      Shezan等[59]利用混合分析進(jìn)行了實(shí)證研究,選擇了三種質(zhì)量工具:AndroBugs[60],SandDroid[61]和Qark[62]來測(cè)試和發(fā)現(xiàn)漏洞。從隨機(jī)選擇的EATL應(yīng)用商店[63]中的29個(gè)APP和Google Play商店中的6個(gè)APP中檢測(cè)到了8個(gè)常見漏洞,涉及到存儲(chǔ)訪問、Web視圖、SQLite數(shù)據(jù)庫加密、意圖、廣告模塊、過時(shí)或敏感的API、短信、電話和Android調(diào)試模式等。

      Wang等[64]提出了一種先執(zhí)行靜態(tài)分析后進(jìn)行動(dòng)態(tài)分析的混合漏洞挖掘方法。在靜態(tài)分析中,使用Dex2Jar[65]和JD-GUI工具庫[66]對(duì)APK文件進(jìn)行反編譯以獲取源文件,再通過特征提取過程創(chuàng)建API函數(shù)、特權(quán)、組件和庫文件的特征向量,然后通過掃描引擎基于漏洞規(guī)則庫執(zhí)行數(shù)據(jù)流分析、正則表達(dá)式匹配和文件檢測(cè),以獲得靜態(tài)分析結(jié)果。隨后利用模糊測(cè)試技術(shù)進(jìn)行動(dòng)態(tài)分析,包括測(cè)試用例、半有效數(shù)據(jù)、執(zhí)行數(shù)據(jù)、污點(diǎn)跟蹤和監(jiān)控異常等。通過在華為應(yīng)用市場(chǎng)上下載的290個(gè)應(yīng)用程序進(jìn)行測(cè)試,該模型獲得了95%以上的漏洞檢測(cè)準(zhǔn)確率。

      AndroShield[67]是一個(gè)基于混合分析的框架,采用了APK逆向工程、清單文件解碼、元數(shù)據(jù)提取、靜態(tài)分析和動(dòng)態(tài)分析等方法,能夠給出APP風(fēng)險(xiǎn)級(jí)別和識(shí)別出的漏洞。

      針對(duì)同家族惡意軟件行為具有相似性的特點(diǎn),陳鵬等[68]提出通過靜態(tài)分析與動(dòng)態(tài)運(yùn)行程序相結(jié)合的方式度量軟件行為的相似性實(shí)現(xiàn)漏洞檢測(cè)。通過逆向工程和Soot代碼轉(zhuǎn)換框架獲取程序控制流圖,利用行為子圖匹配算法對(duì)程序行為相似性進(jìn)行度量,通過自動(dòng)化測(cè)試框架運(yùn)行程序。實(shí)驗(yàn)表明該方法能夠準(zhǔn)確度量程序之間行為的相似性,在準(zhǔn)確率上相較于Androguard有大幅提升。

      表2總結(jié)了主流的漏洞檢測(cè)傳統(tǒng),描述了其方法、分析技術(shù)、使用的方法或框架、數(shù)據(jù)集、準(zhǔn)確性及局限性。

      表2 常規(guī)的Android漏洞檢測(cè)方法對(duì)比

      5 結(jié)束語

      該文對(duì)2016年至2022年6月最新的Android源代碼漏洞檢測(cè)技術(shù)進(jìn)行了總結(jié),回顧了應(yīng)用程序和代碼分析技術(shù),以及用于檢測(cè)漏洞的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)和常規(guī)方法。

      雖然目前已有若干與惡意軟件相關(guān)的數(shù)據(jù)集,但仍需要Android專用的源代碼漏洞數(shù)據(jù)集,專門用于進(jìn)一步的實(shí)驗(yàn),以訓(xùn)練ML模型來高精度地檢測(cè)和預(yù)測(cè)代碼漏洞。此外,建議引入一種全面的代碼分析機(jī)制,在移動(dòng)程序開發(fā)時(shí)就能識(shí)別安全問題,例如將檢測(cè)方法作為工具或插件集成到Android應(yīng)用程序開發(fā)環(huán)境中。同時(shí)需要研究漏洞產(chǎn)生原因的自動(dòng)分析方法,如將機(jī)器/深度學(xué)習(xí)的可解釋性方法應(yīng)用于漏洞原因分析。

      猜你喜歡
      漏洞應(yīng)用程序靜態(tài)
      漏洞
      靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
      刪除Win10中自帶的應(yīng)用程序
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      機(jī)床靜態(tài)及動(dòng)態(tài)分析
      具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
      50t轉(zhuǎn)爐靜態(tài)控制模型開發(fā)及生產(chǎn)實(shí)踐
      上海金屬(2013年6期)2013-12-20 07:57:59
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      铅山县| 时尚| 怀安县| 龙门县| 筠连县| 石楼县| 曲阜市| 前郭尔| 鹰潭市| 北海市| 观塘区| 休宁县| 建始县| 金秀| 车致| 娱乐| 雷山县| 柯坪县| 山丹县| 西藏| 保亭| 大厂| 汉沽区| 论坛| 湘潭县| 固始县| 博爱县| 常德市| 神农架林区| 伊春市| 丰台区| 伊宁县| 江安县| 泽州县| 靖边县| 荆门市| 东乡县| 张北县| 江西省| 木里| 阿拉善盟|