余 琴,李 濤,王 頡,萬(wàn)振華
(1.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430065;2.智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)湖北省重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430065;3.深圳開(kāi)源互聯(lián)網(wǎng)安全技術(shù)有限公司,廣東 深圳 518000)
近些年來(lái),中國(guó)大力推動(dòng)互聯(lián)網(wǎng)普及工作,手機(jī)漸漸成為人們?nèi)粘I畈豢苫蛉钡囊徊糠帧elt等人[1]對(duì)940個(gè)應(yīng)用程序進(jìn)行研究分析,發(fā)現(xiàn)大約有1/3的應(yīng)用程序存在過(guò)度調(diào)用隱私權(quán)限的情況。《移動(dòng)應(yīng)用安全形勢(shì)分析報(bào)告(2020年)》[2]顯示,2020年度收錄存在安全漏洞威脅的APK 860萬(wàn)余個(gè),同一App普遍存在多個(gè)漏洞。其中流氓行為、惡意扣費(fèi)、廣告推送、隱私信息泄露等惡意行為高達(dá)81%,對(duì)用戶(hù)的個(gè)人信息以及財(cái)產(chǎn)安全帶來(lái)巨大威脅。該文提出了一種面向種群的Android應(yīng)用風(fēng)險(xiǎn)評(píng)估模型。從第三方應(yīng)用市場(chǎng)收集多種功能的應(yīng)用程序進(jìn)行分析和研究,根據(jù)特征權(quán)限使用情況及權(quán)限等級(jí)進(jìn)行風(fēng)險(xiǎn)預(yù)估,利用k-means算法劃分風(fēng)險(xiǎn)等級(jí),最后使用決策樹(shù)對(duì)聚類(lèi)結(jié)果進(jìn)行調(diào)整和優(yōu)化。
Android目前使用的權(quán)限機(jī)制在數(shù)據(jù)安全保護(hù)方面并沒(méi)有取得很好的效果[3]。基于權(quán)限管理的安全機(jī)制是Android隱私保護(hù)的重要組成部分[4],故權(quán)限機(jī)制成為判斷應(yīng)用程序是否存在惡意行為的一個(gè)重要因素。
文獻(xiàn)[5]提出了一種輕量級(jí)的快速檢測(cè)方法,根據(jù)分析特征權(quán)限在惡意應(yīng)用和正常應(yīng)用中使用的頻率來(lái)定量其惡意值,通過(guò)計(jì)算樣本惡意值與規(guī)定的閾值進(jìn)行比較來(lái)判斷樣本的惡意程度。文獻(xiàn)[6]提取應(yīng)用程序聲明和自定義的各類(lèi)權(quán)限以及動(dòng)態(tài)檢測(cè)獲取執(zhí)行過(guò)程中使用到的權(quán)限,利用層次分析法計(jì)算權(quán)重,評(píng)估應(yīng)用風(fēng)險(xiǎn)值。但是,自定義權(quán)限在第三方應(yīng)用程序中使用頻繁,卜同同等[6]收集的軟件樣本有限,因此難免會(huì)出現(xiàn)自定義權(quán)限數(shù)據(jù)集不充分的問(wèn)題。文獻(xiàn)[7]設(shè)計(jì)了一種挖掘權(quán)限頻繁項(xiàng)集的算法來(lái)處理應(yīng)用程序權(quán)限列表,構(gòu)建權(quán)限特征關(guān)系庫(kù)。但是將不同功能的應(yīng)用混合在一起構(gòu)建數(shù)據(jù)集,忽略了應(yīng)用程序的差異,即沒(méi)有考慮到不同權(quán)限對(duì)不同功能的應(yīng)用程序的敏感程度是不同的。
傳統(tǒng)的應(yīng)用檢測(cè)方法主要是從個(gè)體的角度來(lái)判斷應(yīng)用的安全性,難以滿(mǎn)足大規(guī)模用戶(hù)檢測(cè)的需要[8]。文獻(xiàn)[9]借鑒生物學(xué)中種群的概念,提出了一種面向種群的適用于大規(guī)模Android應(yīng)用評(píng)估和惡意應(yīng)用檢測(cè)的方法。通過(guò)群體特征分析和種群聚類(lèi),進(jìn)行高效大規(guī)模的應(yīng)用隱私泄露風(fēng)險(xiǎn)評(píng)估。但是,聚類(lèi)結(jié)果缺乏可解釋性。
該文提出了一種面向種群的Android應(yīng)用風(fēng)險(xiǎn)評(píng)估模型,可以根據(jù)應(yīng)用程序標(biāo)簽信息將爬取到的應(yīng)用劃分進(jìn)不同的種群,并自動(dòng)提取應(yīng)用權(quán)限列表。然后,根據(jù)權(quán)限使用情況和Android系統(tǒng)權(quán)限等級(jí)對(duì)未知應(yīng)用進(jìn)行評(píng)估并給出對(duì)應(yīng)的風(fēng)險(xiǎn)等級(jí),為用戶(hù)在選擇Android應(yīng)用時(shí)提供一個(gè)較好的參考依據(jù)。整個(gè)模型主要由數(shù)據(jù)采集模塊和風(fēng)險(xiǎn)評(píng)估模塊組成,系統(tǒng)的流程框架如圖1所示。

圖1 系統(tǒng)流程框架
具有相似功能的應(yīng)用程序類(lèi)似一個(gè)種群,它們所需的系統(tǒng)權(quán)限也相似。在數(shù)據(jù)采集模塊,使用python編寫(xiě)的爬蟲(chóng)爬取網(wǎng)站提供的應(yīng)用介紹、評(píng)分值、好評(píng)率、下載量等相關(guān)信息,同時(shí),根據(jù)類(lèi)別標(biāo)簽對(duì)應(yīng)用程序進(jìn)行分類(lèi)爬取下載,并標(biāo)上新的群體標(biāo)簽。把群體作為處理單元,使用逆向分析工具對(duì)APK進(jìn)行反編譯得到AndroidManifest.xml文件,獲取應(yīng)用程序的權(quán)限或權(quán)限組的信息。將獲取到的所有信息存儲(chǔ)在云端數(shù)據(jù)庫(kù)中,并建立多維度評(píng)價(jià)指標(biāo)體系。利用統(tǒng)計(jì)學(xué)相關(guān)知識(shí)對(duì)權(quán)限特征集合進(jìn)行靜態(tài)分析,根據(jù)統(tǒng)計(jì)情況計(jì)算單個(gè)權(quán)限風(fēng)險(xiǎn)指數(shù),從而獲得種群中應(yīng)用程序的風(fēng)險(xiǎn)值。然后,利用數(shù)據(jù)挖掘中的k-means算法對(duì)應(yīng)用程序風(fēng)險(xiǎn)值進(jìn)行聚類(lèi),獲得初步風(fēng)險(xiǎn)等級(jí)。為了提高風(fēng)險(xiǎn)評(píng)估聚類(lèi)結(jié)果的可解釋性,使用決策樹(shù)將多維度評(píng)價(jià)指標(biāo)體系納入應(yīng)用程序風(fēng)險(xiǎn)評(píng)估的研究范圍,增強(qiáng)權(quán)限調(diào)用合理性判定。
通過(guò)研究Android應(yīng)用權(quán)限的使用情況發(fā)現(xiàn),不同功能的應(yīng)用在權(quán)限申請(qǐng)方面存在較大的差異。將相同功能類(lèi)型的應(yīng)用作為一個(gè)種群,種群類(lèi)別分為x個(gè)類(lèi),種群的類(lèi)別會(huì)根據(jù)爬取App總數(shù)的增加而變化,于是類(lèi)別集合為[8]:
定義1 類(lèi)別標(biāo)簽:Class={C1,C2,…,Cx},Cx為每個(gè)種群的類(lèi)別標(biāo)簽,如新聞閱讀、主題壁紙、社交聊天等類(lèi)別。
定義2 應(yīng)用個(gè)體:Application={Cx,Introduction,Score,Download,Evaluate,PermissionMatrix}。其中,Cx為種群的類(lèi)別標(biāo)簽,Introduction為應(yīng)用介紹,Score為應(yīng)用評(píng)分,Download為下載量,Evaluate為評(píng)價(jià)信息,PermissonMatrix 為每個(gè)應(yīng)用經(jīng)過(guò)權(quán)限預(yù)處理后的權(quán)限信息矩陣,具體定義如下:
定義3 PermissionMatrix={Pij|i=1,2,…,n;j=1,2,…,m},在權(quán)限矩陣中,如果應(yīng)用個(gè)體擁有權(quán)限j,那么Pij為1,否則Pij為0。
定義4 權(quán)限申請(qǐng)率Permission_rate:
其中,Cx_Sum為種群Cx中應(yīng)用程序總數(shù),Pi_Num為權(quán)限Pi在種群Cx中出現(xiàn)的次數(shù)。
定義5 權(quán)限等級(jí)風(fēng)險(xiǎn)值 :Android將權(quán)限劃分成不同的類(lèi)型,包括安裝時(shí)權(quán)限、運(yùn)行時(shí)權(quán)限和特殊權(quán)限[10]。不同類(lèi)型權(quán)限的風(fēng)險(xiǎn)程度是不同的,比如READ_CONTACTS(讀取手機(jī)聯(lián)系人)屬于危險(xiǎn)權(quán)限,存在泄露用戶(hù)隱私信息的可能性越大。現(xiàn)將權(quán)限等級(jí)風(fēng)險(xiǎn)值Griski定義如下:
該文從Android開(kāi)發(fā)者文檔[10]中關(guān)于權(quán)限介紹指南提取權(quán)限類(lèi)型。例如,普通權(quán)限有ACCESS_NETWORK_STATE、BLUETOOTH、CHANGE_NETWORK_STATE、INSTALL_SHORTCUT等,危險(xiǎn)權(quán)限有ACCESS_BACKGROUND_LOCATION、READ_CALL_LOG等,特殊權(quán)限有LOADER_USAGE_STATS、INSTANT_APP_FOREGROUND_SERVICE等。
如果某個(gè)群體使用某種權(quán)限的概率比較高,則表明該權(quán)限是該群體的必要權(quán)限,哪怕該權(quán)限屬于危險(xiǎn)權(quán)限,也應(yīng)該具有較低的危險(xiǎn)值。反之,如果權(quán)限的概率比較低,哪怕該權(quán)限屬于普通權(quán)限,也應(yīng)該具有較高的危險(xiǎn)值。為了量化應(yīng)用權(quán)限的風(fēng)險(xiǎn)指數(shù),給出如下定義:
定義6 樣本中某個(gè)應(yīng)用程序的權(quán)限特征向量為P=(P1,P2,…,Pn),某種群應(yīng)用程序Cx的權(quán)限等級(jí)風(fēng)險(xiǎn)指數(shù)向量PGrisk=(Grisk1,Grisk2,…,Griskn)。某個(gè)應(yīng)用程序的風(fēng)險(xiǎn)值計(jì)算方法為:
0
選取K-means算法對(duì)風(fēng)險(xiǎn)值進(jìn)行聚類(lèi),獲得初步的風(fēng)險(xiǎn)等級(jí),該聚類(lèi)算法可以對(duì)大型數(shù)據(jù)集進(jìn)行高效分類(lèi)[11]。將所有應(yīng)用程序的風(fēng)險(xiǎn)值收斂成k簇。結(jié)合歐氏距離,將k個(gè)簇設(shè)置成k個(gè)安全等級(jí),表示為L(zhǎng)=(Level1,Level2,…,Levelk)。Level1到Levelk的等級(jí)逐漸升高,相應(yīng)的風(fēng)險(xiǎn)值也依次增加。也就是說(shuō),Level1級(jí)的應(yīng)用程序風(fēng)險(xiǎn)值最低,安全系數(shù)最高,存在竊取用戶(hù)信息等危險(xiǎn)行為的可能性就越低;levelk級(jí)的應(yīng)用程序風(fēng)險(xiǎn)值最高,安全系數(shù)最低,存在竊取用戶(hù)信息等危險(xiǎn)行為的可能性就越高。
應(yīng)用程序的權(quán)限機(jī)制是進(jìn)行風(fēng)險(xiǎn)評(píng)估的一個(gè)重要因素,但不是決定性因素,因?yàn)閺V告推送、惡意扣費(fèi)等行為是很難通過(guò)研究權(quán)限機(jī)制發(fā)現(xiàn)的。此外,新互聯(lián)網(wǎng)時(shí)代的應(yīng)用程序風(fēng)險(xiǎn)危機(jī)來(lái)自方方面面[12-15]。應(yīng)用程序的風(fēng)險(xiǎn)程度只通過(guò)研究權(quán)限或權(quán)限組合已經(jīng)無(wú)法適用于當(dāng)下互聯(lián)網(wǎng)時(shí)代,故該文在使用k-means算法對(duì)風(fēng)險(xiǎn)值聚類(lèi)后,再使用CART決策樹(shù)算法[16]將多方面信息納入應(yīng)用程序風(fēng)險(xiǎn)評(píng)估的研究范圍,對(duì)聚類(lèi)結(jié)果進(jìn)行優(yōu)化,增強(qiáng)可解釋性。
面向種群的Android應(yīng)用風(fēng)險(xiǎn)評(píng)估算法流程如圖2所示。

圖2 風(fēng)險(xiǎn)評(píng)估算法流程
風(fēng)險(xiǎn)評(píng)估算法具體步驟如下:
輸入:某種群Cx數(shù)據(jù)集,風(fēng)險(xiǎn)值格式為{Prisk_sum1,Prisk_sum2,…,Prisk_sumn}
應(yīng)用信息矩陣為Application={Scorei,Downloadi,Evaluatei,Avg_Riski};
輸出:C=(Cluster1,Cluster2,…,Clusterk)和CART決策樹(shù)。

(2)聚類(lèi)后可以得到種群Cx的風(fēng)險(xiǎn)簇劃分Cluster1,Cluster2,…,Clusterk,進(jìn)而可以得到種群中每個(gè)應(yīng)用程序的風(fēng)險(xiǎn)等級(jí)leveli,與應(yīng)用信息矩陣Application={Scorei,Downloadi,Evaluatei,Avg_Riski}結(jié)合后得到多維度評(píng)價(jià)指標(biāo)數(shù)據(jù)集,具體格式為Multi_Data={a1j,a2j,a3j,a4j,levelij},劃分節(jié)點(diǎn)的屬性集為Attribute={Score,Download,Evaluate,Avg_Risk}。其中,a1j為應(yīng)用評(píng)分用戶(hù)信息,a2j為應(yīng)用下載量信息,a3j為應(yīng)用評(píng)價(jià)信息,a4j為平均風(fēng)險(xiǎn)值(風(fēng)險(xiǎn)值/權(quán)限數(shù))。
(3)對(duì)于多維度評(píng)價(jià)指標(biāo)數(shù)據(jù)集,從根節(jié)點(diǎn)開(kāi)始進(jìn)行以下操作,構(gòu)建二叉樹(shù):
①如果當(dāng)前數(shù)據(jù)集中的樣本都屬于同一個(gè)屬性,則設(shè)為一個(gè)葉節(jié)點(diǎn)并返回決策子樹(shù),當(dāng)前節(jié)點(diǎn)停止遞歸。
②如果Attribute=空集(已經(jīng)沒(méi)有屬性)或者M(jìn)ulti_Data中的數(shù)據(jù)在剩余屬性中表現(xiàn)相同(屬性無(wú)法劃分),則返回決策樹(shù)子樹(shù),當(dāng)前節(jié)點(diǎn)停止遞歸。
③將連續(xù)特征A(A∈Attribute)的屬性值從小到大排列,取相鄰兩屬性值的平均數(shù)作為劃分點(diǎn),其中第j個(gè)劃分點(diǎn)Tj表示為:Tj=(aj+aj+1)/2。根據(jù)劃分點(diǎn)將節(jié)點(diǎn)數(shù)據(jù)集分為D1和D2子集,然后計(jì)算每個(gè)劃分點(diǎn)下對(duì)應(yīng)的基尼指數(shù):

④在計(jì)算出來(lái)的各個(gè)基尼系數(shù)中,選擇基尼系數(shù)最小的屬性A和對(duì)應(yīng)的屬性值a,把多維度評(píng)價(jià)指標(biāo)數(shù)據(jù)集劃分成D1子集和D2子集。
⑤對(duì)D1子集和D2子集遞歸的調(diào)用①~④步,生成決策樹(shù)。
該文選取360應(yīng)用市場(chǎng)和Google的官方應(yīng)用市場(chǎng)Google Play作為數(shù)據(jù)源,使用python爬取大量Android應(yīng)用以及相關(guān)信息,其中包括系統(tǒng)安全、通訊社交、生活休閑、地圖旅游、教育學(xué)習(xí)等。將爬取的應(yīng)用按照應(yīng)用標(biāo)簽劃分進(jìn)不同的種群并存儲(chǔ)在云端數(shù)據(jù)庫(kù)中,建立多維度評(píng)價(jià)指標(biāo)體系。新聞閱讀、主題壁紙廣泛用于人們的日常生活中,幾乎每個(gè)用戶(hù)都會(huì)根據(jù)個(gè)人需要安裝這兩類(lèi)應(yīng)用,故選取這兩類(lèi)應(yīng)用程序作為研究對(duì)象。其中,新聞閱讀有1 744個(gè),主題壁紙有1 207個(gè)。圖3所示為新聞閱讀類(lèi)應(yīng)用程序和主題壁紙類(lèi)應(yīng)用程序的權(quán)限申請(qǐng)率。
從圖3可以看出,同一種權(quán)限或者權(quán)限組合在不同群體的應(yīng)用程序中的使用情況是不同的。例如,ACCESS_COARSE_LOCATION權(quán)限,新聞閱讀這一群體中申請(qǐng)率為0.64,而主題壁紙群體中申請(qǐng)率只有0.29。然后使用上文定義的風(fēng)險(xiǎn)值計(jì)算公式,對(duì)應(yīng)用程序的危險(xiǎn)程度進(jìn)行量化。新聞閱讀類(lèi)風(fēng)險(xiǎn)值分布和主題壁紙類(lèi)風(fēng)險(xiǎn)值分布如圖4和圖5所示。

圖3 新聞閱讀類(lèi)應(yīng)用程序和主題壁紙類(lèi)應(yīng)用程序的權(quán)限使用頻率

圖4 新聞閱讀類(lèi)風(fēng)險(xiǎn)值分布(總數(shù)1 744)

圖5 主題壁紙類(lèi)風(fēng)險(xiǎn)值分布(總數(shù)1 207)
在實(shí)驗(yàn)中,采用k-means算法對(duì)兩個(gè)群體進(jìn)行聚類(lèi)。在分析數(shù)據(jù)規(guī)模和數(shù)據(jù)范圍后,經(jīng)過(guò)多次對(duì)比聚類(lèi)結(jié)果,最后將數(shù)據(jù)劃分成4個(gè)等級(jí),如表1和表2所示。等級(jí)越高,風(fēng)險(xiǎn)值就越高,存在惡意行為的可能性就越大。

表1 新聞閱讀種群聚類(lèi)結(jié)果

表2 主題壁紙種群風(fēng)險(xiǎn)聚類(lèi)結(jié)果
接著,再使用決策樹(shù)將評(píng)分、下載量、好評(píng)率、平均風(fēng)險(xiǎn)值(風(fēng)險(xiǎn)值/權(quán)限數(shù))等信息納入應(yīng)用程序風(fēng)險(xiǎn)評(píng)估的研究范圍,提高風(fēng)險(xiǎn)評(píng)估聚類(lèi)結(jié)果的可解釋性。

表3 新聞閱讀種群和主題壁紙種群風(fēng)險(xiǎn)評(píng)估結(jié)果
從表3可以看出,經(jīng)過(guò)決策樹(shù)修正優(yōu)化聚類(lèi)結(jié)果,新聞閱讀種群和主題壁紙種群各風(fēng)險(xiǎn)等級(jí)的應(yīng)用程序個(gè)數(shù)發(fā)生了改變。進(jìn)一步研究發(fā)現(xiàn),風(fēng)險(xiǎn)等級(jí)會(huì)因?yàn)槌绦蚬δ堋⒂脩?hù)體驗(yàn)感等因素發(fā)生改變,而這些因素是很難通過(guò)研究權(quán)限或權(quán)限組獲得的。例如,com.hnr.dxxw屬于新聞閱讀種群,經(jīng)過(guò)決策樹(shù)修正風(fēng)險(xiǎn)等級(jí)從危險(xiǎn)變?yōu)槠撸琧om.hnr.dxxw比同種群其他應(yīng)用增加了視頻直播、線(xiàn)上學(xué)習(xí)功能,申請(qǐng)的權(quán)限更多,風(fēng)險(xiǎn)值也相對(duì)偏高。但是,并不存在竊取用戶(hù)個(gè)人信息的情況,反而因?yàn)閺?qiáng)大的功能深受大眾喜愛(ài)。
實(shí)驗(yàn)結(jié)果表明,不同種群在權(quán)限申請(qǐng)方面存在一定的差異。從種群的角度來(lái)判定權(quán)限使用的合理性,可以考慮到不同功能應(yīng)用程序之間的差異。使用k-means算法對(duì)種群風(fēng)險(xiǎn)值進(jìn)行聚類(lèi),得到各風(fēng)險(xiǎn)等級(jí)的威脅值范圍。最后,利用決策樹(shù)將多維度指標(biāo)體系納入評(píng)估系統(tǒng),提高風(fēng)險(xiǎn)評(píng)估結(jié)果的可解釋性。在實(shí)際應(yīng)用中,為用戶(hù)選擇Android應(yīng)用提供一個(gè)較好的參考依據(jù)。
借用了生物種群的思想,提出了一種面向種群的Android應(yīng)用權(quán)限分析和風(fēng)險(xiǎn)評(píng)估模型,將群體的權(quán)限使用情況和權(quán)限等級(jí)結(jié)合起來(lái),并引入決策樹(shù)對(duì)結(jié)果進(jìn)行修正調(diào)優(yōu)。實(shí)驗(yàn)結(jié)果表明,該方法可以量化計(jì)算Android應(yīng)用風(fēng)險(xiǎn)值并且具有較好的自適應(yīng)性,對(duì)用戶(hù)選擇安全低風(fēng)險(xiǎn)和體驗(yàn)感優(yōu)越的Android應(yīng)用程序提供較好的參考價(jià)值。接下來(lái),將考慮惡意權(quán)限組合、動(dòng)作組件、敏感API、篡改檢測(cè)等多方面,提高應(yīng)用風(fēng)險(xiǎn)評(píng)估的準(zhǔn)確性。