余 琴,李 濤,王 頡,萬振華
(1.武漢科技大學 計算機科學與技術(shù)學院,湖北 武漢 430065;2.智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室,湖北 武漢 430065;3.深圳開源互聯(lián)網(wǎng)安全技術(shù)有限公司,廣東 深圳 518000)
近些年來,中國大力推動互聯(lián)網(wǎng)普及工作,手機漸漸成為人們?nèi)粘I畈豢苫蛉钡囊徊糠?。Felt等人[1]對940個應(yīng)用程序進行研究分析,發(fā)現(xiàn)大約有1/3的應(yīng)用程序存在過度調(diào)用隱私權(quán)限的情況?!兑苿討?yīng)用安全形勢分析報告(2020年)》[2]顯示,2020年度收錄存在安全漏洞威脅的APK 860萬余個,同一App普遍存在多個漏洞。其中流氓行為、惡意扣費、廣告推送、隱私信息泄露等惡意行為高達81%,對用戶的個人信息以及財產(chǎn)安全帶來巨大威脅。該文提出了一種面向種群的Android應(yīng)用風險評估模型。從第三方應(yīng)用市場收集多種功能的應(yīng)用程序進行分析和研究,根據(jù)特征權(quán)限使用情況及權(quán)限等級進行風險預(yù)估,利用k-means算法劃分風險等級,最后使用決策樹對聚類結(jié)果進行調(diào)整和優(yōu)化。
Android目前使用的權(quán)限機制在數(shù)據(jù)安全保護方面并沒有取得很好的效果[3]?;跈?quán)限管理的安全機制是Android隱私保護的重要組成部分[4],故權(quán)限機制成為判斷應(yīng)用程序是否存在惡意行為的一個重要因素。
文獻[5]提出了一種輕量級的快速檢測方法,根據(jù)分析特征權(quán)限在惡意應(yīng)用和正常應(yīng)用中使用的頻率來定量其惡意值,通過計算樣本惡意值與規(guī)定的閾值進行比較來判斷樣本的惡意程度。文獻[6]提取應(yīng)用程序聲明和自定義的各類權(quán)限以及動態(tài)檢測獲取執(zhí)行過程中使用到的權(quán)限,利用層次分析法計算權(quán)重,評估應(yīng)用風險值。但是,自定義權(quán)限在第三方應(yīng)用程序中使用頻繁,卜同同等[6]收集的軟件樣本有限,因此難免會出現(xiàn)自定義權(quán)限數(shù)據(jù)集不充分的問題。文獻[7]設(shè)計了一種挖掘權(quán)限頻繁項集的算法來處理應(yīng)用程序權(quán)限列表,構(gòu)建權(quán)限特征關(guān)系庫。但是將不同功能的應(yīng)用混合在一起構(gòu)建數(shù)據(jù)集,忽略了應(yīng)用程序的差異,即沒有考慮到不同權(quán)限對不同功能的應(yīng)用程序的敏感程度是不同的。
傳統(tǒng)的應(yīng)用檢測方法主要是從個體的角度來判斷應(yīng)用的安全性,難以滿足大規(guī)模用戶檢測的需要[8]。文獻[9]借鑒生物學中種群的概念,提出了一種面向種群的適用于大規(guī)模Android應(yīng)用評估和惡意應(yīng)用檢測的方法。通過群體特征分析和種群聚類,進行高效大規(guī)模的應(yīng)用隱私泄露風險評估。但是,聚類結(jié)果缺乏可解釋性。
該文提出了一種面向種群的Android應(yīng)用風險評估模型,可以根據(jù)應(yīng)用程序標簽信息將爬取到的應(yīng)用劃分進不同的種群,并自動提取應(yīng)用權(quán)限列表。然后,根據(jù)權(quán)限使用情況和Android系統(tǒng)權(quán)限等級對未知應(yīng)用進行評估并給出對應(yīng)的風險等級,為用戶在選擇Android應(yīng)用時提供一個較好的參考依據(jù)。整個模型主要由數(shù)據(jù)采集模塊和風險評估模塊組成,系統(tǒng)的流程框架如圖1所示。
圖1 系統(tǒng)流程框架
具有相似功能的應(yīng)用程序類似一個種群,它們所需的系統(tǒng)權(quán)限也相似。在數(shù)據(jù)采集模塊,使用python編寫的爬蟲爬取網(wǎng)站提供的應(yīng)用介紹、評分值、好評率、下載量等相關(guān)信息,同時,根據(jù)類別標簽對應(yīng)用程序進行分類爬取下載,并標上新的群體標簽。把群體作為處理單元,使用逆向分析工具對APK進行反編譯得到AndroidManifest.xml文件,獲取應(yīng)用程序的權(quán)限或權(quán)限組的信息。將獲取到的所有信息存儲在云端數(shù)據(jù)庫中,并建立多維度評價指標體系。利用統(tǒng)計學相關(guān)知識對權(quán)限特征集合進行靜態(tài)分析,根據(jù)統(tǒng)計情況計算單個權(quán)限風險指數(shù),從而獲得種群中應(yīng)用程序的風險值。然后,利用數(shù)據(jù)挖掘中的k-means算法對應(yīng)用程序風險值進行聚類,獲得初步風險等級。為了提高風險評估聚類結(jié)果的可解釋性,使用決策樹將多維度評價指標體系納入應(yīng)用程序風險評估的研究范圍,增強權(quán)限調(diào)用合理性判定。
通過研究Android應(yīng)用權(quán)限的使用情況發(fā)現(xiàn),不同功能的應(yīng)用在權(quán)限申請方面存在較大的差異。將相同功能類型的應(yīng)用作為一個種群,種群類別分為x個類,種群的類別會根據(jù)爬取App總數(shù)的增加而變化,于是類別集合為[8]:
定義1 類別標簽:Class={C1,C2,…,Cx},Cx為每個種群的類別標簽,如新聞閱讀、主題壁紙、社交聊天等類別。
定義2 應(yīng)用個體:Application={Cx,Introduction,Score,Download,Evaluate,PermissionMatrix}。其中,Cx為種群的類別標簽,Introduction為應(yīng)用介紹,Score為應(yīng)用評分,Download為下載量,Evaluate為評價信息,PermissonMatrix 為每個應(yīng)用經(jīng)過權(quán)限預(yù)處理后的權(quán)限信息矩陣,具體定義如下:
定義3 PermissionMatrix={Pij|i=1,2,…,n;j=1,2,…,m},在權(quán)限矩陣中,如果應(yīng)用個體擁有權(quán)限j,那么Pij為1,否則Pij為0。
定義4 權(quán)限申請率Permission_rate:
其中,Cx_Sum為種群Cx中應(yīng)用程序總數(shù),Pi_Num為權(quán)限Pi在種群Cx中出現(xiàn)的次數(shù)。
定義5 權(quán)限等級風險值 :Android將權(quán)限劃分成不同的類型,包括安裝時權(quán)限、運行時權(quán)限和特殊權(quán)限[10]。不同類型權(quán)限的風險程度是不同的,比如READ_CONTACTS(讀取手機聯(lián)系人)屬于危險權(quán)限,存在泄露用戶隱私信息的可能性越大。現(xiàn)將權(quán)限等級風險值Griski定義如下:
該文從Android開發(fā)者文檔[10]中關(guān)于權(quán)限介紹指南提取權(quán)限類型。例如,普通權(quán)限有ACCESS_NETWORK_STATE、BLUETOOTH、CHANGE_NETWORK_STATE、INSTALL_SHORTCUT等,危險權(quán)限有ACCESS_BACKGROUND_LOCATION、READ_CALL_LOG等,特殊權(quán)限有LOADER_USAGE_STATS、INSTANT_APP_FOREGROUND_SERVICE等。
如果某個群體使用某種權(quán)限的概率比較高,則表明該權(quán)限是該群體的必要權(quán)限,哪怕該權(quán)限屬于危險權(quán)限,也應(yīng)該具有較低的危險值。反之,如果權(quán)限的概率比較低,哪怕該權(quán)限屬于普通權(quán)限,也應(yīng)該具有較高的危險值。為了量化應(yīng)用權(quán)限的風險指數(shù),給出如下定義:
定義6 樣本中某個應(yīng)用程序的權(quán)限特征向量為P=(P1,P2,…,Pn),某種群應(yīng)用程序Cx的權(quán)限等級風險指數(shù)向量PGrisk=(Grisk1,Grisk2,…,Griskn)。某個應(yīng)用程序的風險值計算方法為:
0
選取K-means算法對風險值進行聚類,獲得初步的風險等級,該聚類算法可以對大型數(shù)據(jù)集進行高效分類[11]。將所有應(yīng)用程序的風險值收斂成k簇。結(jié)合歐氏距離,將k個簇設(shè)置成k個安全等級,表示為L=(Level1,Level2,…,Levelk)。Level1到Levelk的等級逐漸升高,相應(yīng)的風險值也依次增加。也就是說,Level1級的應(yīng)用程序風險值最低,安全系數(shù)最高,存在竊取用戶信息等危險行為的可能性就越低;levelk級的應(yīng)用程序風險值最高,安全系數(shù)最低,存在竊取用戶信息等危險行為的可能性就越高。
應(yīng)用程序的權(quán)限機制是進行風險評估的一個重要因素,但不是決定性因素,因為廣告推送、惡意扣費等行為是很難通過研究權(quán)限機制發(fā)現(xiàn)的。此外,新互聯(lián)網(wǎng)時代的應(yīng)用程序風險危機來自方方面面[12-15]。應(yīng)用程序的風險程度只通過研究權(quán)限或權(quán)限組合已經(jīng)無法適用于當下互聯(lián)網(wǎng)時代,故該文在使用k-means算法對風險值聚類后,再使用CART決策樹算法[16]將多方面信息納入應(yīng)用程序風險評估的研究范圍,對聚類結(jié)果進行優(yōu)化,增強可解釋性。
面向種群的Android應(yīng)用風險評估算法流程如圖2所示。
圖2 風險評估算法流程
風險評估算法具體步驟如下:
輸入:某種群Cx數(shù)據(jù)集,風險值格式為{Prisk_sum1,Prisk_sum2,…,Prisk_sumn}
應(yīng)用信息矩陣為Application={Scorei,Downloadi,Evaluatei,Avg_Riski};
輸出:C=(Cluster1,Cluster2,…,Clusterk)和CART決策樹。
(2)聚類后可以得到種群Cx的風險簇劃分Cluster1,Cluster2,…,Clusterk,進而可以得到種群中每個應(yīng)用程序的風險等級leveli,與應(yīng)用信息矩陣Application={Scorei,Downloadi,Evaluatei,Avg_Riski}結(jié)合后得到多維度評價指標數(shù)據(jù)集,具體格式為Multi_Data={a1j,a2j,a3j,a4j,levelij},劃分節(jié)點的屬性集為Attribute={Score,Download,Evaluate,Avg_Risk}。其中,a1j為應(yīng)用評分用戶信息,a2j為應(yīng)用下載量信息,a3j為應(yīng)用評價信息,a4j為平均風險值(風險值/權(quán)限數(shù))。
(3)對于多維度評價指標數(shù)據(jù)集,從根節(jié)點開始進行以下操作,構(gòu)建二叉樹:
①如果當前數(shù)據(jù)集中的樣本都屬于同一個屬性,則設(shè)為一個葉節(jié)點并返回決策子樹,當前節(jié)點停止遞歸。
②如果Attribute=空集(已經(jīng)沒有屬性)或者Multi_Data中的數(shù)據(jù)在剩余屬性中表現(xiàn)相同(屬性無法劃分),則返回決策樹子樹,當前節(jié)點停止遞歸。
③將連續(xù)特征A(A∈Attribute)的屬性值從小到大排列,取相鄰兩屬性值的平均數(shù)作為劃分點,其中第j個劃分點Tj表示為:Tj=(aj+aj+1)/2。根據(jù)劃分點將節(jié)點數(shù)據(jù)集分為D1和D2子集,然后計算每個劃分點下對應(yīng)的基尼指數(shù):
④在計算出來的各個基尼系數(shù)中,選擇基尼系數(shù)最小的屬性A和對應(yīng)的屬性值a,把多維度評價指標數(shù)據(jù)集劃分成D1子集和D2子集。
⑤對D1子集和D2子集遞歸的調(diào)用①~④步,生成決策樹。
該文選取360應(yīng)用市場和Google的官方應(yīng)用市場Google Play作為數(shù)據(jù)源,使用python爬取大量Android應(yīng)用以及相關(guān)信息,其中包括系統(tǒng)安全、通訊社交、生活休閑、地圖旅游、教育學習等。將爬取的應(yīng)用按照應(yīng)用標簽劃分進不同的種群并存儲在云端數(shù)據(jù)庫中,建立多維度評價指標體系。新聞閱讀、主題壁紙廣泛用于人們的日常生活中,幾乎每個用戶都會根據(jù)個人需要安裝這兩類應(yīng)用,故選取這兩類應(yīng)用程序作為研究對象。其中,新聞閱讀有1 744個,主題壁紙有1 207個。圖3所示為新聞閱讀類應(yīng)用程序和主題壁紙類應(yīng)用程序的權(quán)限申請率。
從圖3可以看出,同一種權(quán)限或者權(quán)限組合在不同群體的應(yīng)用程序中的使用情況是不同的。例如,ACCESS_COARSE_LOCATION權(quán)限,新聞閱讀這一群體中申請率為0.64,而主題壁紙群體中申請率只有0.29。然后使用上文定義的風險值計算公式,對應(yīng)用程序的危險程度進行量化。新聞閱讀類風險值分布和主題壁紙類風險值分布如圖4和圖5所示。
圖3 新聞閱讀類應(yīng)用程序和主題壁紙類應(yīng)用程序的權(quán)限使用頻率
圖4 新聞閱讀類風險值分布(總數(shù)1 744)
圖5 主題壁紙類風險值分布(總數(shù)1 207)
在實驗中,采用k-means算法對兩個群體進行聚類。在分析數(shù)據(jù)規(guī)模和數(shù)據(jù)范圍后,經(jīng)過多次對比聚類結(jié)果,最后將數(shù)據(jù)劃分成4個等級,如表1和表2所示。等級越高,風險值就越高,存在惡意行為的可能性就越大。
表1 新聞閱讀種群聚類結(jié)果
表2 主題壁紙種群風險聚類結(jié)果
接著,再使用決策樹將評分、下載量、好評率、平均風險值(風險值/權(quán)限數(shù))等信息納入應(yīng)用程序風險評估的研究范圍,提高風險評估聚類結(jié)果的可解釋性。
表3 新聞閱讀種群和主題壁紙種群風險評估結(jié)果
從表3可以看出,經(jīng)過決策樹修正優(yōu)化聚類結(jié)果,新聞閱讀種群和主題壁紙種群各風險等級的應(yīng)用程序個數(shù)發(fā)生了改變。進一步研究發(fā)現(xiàn),風險等級會因為程序功能、用戶體驗感等因素發(fā)生改變,而這些因素是很難通過研究權(quán)限或權(quán)限組獲得的。例如,com.hnr.dxxw屬于新聞閱讀種群,經(jīng)過決策樹修正風險等級從危險變?yōu)槠?,com.hnr.dxxw比同種群其他應(yīng)用增加了視頻直播、線上學習功能,申請的權(quán)限更多,風險值也相對偏高。但是,并不存在竊取用戶個人信息的情況,反而因為強大的功能深受大眾喜愛。
實驗結(jié)果表明,不同種群在權(quán)限申請方面存在一定的差異。從種群的角度來判定權(quán)限使用的合理性,可以考慮到不同功能應(yīng)用程序之間的差異。使用k-means算法對種群風險值進行聚類,得到各風險等級的威脅值范圍。最后,利用決策樹將多維度指標體系納入評估系統(tǒng),提高風險評估結(jié)果的可解釋性。在實際應(yīng)用中,為用戶選擇Android應(yīng)用提供一個較好的參考依據(jù)。
借用了生物種群的思想,提出了一種面向種群的Android應(yīng)用權(quán)限分析和風險評估模型,將群體的權(quán)限使用情況和權(quán)限等級結(jié)合起來,并引入決策樹對結(jié)果進行修正調(diào)優(yōu)。實驗結(jié)果表明,該方法可以量化計算Android應(yīng)用風險值并且具有較好的自適應(yīng)性,對用戶選擇安全低風險和體驗感優(yōu)越的Android應(yīng)用程序提供較好的參考價值。接下來,將考慮惡意權(quán)限組合、動作組件、敏感API、篡改檢測等多方面,提高應(yīng)用風險評估的準確性。