李自清,王詠寧
(青海民族大學(xué) 物理與電子信息工程學(xué)院,青海 西寧 810007)
Android 平臺(tái)應(yīng)用隱私泄露檢測(cè)與評(píng)估技術(shù)
李自清,王詠寧
(青海民族大學(xué) 物理與電子信息工程學(xué)院,青海 西寧 810007)
Android手機(jī)近年來(lái)快速發(fā)展,用戶可方便地使用各類型應(yīng)用。然而,應(yīng)用在使用過(guò)程中會(huì)產(chǎn)生大量隱私數(shù)據(jù),同時(shí)隱私泄露已成為Android平臺(tái)嚴(yán)重的安全問(wèn)題。本文主要綜述了現(xiàn)階段基于Android平臺(tái)應(yīng)用隱私泄露檢測(cè)技術(shù),介紹了該領(lǐng)域的研究現(xiàn)狀和進(jìn)展,對(duì)于目前隱私檢測(cè)技術(shù)評(píng)估標(biāo)準(zhǔn)尚未統(tǒng)一的問(wèn)題,提出了對(duì)這類技術(shù)進(jìn)行評(píng)估的指標(biāo),按照該指標(biāo)對(duì)現(xiàn)有技術(shù)進(jìn)行初步評(píng)估,給出評(píng)估結(jié)果,希望能夠以此推動(dòng)應(yīng)用隱私泄露檢測(cè)評(píng)估標(biāo)準(zhǔn)的建立。
Android;隱私;泄露檢測(cè)
當(dāng)前,Android操作系統(tǒng)已躍居全球智能手機(jī)市場(chǎng)份額占有率第一[1]。據(jù)友盟2016第二季度統(tǒng)計(jì)[2],國(guó)內(nèi)移動(dòng)用戶活躍設(shè)備中,Android設(shè)備量達(dá)62.4%。Android操作系統(tǒng)的開(kāi)源性,不僅備受手機(jī)廠商的青睞,而且 Android應(yīng)用市場(chǎng)上移動(dòng)應(yīng)用迅速發(fā)展,也極大豐富了手機(jī)用戶的生活。移動(dòng)應(yīng)用給手機(jī)用戶帶來(lái)娛樂(lè)與便捷,同時(shí)近幾年關(guān)于應(yīng)用泄露用戶隱私的事件層出不窮。用戶隱私泄露問(wèn)題成為安全界備受矚目的研究對(duì)象,近幾年發(fā)展出來(lái)眾多優(yōu)秀的隱私泄露檢測(cè)框架。但由于隱私泄露途徑手段之多,規(guī)模危害之大,檢測(cè)框架難免會(huì)有一些不足之處。本文首先通過(guò)對(duì) Android平臺(tái)的隱私數(shù)據(jù)進(jìn)行定義分類,并詳細(xì)介紹了 Android現(xiàn)有的安全機(jī)制對(duì)用戶隱私數(shù)據(jù)的保護(hù)方案,以及對(duì)隱私泄露產(chǎn)生的原因進(jìn)行分析;其次對(duì)現(xiàn)有的隱私泄露檢測(cè)方案通過(guò)靜態(tài)分析以及動(dòng)態(tài)分析兩方面進(jìn)行闡述,詳細(xì)說(shuō)明了主流方案的工作原理,并通過(guò)自定義的評(píng)測(cè)指標(biāo)橫向比較了各方案的優(yōu)缺性,最后指出了隱私泄露檢測(cè)的發(fā)展方向。
1.1 Android平臺(tái)隱私定義
近年來(lái)隨著大數(shù)據(jù)平臺(tái)的建立與發(fā)展,當(dāng)用戶隱私數(shù)據(jù)成為一種資產(chǎn),移動(dòng)應(yīng)用毫無(wú)疑問(wèn)的成為大數(shù)據(jù)平臺(tái)機(jī)構(gòu)的首要監(jiān)測(cè)目標(biāo)。手機(jī)用戶在使用應(yīng)用的過(guò)程中產(chǎn)生了大量的隱私數(shù)據(jù),然而用戶無(wú)法確信手機(jī)系統(tǒng)或者應(yīng)用開(kāi)發(fā)者是否對(duì)隱私數(shù)據(jù)做了保護(hù)處理。因此,在對(duì)隱私數(shù)據(jù)泄露檢測(cè)研究之前,首先需明確Android平臺(tái)隱私的定義。
(1)Android系統(tǒng)隱私。Android操作系統(tǒng)同其他智能手機(jī)操作系統(tǒng)一樣,為第三方應(yīng)用程序提供了統(tǒng)一訪問(wèn)系統(tǒng)資源的接口。例如,通訊能力(網(wǎng)絡(luò)訪問(wèn),打電話,發(fā)短信),用戶信息數(shù)據(jù)庫(kù)(聯(lián)系人、日歷日程),多媒體(照相機(jī)、錄音、手機(jī)位置數(shù)據(jù))等。這些資源本身就是敏感的用戶隱私。一旦 Android系統(tǒng)的資源訪問(wèn)機(jī)制出現(xiàn)漏洞,惡意應(yīng)用通過(guò)某些手段隨意訪問(wèn)或修改這些數(shù)據(jù),會(huì)造成很嚴(yán)重的隱私泄露問(wèn)題。
(2)第三方應(yīng)用產(chǎn)生的隱私。用戶在使用第三方應(yīng)用的時(shí)候,會(huì)產(chǎn)生大量數(shù)據(jù)。例如,身份信息(個(gè)人賬號(hào)、密碼),應(yīng)用數(shù)據(jù)(聊天記錄、瀏覽記錄、支付交易記錄、購(gòu)物愛(ài)好)等,都會(huì)成為該用戶的隱私。此外,用戶會(huì)面臨應(yīng)用提供商對(duì)此類數(shù)據(jù)收集甚至泄露的風(fēng)險(xiǎn),或者其他惡意應(yīng)用對(duì)可信應(yīng)用隱私數(shù)據(jù)竊取的威脅。
1.2 Android現(xiàn)有的隱私保護(hù)機(jī)制
Android操作系統(tǒng)為保障信息安全并應(yīng)對(duì)各種安全威脅,制定了一整套完備的安全體系。安全機(jī)制涉及 linux kernel、library、framework、application各個(gè)層面,在保證系統(tǒng)靈活開(kāi)源的同時(shí),確保系統(tǒng)、應(yīng)用程序、用戶數(shù)據(jù)等方面的安全性。下面,我們僅介紹現(xiàn)有的 Android安全方案針對(duì) Android對(duì)隱私數(shù)據(jù)的保護(hù)機(jī)制。(1)應(yīng)用程序權(quán)限聲明機(jī)制。應(yīng)用程序默認(rèn)情況下不能直接訪問(wèn)系統(tǒng)資源。應(yīng)用程序需要顯式地聲明權(quán)限名稱、權(quán)限組、保護(hù)級(jí)別。不同級(jí)別 Android系統(tǒng)會(huì)要求應(yīng)用在使用該權(quán)限時(shí)認(rèn)證方式不同。同Android6.0之后,更是加強(qiáng)對(duì)應(yīng)用可申請(qǐng)權(quán)限的管理[3],開(kāi)發(fā)者需在程序運(yùn)行中對(duì)權(quán)限進(jìn)行動(dòng)態(tài)處理。
(2)應(yīng)用程序簽名機(jī)制。應(yīng)用程序在發(fā)布時(shí)必須由應(yīng)用提供商對(duì)應(yīng)用進(jìn)行數(shù)字簽名,這樣在一定程度上避免了應(yīng)用被攻擊者重打包的風(fēng)險(xiǎn);此外,Android提供了“sharedUserId”的機(jī)制,可以讓相互信任的應(yīng)用程序運(yùn)行在同一個(gè)進(jìn)程空間,相互訪問(wèn)資源。
(3)進(jìn)程沙箱隔離機(jī)制。Android應(yīng)用在安裝時(shí)就已被系統(tǒng)賦予獨(dú)特的用戶標(biāo)識(shí)(UID)。應(yīng)用程序及其虛擬機(jī)等系統(tǒng)資源運(yùn)行于獨(dú)立的進(jìn)程空間下,不同UID的應(yīng)用程序之間完全隔離。
(4)進(jìn)程間通信機(jī)制。Android獨(dú)特地應(yīng)用了Binder通信機(jī)制來(lái)管理應(yīng)用程序進(jìn)程間的通信。讓進(jìn)程間的通信更為高效安全。傳統(tǒng)Linux IPC只能往數(shù)據(jù)包里面填入U(xiǎn)ID/PID,而Binder機(jī)制本身提供了對(duì)請(qǐng)求端身份的識(shí)別以及權(quán)限檢查。
(5)訪問(wèn)控制機(jī)制。Android系統(tǒng)是基于linux內(nèi)核為基礎(chǔ)。在linux的基本訪問(wèn)控制下,確保系統(tǒng)資源文件、以及應(yīng)用程序文件不受非法訪問(wèn)。Android 4.3引入了基于SELinux的安全機(jī)制,稱為SEAndroid,來(lái)加強(qiáng)系統(tǒng)安全性。并且對(duì)于資源文件的訪問(wèn)控制更為苛刻。
圖1 權(quán)限提升流程Fig.1 Process of Privilege Escalation
1.3 Android平臺(tái)隱私泄露原因
即便 Android系統(tǒng)提供了一整套強(qiáng)大的安全機(jī)制,Android平臺(tái)近幾年隱私泄露問(wèn)題依舊層出不窮。明確隱私泄露的根本原因,對(duì)隱私泄露檢測(cè)技術(shù)的改進(jìn)以及Android系統(tǒng)的發(fā)展很有幫助。
(1)應(yīng)用市場(chǎng)惡意應(yīng)用程序。Android系統(tǒng)對(duì)應(yīng)用安裝市場(chǎng)相對(duì)于IOS的應(yīng)用市場(chǎng)并未有嚴(yán)格的監(jiān)管制度。由于google play對(duì)國(guó)內(nèi)用戶的屏蔽,國(guó)內(nèi)第三方應(yīng)用市場(chǎng)成為 Android用戶主要應(yīng)用下載渠道。有研究表明[4,5,6,7],第三方應(yīng)用市場(chǎng)對(duì)應(yīng)用的監(jiān)管制度良莠不齊,惡意應(yīng)用可以隨意地繞過(guò)第三方應(yīng)用檢測(cè)并上架,暴露給用戶下載。惡意應(yīng)用常常會(huì)申請(qǐng)眾多敏感權(quán)限,從而獲取用戶隱私信息,甚至本身含有惡意病毒,對(duì)用戶手機(jī)安全造成巨大破壞。
(2)權(quán)限提升漏洞。根據(jù)Android的沙箱機(jī)制,Android應(yīng)用程序運(yùn)行在各自獨(dú)有的進(jìn)程空間中,并且默認(rèn)情況下并不能與其他應(yīng)用進(jìn)行交互,訪問(wèn)對(duì)方資源。然而,惡意應(yīng)用可利用 Android組件間通信,通過(guò)借助其他應(yīng)用獲取權(quán)限,展開(kāi)權(quán)限提升攻擊。如圖1,該圖包含應(yīng)用A,B,C,其中應(yīng)用 B中組件1的訪問(wèn)權(quán)限為Pb,應(yīng)用C中組件1訪問(wèn)權(quán)限為Pc。應(yīng)用 A的組件 1具備訪問(wèn)應(yīng)用B組件1的權(quán)限Pb,但不具備訪問(wèn)應(yīng)用C組件1的權(quán)限Pc,但是應(yīng)用B組件1具備訪問(wèn)應(yīng)用C組件1的權(quán)限Pc。此時(shí),惡意應(yīng)用A組件1可通過(guò)Android ICC機(jī)制(Inter-ComponentCommunicate),調(diào)用應(yīng)用B組件1來(lái)訪問(wèn)應(yīng)用 C組件 1。由此,跳過(guò)權(quán)限檢查間接獲取訪問(wèn)能力。
(3)應(yīng)用對(duì)隱私數(shù)據(jù)保護(hù)不足。除了常見(jiàn)的惡意應(yīng)用會(huì)帶來(lái)的用戶隱私泄露問(wèn)題,合法應(yīng)用也會(huì)存在隱私泄漏問(wèn)題。例如,應(yīng)用申請(qǐng)過(guò)多非必要權(quán)限,以獲取更多用戶信息;應(yīng)用對(duì)運(yùn)行過(guò)程中產(chǎn)生的包含用戶敏感信息的文件未作保護(hù);應(yīng)用本身存在監(jiān)控、搜集并上報(bào)用戶信息的行為等。所以,在分析隱私泄露檢測(cè)的時(shí)候,應(yīng)該對(duì)所有應(yīng)用統(tǒng)一進(jìn)行檢測(cè)。
近年來(lái),由于 Android系統(tǒng)的發(fā)展以及針對(duì)Android平臺(tái)隱私泄露事件的頻繁曝出,大量國(guó)內(nèi)外安全學(xué)者開(kāi)始對(duì)隱私泄露檢測(cè)進(jìn)行研究?,F(xiàn)有的用于檢測(cè)用戶隱私泄露的技術(shù)一般可分為兩大類:靜態(tài)分析技術(shù)以及動(dòng)態(tài)分析技術(shù)。靜態(tài)分析主要包括:控制流分析、數(shù)據(jù)流分析等。通過(guò)靜態(tài)地分析程序代碼結(jié)構(gòu),控制流以及數(shù)據(jù)流的情況,對(duì)所有隱私數(shù)據(jù)相關(guān)的執(zhí)行路徑進(jìn)行列舉。動(dòng)態(tài)分析包括針對(duì)核心系統(tǒng)接口檢測(cè)技術(shù)以及污點(diǎn)追蹤技術(shù)。核心系統(tǒng)接口檢測(cè)就是對(duì)涉及用戶敏感數(shù)據(jù)的系統(tǒng)接口進(jìn)行檢測(cè),一旦程序調(diào)用該接口,便會(huì)記錄下來(lái);污點(diǎn)追蹤技術(shù)是指當(dāng)檢測(cè)用戶隱私數(shù)據(jù)產(chǎn)生時(shí),就將該隱私數(shù)據(jù)標(biāo)記為污點(diǎn)。整個(gè)污點(diǎn)數(shù)據(jù)從產(chǎn)生、傳播、存儲(chǔ)一直到發(fā)送網(wǎng)絡(luò)所有環(huán)節(jié)都會(huì)被標(biāo)記為污點(diǎn),是一種非常強(qiáng)有力的檢測(cè)手段。下面,我們將對(duì)這些現(xiàn)有的技術(shù)進(jìn)行分析。
2.1 靜態(tài)分析技術(shù)
Soot[8]是McGill大學(xué)的Sable研究小組自1996年就已研究的Java字節(jié)碼分析工具。Soot提供了多種字節(jié)碼分析和變化功能,利用該工具可方便地進(jìn)行程序分析、編譯優(yōu)化等;同時(shí),Soot提供的過(guò)程內(nèi)以及過(guò)程間分析功能,使用者可方便地獲取各個(gè)方法的控制流圖,并將其以圖形化的形式顯示出來(lái)。對(duì)于程序的安全分析,需尋找程序的各“短板”,需確定程序中與數(shù)據(jù)處理的有關(guān)信息。通過(guò)Soot工具,可方便的生成程序的控制流圖以及數(shù)據(jù)流圖,全面了解程序每一個(gè)階段內(nèi)控制流的層級(jí)結(jié)構(gòu)以及全局調(diào)用關(guān)系。因此,很多 Android平臺(tái)的靜態(tài)分析工具均建立在Soot工具上,靜態(tài)地分析Android應(yīng)用代碼中的控制流以及數(shù)據(jù)流,從而找到隱私數(shù)據(jù)泄漏的路徑。
FlowDroid[9]基于Soot框架實(shí)現(xiàn)的針對(duì)Android平臺(tái)隱私泄露分析系統(tǒng)。污點(diǎn)泄露追蹤中,常常將污點(diǎn)泄漏源記為source點(diǎn),將污點(diǎn)終點(diǎn)記為sink點(diǎn)。FlowDroid能夠分析從source點(diǎn)到所有sink點(diǎn)之間所有路徑的數(shù)據(jù)流依賴關(guān)系。在進(jìn)行數(shù)據(jù)流分析時(shí),F(xiàn)lowDroid將Activity生命周期及所有回調(diào)函數(shù)之間的控制流調(diào)用關(guān)系用一個(gè)虛主函數(shù)(dummy main)來(lái)模擬。基于該主函數(shù),F(xiàn)lowDroid分析程序所能到達(dá)的所有函數(shù),并構(gòu)造這些函數(shù)之間的控制流圖,極大地簡(jiǎn)化數(shù)據(jù)流分析過(guò)程。其次,F(xiàn)lowDroid將數(shù)據(jù)流分析問(wèn)題形式化成了 IFDS[10]框架上的染色分析問(wèn)題。針對(duì)每一個(gè)source,F(xiàn)lowDroid將其作為起點(diǎn)依據(jù)控制流圖來(lái)進(jìn)行染色分析,每當(dāng)染色分析遇到一個(gè)sink時(shí),F(xiàn)lowDroid將輸出source到sink之間的數(shù)據(jù)依賴關(guān)系。FlowDroid巧妙地將應(yīng)用內(nèi)的控制流調(diào)用用一個(gè)主函數(shù)來(lái)模擬,極大簡(jiǎn)化分析流程,但同時(shí) FlowDroid由于僅支持單一組件內(nèi)的數(shù)據(jù)流分析,對(duì)于組件間的通信尚未解決。針對(duì)這一問(wèn)題,在 FlowDroid基礎(chǔ)上發(fā)展了許多為解決組件間通信(Inter-Component Communication)的方案。ICCTA[11]便是基于 FlowDroid針對(duì)組件間通信的污點(diǎn)分析的工具,主要用來(lái)分析不同組件和不同應(yīng)用之間的隱私泄露問(wèn)題。它利用ApkCombiner將多個(gè)應(yīng)用合稱為一個(gè)應(yīng)用,進(jìn)而將應(yīng)用間通信的分析轉(zhuǎn)換為應(yīng)用內(nèi)通信分析。Chex[12]是用來(lái)檢測(cè)Android系統(tǒng)組件劫持漏洞的靜態(tài)數(shù)據(jù)流分析工具。組件劫持漏洞一般是指應(yīng)用對(duì)于外部請(qǐng)求缺乏合理的訪問(wèn)控制導(dǎo)致惡意應(yīng)用入侵,如上文提到的權(quán)限提升漏洞就是常見(jiàn)的組件劫持漏洞其中一種。在進(jìn)行數(shù)據(jù)流分析時(shí),Chex將所有事件觸發(fā)的函數(shù)都當(dāng)作一個(gè)入口結(jié)點(diǎn),所以 Chex的首先會(huì)是掃描整個(gè)應(yīng)用找到所有的入口結(jié)點(diǎn)。其次,Chex將每一個(gè)入口結(jié)點(diǎn)能夠到達(dá)的代碼塊稱為一個(gè)代碼分片。對(duì)每一個(gè)代碼分片,Chex會(huì)進(jìn)行數(shù)據(jù)流分析,并生成一個(gè)數(shù)據(jù)流概述(data-flow summary SDS),SDS是指每個(gè)分片source點(diǎn)和sink點(diǎn)與敏感數(shù)據(jù)的關(guān)系。第三步,Chex認(rèn)為程序的運(yùn)行路徑其實(shí)就是入口結(jié)點(diǎn)所能到達(dá)的代碼分片的排列組合,Chex分析所有 SDS之間數(shù)據(jù)流關(guān)系的排列組合,就可以找到所有數(shù)據(jù)流之間的依賴關(guān)系。從而,對(duì)于應(yīng)用的隱私泄露情況可以直接反映出來(lái)。Amandroid[13]是Android組件間數(shù)據(jù)流分析框架,在數(shù)據(jù)流分析的過(guò)程中Amandroid對(duì)所有對(duì)象的指向關(guān)系都進(jìn)行了分析,并且對(duì) intent的目標(biāo)和所攜帶的數(shù)據(jù)流進(jìn)行了分析。Amnadroid會(huì)將數(shù)據(jù)流分析的結(jié)果保存下來(lái),應(yīng)用中所有對(duì)象的數(shù)據(jù)依賴關(guān)系都可W在保存的結(jié)果中找到。該分析結(jié)果可以用來(lái)解決各種數(shù)據(jù)流相關(guān)問(wèn)題如隱私泄露、數(shù)據(jù)注入等。AndroidLeaks[14]通過(guò)靜態(tài)分析,將Android應(yīng)用反編譯,利用WALA[15]分析應(yīng)用的源代碼,建立 Android系統(tǒng)接口與對(duì)應(yīng)執(zhí)行權(quán)限之間的映射,從而得出對(duì)應(yīng)泄漏路徑。
2.2 動(dòng)態(tài)分析技術(shù)
2010年Enck等人在Android2.1操作系統(tǒng)上實(shí)現(xiàn)了動(dòng)態(tài)污點(diǎn)跟蹤系統(tǒng) TaintDroid[16],目前依舊僅適配到Android4.4。如圖2,TaintDroid通過(guò)對(duì)Dalvik VM 解釋器源碼的修改,加入對(duì)應(yīng)的污點(diǎn)標(biāo)記,定義了變量級(jí)別、方法級(jí)別、消息級(jí)別以及文件級(jí)別的污點(diǎn)追蹤。同時(shí),TaintDroid提供日志記錄數(shù)據(jù)系統(tǒng)行為,并使用 TaintDroidNotify向通知欄發(fā)送消息,提醒用戶存在隱私數(shù)據(jù)泄露。TaintDroid提供了Android平臺(tái)上通用的污點(diǎn)分析框架,其后有很多研究學(xué)者基于 TaintDroid作了更多特定用途的研究。AppFence[17]使用TaintDroid對(duì)用戶指定的信息類別進(jìn)行追蹤,并在這些信息將要通過(guò)網(wǎng)絡(luò)發(fā)送時(shí)進(jìn)行攔截或使用偽造的相似信息進(jìn)行替換。VetDroid[18]對(duì) TaintDroid進(jìn)行了擴(kuò)展,實(shí)現(xiàn)了基于權(quán)限的污點(diǎn)分析:當(dāng)應(yīng)用使用權(quán)限獲取相關(guān)敏感數(shù)據(jù)時(shí),權(quán)限使用的行為會(huì)被作為污點(diǎn)狀態(tài)進(jìn)行追蹤,從而對(duì)Android平臺(tái)上權(quán)限使用行為進(jìn)行分。TaintChaser[19]基于TaintDroid擴(kuò)展了隱私監(jiān)測(cè)范圍,包括IMEI、電話號(hào)碼、地理位置信息、相冊(cè)、錄音、通信錄、短信、通話記錄、電子郵件等,改進(jìn)了字符串跟蹤粒度,防止污點(diǎn)跟蹤過(guò)程中可能產(chǎn)生的污點(diǎn)爆炸問(wèn)題。除此之外,MockDroid[20],Pervasive Privacy[21]等都對(duì) TaintDroid進(jìn)行了不同程度的擴(kuò)展。Crowdroid[22]利用strace(linux的一個(gè)調(diào)試工具)來(lái)監(jiān)控Android系統(tǒng)的每一次系統(tǒng)調(diào)用和獲得的信號(hào),但是它沒(méi)有考慮來(lái)自Dalvik VM的信息,很難在與虛擬機(jī)上運(yùn)行的程序之間建立程序依賴關(guān)系,從而不利于與虛擬機(jī)上獲取的動(dòng)態(tài)信息綜合分析。Phosphor[23]是專門針對(duì)Java虛擬機(jī)平臺(tái)的污點(diǎn)追蹤系統(tǒng),可很好地移植到各類 JVM 上,包括 Dalvik虛擬機(jī)。Phosphor無(wú)需修改操作系統(tǒng),虛擬機(jī),甚至解釋器。Phosphor是一個(gè)基于變量級(jí)別的污點(diǎn)追蹤系統(tǒng),通過(guò)在JVM上層作一層適配,修改對(duì)象為所有字節(jié)碼,并保存對(duì)應(yīng)的污點(diǎn)標(biāo)簽。在對(duì) Dalvik虛擬機(jī)的適配上,僅僅做了相對(duì)于 TaintDroid很小的虛擬機(jī)改動(dòng)。除此之外,一些學(xué)者通過(guò)結(jié)合靜態(tài)、動(dòng)態(tài)分析技術(shù)檢測(cè)隱私泄露。Capper[24]通過(guò)對(duì)應(yīng)用進(jìn)行反編譯,通過(guò)字節(jié)碼重寫注入相應(yīng)的污點(diǎn)策略,并對(duì)應(yīng)用進(jìn)行重打包。當(dāng)應(yīng)用運(yùn)行時(shí),與相應(yīng)的服務(wù)端進(jìn)行通信,以此加入應(yīng)用上下文控制,輸出泄露情況。
圖2 TaintDroid工作原理Fig.2 TaitDroid Working Principle
目前,大量國(guó)內(nèi)外學(xué)者研究 Android平臺(tái)隱私泄露問(wèn)題,同時(shí)提出了很多有針對(duì)性的隱私泄露檢測(cè)方案。但根據(jù)我們的學(xué)習(xí)研究,尚未有統(tǒng)一的評(píng)估標(biāo)準(zhǔn)來(lái)評(píng)估和規(guī)范現(xiàn)有的檢測(cè)機(jī)制。文獻(xiàn)[25]從方案的實(shí)時(shí)性、系統(tǒng)修改、移植性等方面分析了TaintDroid等動(dòng)態(tài)分析方案修改系統(tǒng)源碼的缺陷。針對(duì)這一現(xiàn)狀,我們制定了如下的評(píng)估指標(biāo)。并通過(guò)這些指標(biāo),對(duì)現(xiàn)有的幾款隱私泄露檢測(cè)方案進(jìn)行橫向評(píng)估。
3.1 隱私泄露檢測(cè)方案評(píng)估標(biāo)準(zhǔn)
通過(guò)對(duì)現(xiàn)有的隱私泄露檢測(cè)方案的學(xué)習(xí)與使用,我們統(tǒng)計(jì)出隱私泄露檢測(cè)方案的一些主要特性指標(biāo)。主要如下:
1. 誤報(bào)率。系統(tǒng)在運(yùn)行時(shí),由于業(yè)務(wù)交互會(huì)涉及到一些常規(guī)的數(shù)據(jù)傳播。例如,傳統(tǒng)的寫入數(shù)據(jù)庫(kù)或保存到本地文件操作,有些檢測(cè)系統(tǒng)會(huì)當(dāng)成泄露路徑。
2. 漏報(bào)率。由于方案策略的不完備,亦或者待檢測(cè)應(yīng)用手段特殊,導(dǎo)致本該被檢測(cè)出來(lái)的泄漏路徑被忽略。這對(duì)于隱私泄露系統(tǒng)的檢測(cè)能力是一個(gè)極大的考驗(yàn)。
3. 移植性。指該方案是否會(huì)隨著Android版本的更新迭代而具備移植性。
4. 系統(tǒng)/應(yīng)用修改。該檢測(cè)方案是需要修改系統(tǒng)源碼、Android虛擬機(jī)、亦或者是待檢測(cè)應(yīng)用本身。
表1 隱私泄露檢測(cè)方案評(píng)估Tab.1 The Evaluation of Privacy Leak Detection Schemes
5. 及時(shí)性。能否在發(fā)生泄露的同時(shí),檢測(cè)到該泄露行為并提示給用戶。
6. 易用性。是否需要用戶過(guò)多參與以及是否有合理的提示。
3.2 橫向評(píng)估結(jié)果
我們通過(guò)對(duì)這目前這幾款完備的隱私泄露檢測(cè)方案進(jìn)行研究后,得到如表1橫向比較的結(jié)果。(表1中,“×”表示某檢測(cè)方案在該項(xiàng)指標(biāo)中表現(xiàn)不理想(“××”表示較差),“√”表示某檢測(cè)方案在該項(xiàng)指標(biāo)中表現(xiàn)良好(“√√”表示較為優(yōu)秀)。)以下是關(guān)于靜態(tài)分析與動(dòng)態(tài)分析的評(píng)估:
1. 靜態(tài)分析工作大多在應(yīng)用運(yùn)行前完成,主要通過(guò)靜態(tài)地分析程序代碼結(jié)構(gòu),控制流以及數(shù)據(jù)流的情況,對(duì)所有隱私數(shù)據(jù)相關(guān)的執(zhí)行路徑進(jìn)行列舉。靜態(tài)分析從本質(zhì)上保護(hù)了隱私信息泄露,但靜態(tài)分析有一些顯著的缺陷:
(1)靜態(tài)分析只能分析顯示信息流,對(duì)于相對(duì)錯(cuò)綜復(fù)雜的信息流,或者信息流出現(xiàn)異常情況等。都無(wú)法檢測(cè)出來(lái),因此其漏報(bào)率比較高。
(2)靜態(tài)分析對(duì)于Java反射,JNI到native層調(diào)用,以及動(dòng)態(tài)加載等這些 Android編程中的常用手段,不能檢測(cè)出隱私泄露。
(3)Android應(yīng)用不同于純Java應(yīng)用,沒(méi)有對(duì)應(yīng)的Main方法,同時(shí)各組件又含有生命周期,只靜態(tài)分析代碼并不能體現(xiàn)出生命周期這一概念?,F(xiàn)有的例如 FlowDroid,通過(guò)模擬“Main”方法并大量覆蓋系統(tǒng)API,這種方案務(wù)必會(huì)導(dǎo)致誤報(bào)率很高。
(4)靜態(tài)分析方案的分析結(jié)果往往是疑似路徑等專業(yè)結(jié)果,對(duì)于用戶而言,起點(diǎn)太高,需要一定的專業(yè)基礎(chǔ)。
2. 動(dòng)態(tài)分析由于自身的特點(diǎn)需要在程序運(yùn)行時(shí)對(duì)應(yīng)用泄漏情況進(jìn)行實(shí)時(shí)監(jiān)控,因此監(jiān)控策略的引入是主要研究目標(biāo)。按照現(xiàn)在主流的 TaintDroid的方案,引入污點(diǎn)追蹤體系,不需要用戶過(guò)多參與,但仍然有如下缺點(diǎn):
(1)對(duì) Android系統(tǒng)虛擬機(jī)的修改,這就對(duì)Android適配帶來(lái)問(wèn)題,目前 TaintDroid僅支持Android4.4,并一直未有更新的消息;同時(shí),對(duì)于像Capper這種對(duì)應(yīng)用反編譯,往字節(jié)碼中插入污點(diǎn)追蹤策略并重打包的方式,隨著應(yīng)用加固以及簽名技術(shù)的提高,導(dǎo)致這種方式失敗率增加。
(2)虛擬機(jī)解釋器加入污點(diǎn)標(biāo)記,導(dǎo)致虛擬機(jī)解釋時(shí)需占用更大內(nèi)存,且指令變得更加復(fù)雜,應(yīng)用運(yùn)行時(shí)會(huì)有很明顯的卡頓,對(duì)手機(jī)性能有嚴(yán)重影響;
(3)動(dòng)態(tài)分析跟蹤系統(tǒng)所有信息流行為,很有可能合法的信息流也被檢測(cè)出來(lái),產(chǎn)生誤報(bào)可能性增大,因此可能需要更高的泄露策略配置。
本文介紹了 Android平臺(tái)隱私泄露檢測(cè)的相關(guān)工作,首先給出了隱私的定義,介紹了 Android平臺(tái)現(xiàn)有的隱私保護(hù)機(jī)制,同時(shí)闡述了 Android平臺(tái)隱私泄露的原因。然后,重點(diǎn)綜述了現(xiàn)有的國(guó)內(nèi)外Android平臺(tái)隱私泄露檢測(cè)方案。最后,我們通過(guò)定義方案評(píng)估標(biāo)準(zhǔn),重點(diǎn)評(píng)估了幾個(gè)代表性的隱私泄露檢測(cè)方案,并給出靜態(tài)分析技術(shù)以及動(dòng)態(tài)分析技術(shù)的優(yōu)缺點(diǎn)。我們認(rèn)為,在未來(lái)關(guān)于隱私泄露檢測(cè)方面的研究,可以從以下兩方面進(jìn)行提高:
(1)降低誤報(bào)率與漏報(bào)率。從上面分析來(lái)看,現(xiàn)有的方案無(wú)論是靜態(tài)分析技術(shù)還是動(dòng)態(tài)分析技術(shù),泄露檢測(cè)產(chǎn)生的誤報(bào)率與漏報(bào)率都很高。因此,研究合適的策略來(lái)降低方案本身的誤報(bào)率漏報(bào)率是未來(lái)主要的研究方向。
(2)動(dòng)-靜結(jié)合分析技術(shù)。我們可以發(fā)現(xiàn),動(dòng)態(tài)分析技術(shù)與靜態(tài)分析技術(shù)各有自己的優(yōu)缺點(diǎn)。Capper作為一款動(dòng)-靜結(jié)合的檢測(cè)方案,整體指標(biāo)要優(yōu)于傳統(tǒng)的單一方案。因此,未來(lái)研究方向可以將動(dòng)-靜分析結(jié)合,這樣會(huì)產(chǎn)生更多優(yōu)秀的隱私泄露檢測(cè)方案。
[1] kantar. smartphone-os-market-share[OL]. 2016. http://cn-en.kantar.com/media/mobile/kantarworldpanel-comtech-smartphone-os-market-share/.
[2] 友盟. [友盟+]2016Q2中國(guó)移動(dòng)互聯(lián)網(wǎng)發(fā)展報(bào)告[OL].2016.07. http://tip.umeng.com/uploads/datareport/2016q2mobilerepory.pdf?spm=0.0.0.0.sKuwvE&file=2016q2mobilere pory.pdf.
[3] Android Developers. Requesting Permissions at Run Time[OL]. https://developer.android.com/training/permissions/requesting.html.
[4] Enck W, Octeau D, McDaniel P, et al. A Study of Android Application Security[C]//USENIX secu-rity symposium.2011, 2: 2.
[5] Mahaffey K, Hering J. App Attack-Surviving the Explosive Growth of Mobile Apps[J]. 2010.
[6] 智測(cè)云. Android應(yīng)用安全研究報(bào)告: 惡意扣費(fèi)與山寨App高居不下[OL]. 2016.03. http://www.smarterapps.cn/index.php?app=home&mod=Appinfo&act=articleDetail&id=71.
[7] 新浪科技. Android應(yīng)用審核亂象: 詐騙軟件沖上排行榜首[OL]. http://tech.sina.com.cn/i/2014-04-15/00379319140.shtml.
[8] Lam P, Bodden E, Lhota′k O, et al. The Soot framework for Java program analysis: a retrospec-tive[C]//Cetus Users and Compiler Infastructure Workshop (CETUS 2011). 2011, 15: 35.
[9] Arzt S, Rasthofer S, Fritz C, et al. Flowdroid: Precise context,flow, field, object-sensitive andlifecycle-aware taint analysis for android apps[J]. ACM SIGPLAN Notices, 2014, 49(6):259-269.
[10] Bodden E. Inter-procedural data-flow analysis with ifds/ide and soot[C]//Proceedings of the ACMSIGPLAN International Workshop on State of the Art in Java Program analysis. ACM,2012: 3-8.
[11] Li L, Bartel A, Bissyande′T F, et al. Iccta: Detecting inter-component privacy leaks in android apps[C]// Proceedings of the 37th International Conference on Software Engineering-Volume 1.IEEE Press, 2015: 280-291.
[12] Lu L, Li Z, Wu Z, et al. Chex: statically vetting android apps for component hijacking vulnera-bilities[C]//Proceedings of the 2012 ACM conference on Computer and communications security. ACM, 2012: 229-240.
[13] Wei F, Roy S, Ou X. Amandroid: A precise and general inter-component data flow analysis frame-work for security vetting of android apps[C]//Proceedings of the 2014 ACM SIGSAC Conferenceon Computer and Communications Security. ACM, 2014: 1329-1341.
[14] Gibler C, Crussell J, Erickson J, et al. AndroidLeaks:automatically detecting potential privacyleaks in android applications on a large scale[C]//International Conference on Trust and TrustworthyComputing. Springer Berlin Heidelberg, 2012: 291-307.
[15] wala.WALA[OL]. https://github.com/wala/WALA.
[16] Enck W, Gilbert P, Han S, et al. TaintDroid: an informationflow tracking system for realtimeprivacy monitoring on smartphones[J]. ACM Transactions on Computer Systems(TOCS), 2014, 32(2): 5.
[17] Hornyack P, Han S, Jung J, et al. These aren’t the droids you’re looking for: retrofitting androidto protect data from imperious applications[C]//Proceedings of the 18th ACM conference on Com-puter and communications security.ACM, 2011: 639-652.
[18] Pravin M N P. VetDroid: Analysis Using Permission for Vetting Undesirable Behaviours in Android Applications[J].
[19] 楊廣亮, 龔曉銳, 姚剛, 等. 一個(gè)面向Android的隱私泄露檢測(cè)系統(tǒng)[J]. 計(jì)算機(jī)工程, 2012, 38(23): 1-6.
[20] Beresford A R, Rice A, Skehin N, et al. Mockdroid: trading privacy for application functionality onsmartphones[C]//Proceedings of the 12th workshop on mobile computing systems and applications. ACM, 2011: 49-54.
[21] Ghasemi H, Haghighat A T, Razazi M, et al. Pervasive privacy: A practical context-aware systemto preserve privacy on android smartphones[C]//Information and Knowledge Technology (IKT), 2015 7th Conference on. IEEE, 2015: 1-6.
[22] Burguera I, Zurutuza U, Nadjm-Tehrani S. Crowdroid: behavior-based malware detection systemfor android[C]// Proceedings of the 1st ACM workshop on Security and privacy in smartphones andmobile devices. ACM, 2011: 15-26.
[23] Bell J, Kaiser G. Phosphor: illuminating dynamic data flow in commodity jvms[C]//ACM SIGPLAN Notices. ACM,2014, 49(10): 83-101.
[24] Zhang M, Yin H. Efficient, context-aware privacy leakage confinement for android applicationswithout firmware modding[C]//Proceedings of the 9th ACM symposium on Information, computerand communications security. ACM, 2014:259-270.
[25] Rastogi V. Uranine: Real-time Privacy Leakage Monitoring without System Modification for Android[M]//Security and Privacy in Communication Networks. Springer International Publishing, 2015.
Survey on Detecting of Application Privacy Leaksbased on Android
LI Zi-qing, WANG Yong-ning
(School of physics and electronic information engineering, Qinghai University for Nationalities QingHaiXin in 810007 China)
In recent years, with the rapid development of the Android mobile operating system, usercan use all kinds of applications conveniently. Privacy leak has become a serious security problem. This paper analyzed the key technologies of privacy leak detection existing in Android platform, andintroduced the current situation and progress in this field. This paper put forward the indicators tosolve the problem that the standard has not yet been unified for evaluating the current privacy detectiontechnologies. Finally, we evaluated these technologies and gave the assessments, hoping to promotethe criteria establishment of privacy leak detection.
: Android; Privacy; Leak and Detection
TP309
A
10.3969/j.issn.1003-6970.2017.10.014
本文著錄格式:李自清,王詠寧. Android平臺(tái)應(yīng)用隱私泄露檢測(cè)與評(píng)估技術(shù)[J]. 軟件,2017,38(10):77-82
教育部“春暉計(jì)劃”合作科研項(xiàng)目,(S2015037)
李自清(1975-),講師,碩士,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。