999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android應用程序漏洞檢測方法和工具新進展

2024-02-21 04:36:22楊慧婷樊樹銘
計算機技術與發展 2024年2期
關鍵詞:分析檢測方法

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

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

0 引 言

Android是移動設備和智能設備的主流操作系統之一,然而,由于開發生命周期較短且沒有集成適當的安全機制,尤其是Android APP在發布時并未強迫檢測代碼漏洞,因此大大增加了APP隱藏漏洞的可能性。

作者從ACM,IEEE,Web of Science,EI ScienceDirect和中文核心數據庫檢索并查閱了2016年至2022年發表相關的687篇英文文獻和32篇中文文獻,從中選取了70篇重要的文獻和數據集進行了引用和總結。

1 Android系統安全與漏洞

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

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

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

2 Android應用程序的特征提取方法

特征提取是進行漏洞檢測的基礎。Android應用程序的特征提取有兩個主要路徑:一是檢測源代碼中的結構特征,二是檢測應用程序安裝包(APK)執行時的行為特征。特征提取方法主要包括靜態分析法、動態分析法和混合分析法。

2.1 靜態分析法

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

2.2 動態分析法

動態分析關注程序在運行時的實際行為,通過在沙箱運行時環境中執行APK來提取特征,因此需要一個完整的產品(APK)。Garg等[10]給出了動態分析的兩個關鍵因素:檢查級別(inspection level)和方法。檢查級別分為內核(kernel)、應用(application)和模擬器(emulator)。方法包括污點分析(taint analysis)和異常檢測(anomaly detection)。

2.3 混合分析法

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

3 基于機器學習/深度學習的方法

目前在Android漏洞檢測中常用的機器學習/深度學習方法主要包括: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)等。為了訓練機器學習/深度學習模型,需要進行特征抽取。后續依據特征抽取的靜態、動態或混合方法進行分類總結。

3.1 基于靜態分析的機器學習/深度學習方法

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

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

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

3.2 基于動態分析的機器學習/深度學習方法

在APP執行時,動態分析技術可以抽取特征,從而訓練機器學習/深度學習模型檢測漏洞。Mahindru等[25]使用了動態分析和NB,K-Star,RF,DT和Simple Logistic模型檢測漏洞和惡意程序,其中Simple Logistic模型表現最好,準確度達到99.7%,召回率達到99.6%。

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

3.3 基于混合分析的機器學習/深度學習方法

Lu等[31]利用混合分析特征和機器學習方法進行漏洞檢測,應用了DT,ID3(Iterative Dichotomiser 3),C4.5,NB和AB(Adaptive Boosting)等多種算法,重點研究了與Android Intent及其組合相關的漏洞檢測。實驗數據集包括150個有漏洞和150個無漏洞的APP,平均檢測準確率為77%。

Garg等[32]提出了一種用于Android漏洞檢測的并行分類模式,利用了權限、API調用、版本、服務、已用庫、廣播接收器等靜態特征和系統調用、網絡調用等動態特征,對Android中零日(zero-day)惡意軟件和其它漏洞進行檢測,其中MLP獲得了96.11%的最高準確率。進一步考慮并行分類的效率,發現最大概率法是最優方案,可獲得98.27%的準確率。

Jannat等[33]首先利用Androguard工具[34]從APK文件中提取Manifest數據并轉化為Json文件用于靜態分析,之后利用Kaggle[35]和MalGenome[36]數據集對LR,SVM和kNN等機器學習模型進行訓練,在動態執行APK時利用訓練好的機器學習模型開展漏洞檢測,準確率可達93%。Surendran等[37]提出了一種基于樹增強樸素貝葉斯網絡的機制,利用權限、系統和API調用等特征進行建模。在AZ[38],Drebin[39],Android Malware Dataset[40]和GitHub[41]等數據集上的實驗取得了97%的準確率。

表1總結了主流的機器學習/深度學習模型,描述了其方法、分析技術、使用的方法或框架、數據集、準確性及局限性。

4 常規漏洞檢測方法

常規方法指非基于機器學習的方法,包括基于啟發式方法、形式化方法等,該文也依據特征抽取的靜態、動態或混合技術對其進行分類總結。

4.1 基于靜態分析的常規方法

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

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

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

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

DroidRA模型[53]通過馴化App中的關聯關系來增強靜態分析的能力,通過監測Android應用程序,以顯式標準Java調用來增強關聯關系,建立約束解決機制用于分解關聯關系調用。其優點是可以發現危險代碼,如敏感數據泄漏和敏感API調用,缺點在于單入口點方法無法涵蓋所有的相關調用。

4.2 基于動態分析的常規方法

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

靖二霞等[57]提出了一種基于Dalvik寄存器污點分析的Android應用漏洞檢測方法,實現對污點的前向分析和后向分析功能,最后使用腳本執行器連接預分析模塊、污點分析模塊和漏洞檢測腳本,共同實施漏洞檢測。

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

4.3 基于混合分析的常規方法

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

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

AndroShield[67]是一個基于混合分析的框架,采用了APK逆向工程、清單文件解碼、元數據提取、靜態分析和動態分析等方法,能夠給出APP風險級別和識別出的漏洞。

針對同家族惡意軟件行為具有相似性的特點,陳鵬等[68]提出通過靜態分析與動態運行程序相結合的方式度量軟件行為的相似性實現漏洞檢測。通過逆向工程和Soot代碼轉換框架獲取程序控制流圖,利用行為子圖匹配算法對程序行為相似性進行度量,通過自動化測試框架運行程序。實驗表明該方法能夠準確度量程序之間行為的相似性,在準確率上相較于Androguard有大幅提升。

表2總結了主流的漏洞檢測傳統,描述了其方法、分析技術、使用的方法或框架、數據集、準確性及局限性。

表2 常規的Android漏洞檢測方法對比

5 結束語

該文對2016年至2022年6月最新的Android源代碼漏洞檢測技術進行了總結,回顧了應用程序和代碼分析技術,以及用于檢測漏洞的機器學習/深度學習和常規方法。

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

猜你喜歡
分析檢測方法
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
隱蔽失效適航要求符合性驗證分析
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
小波變換在PCB缺陷檢測中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 国产综合日韩另类一区二区| 丁香综合在线| 一级毛片免费高清视频| 在线另类稀缺国产呦| 熟女日韩精品2区| 免费看美女毛片| 国产在线专区| 国产91丝袜| 久久精品中文无码资源站| 久久国产香蕉| 四虎成人精品在永久免费| 91久久天天躁狠狠躁夜夜| 精品国产污污免费网站| 亚洲第一视频网| 毛片在线看网站| 色有码无码视频| 欧美综合成人| 中文字幕日韩久久综合影院| 成人午夜久久| 免费国产高清视频| 国产精品99在线观看| 在线a网站| 欧美激情第一欧美在线| 国产成人毛片| 久久久久中文字幕精品视频| 国内精品自在自线视频香蕉 | 国产综合网站| 国产在线91在线电影| 好久久免费视频高清| 国产一区二区丝袜高跟鞋| 色婷婷亚洲十月十月色天| 精品少妇三级亚洲| 亚洲啪啪网| 91欧美在线| 98超碰在线观看| 四虎精品国产永久在线观看| 综合色在线| a毛片基地免费大全| 国产精品第5页| 人妻一本久道久久综合久久鬼色| 欧美午夜网站| 成人在线天堂| 亚洲人成网站日本片| 在线观看免费黄色网址| 伊人久热这里只有精品视频99| 99精品视频九九精品| 成人综合久久综合| 国产精品白浆在线播放| 精品国产成人av免费| 午夜无码一区二区三区在线app| 国产欧美日韩综合在线第一| 理论片一区| 最新亚洲人成无码网站欣赏网| 幺女国产一级毛片| 午夜天堂视频| 亚洲综合婷婷激情| 91九色视频网| 日本成人福利视频| 高清色本在线www| 真人免费一级毛片一区二区| 无码精油按摩潮喷在线播放| 九月婷婷亚洲综合在线| 国产a网站| 国产美女无遮挡免费视频| 国产一级二级三级毛片| 精品国产网站| 草逼视频国产| 午夜人性色福利无码视频在线观看| 色网站免费在线观看| 国产午夜一级毛片| 亚洲人在线| 亚洲中文字幕在线精品一区| 青青热久免费精品视频6| 国产成人精品在线| 国产成人福利在线视老湿机| 国产在线观看第二页| 亚洲无码熟妇人妻AV在线| 亚洲精品欧美日本中文字幕| 91系列在线观看| 亚洲日本一本dvd高清| 久久性妇女精品免费| 人妻精品久久无码区|