強(qiáng) 杰,潘 清,王 飛
(1.裝備學(xué)院 信息裝備系,北京 101416;2.裝備學(xué)院 研究生管理大隊,北京 101416)
Android系統(tǒng)信息泄露檢測研究綜述
強(qiáng) 杰1,2,潘 清1,王 飛1
(1.裝備學(xué)院 信息裝備系,北京 101416;2.裝備學(xué)院 研究生管理大隊,北京 101416)
隨著智能手機(jī)的廣泛應(yīng)用,Android系統(tǒng)的得到了大規(guī)模的普及,隨之而來的就是Android系統(tǒng)信息泄露的問題。本文從檢測泄露的機(jī)制出發(fā),從靜態(tài)檢測,動態(tài)檢測以及Android本身的安全保護(hù)機(jī)制出發(fā),詳細(xì)介紹了實現(xiàn)方式,最后對未來的Android系統(tǒng)檢測做出了展望。
手機(jī)安全;靜態(tài)檢測;動態(tài)檢測;動態(tài)污點(diǎn)跟蹤;訪問控制
近些年,Android 手機(jī)的普及十分迅速。iiMedia Research發(fā)布的數(shù)據(jù)[]指出,2014上半年 Android手機(jī)占有 89.9%中國智能手機(jī)市場份額。Strategy Analytics發(fā)布的數(shù)據(jù)[2]指出,2014年第四季度,Android手機(jī)占有 83.6%全球智能手機(jī)市場份額。Android 手機(jī)不僅滿足人們的溝通需求,還可被用于理財、網(wǎng)上購物等日?;顒?。并且手機(jī)內(nèi)通常存儲著一些有關(guān)用戶信息的隱私數(shù)據(jù),如短信、通訊錄、地理信息、照片等。如果這些信息泄露,會給用戶帶來嚴(yán)重的經(jīng)濟(jì)、精神損失。騰訊移動安全實驗室 2015年第一季度手機(jī)安全報告[3]顯示,2015年第一季度Android手機(jī)病毒包新增1829188個,相對去年同期,同比增長1200%。即2015年第一季度新增Android病毒包是2014年第一季度的13倍,是 2014年全年新增手機(jī)病毒包的1.82倍,其中隱私竊取類病毒占 2.5%的比例,雖然其相比 2014年總體病毒類型大盤中所占比例正在縮小,但該類病毒的“質(zhì)量”與智能化程度正在提升,正在演變成竊取用戶驗證碼或者竊取用戶短信中的個人隱私的高危病毒,而且還能隨意轉(zhuǎn)發(fā)用戶短信,耗費(fèi)用戶的話費(fèi),甚至還可能造成支付驗證碼被轉(zhuǎn)發(fā)、資金被盜刷等嚴(yán)重風(fēng)險。因此,Android手機(jī)隱私數(shù)據(jù)泄露是一個必須得到關(guān)注的問題。
本文針對Android 手機(jī)隱私泄露問題進(jìn)行了研究。首先介紹了Android 手機(jī)中的隱私數(shù)據(jù)源類型,然后介紹了現(xiàn)階段檢測隱私泄露技術(shù)以及現(xiàn)有的Android系統(tǒng)現(xiàn)有的保護(hù)機(jī)制及其缺陷。
Android 手機(jī)上存儲著和用戶相關(guān)的數(shù)據(jù),用于不同的功能。本節(jié)主要介紹兩種存在的用戶隱私數(shù)據(jù)類型,隱私數(shù)據(jù),也稱為個人識別信息 PII(Personally identifiable information),即應(yīng)用產(chǎn)生的數(shù)據(jù)和設(shè)備相關(guān)的信息,可以用來區(qū)分、聯(lián)系或定位個人或與他人進(jìn)行區(qū)分的信息:
應(yīng)用產(chǎn)生的數(shù)據(jù):短信,通訊錄,電話通話狀態(tài),通話記錄,日歷,瀏覽器瀏覽記錄,應(yīng)用緩存,最近訪問記錄,已安裝的應(yīng)用信息,登陸憑證(用戶名、密碼),認(rèn)證令牌,音頻,視頻,圖片等。
設(shè)備相關(guān)的信息:用戶手機(jī)號碼,SIM 卡串號(ICC-ID),國際移動用戶識別碼(IMSI),國際移動設(shè)備身份碼(IMEI),傳感器數(shù)據(jù)(如 GPS、加速度傳感器),手機(jī)型號,系統(tǒng)版本等。
2.1 靜態(tài)檢測
靜態(tài)檢測是在不執(zhí)行程序的條件下,通過數(shù)據(jù)流分析和控制流分析等技術(shù)對程序代碼進(jìn)行掃描,檢測程序是否存在隱私泄露的可能性。
目前 Android應(yīng)用程序的靜態(tài)分析的對象分為兩種情況,一種是將Android應(yīng)用程序還原為 java源碼進(jìn)行分析,一種是將 Android應(yīng)用程序還原為偽代碼。
Android應(yīng)用隱私泄露的靜態(tài)檢測方法分為三個階段:預(yù)處理、控制流與數(shù)據(jù)流分析、分析檢測。流程如圖1所示:
圖1 Android應(yīng)用隱私泄露靜態(tài)檢測流程[4]Fig.1 The static detection process of Android application privacy leak[4]
待檢測應(yīng)用程序首先通過預(yù)處理 Dedexer反編譯轉(zhuǎn)化成為可以進(jìn)行分析符號表和數(shù)據(jù)結(jié)構(gòu)。然后通過控制流、數(shù)據(jù)流分析,得出被檢測應(yīng)用程序的控制流圖以及函數(shù)調(diào)用圖。最后對控制流、數(shù)據(jù)流分析的結(jié)果進(jìn)行處理和篩選,并和預(yù)先定義的規(guī)則進(jìn)行比較,確定是否存在隱私泄露,并生成檢測報告。
預(yù)處理:目前大部分 Android應(yīng)用程序檢測隱私泄露的 App,如 LeakMiner,將應(yīng)用程序反編譯為 Java代碼進(jìn)行分析,但是受限于技術(shù)原因沒有100%完全還原為 Java代碼,故會造成程序信息缺失,對最終分析結(jié)果產(chǎn)生影響。另有一部分Android應(yīng)用程序檢測泄露的App采用偽代碼進(jìn)行分析,相比還原為Java代碼的優(yōu)勢為信息保留更完整,分析結(jié)果比前者也更加完善。
控制流與數(shù)據(jù)流分析:控制流和數(shù)據(jù)流分析是通過靜態(tài)分析將 Android應(yīng)用程序的代碼轉(zhuǎn)化為可進(jìn)行后續(xù)分析的數(shù)據(jù)信息。其中控制流分析包括生成 Android應(yīng)用程序的過程間控制流圖以及函數(shù)調(diào)用圖。通過控制流分析,可以得到程序的運(yùn)行特性,如程序代碼的執(zhí)行路徑等。數(shù)據(jù)流分析是對Android應(yīng)用程序中的數(shù)據(jù)如何在程序中傳遞進(jìn)行分析,包括類型推導(dǎo)、常量分析、類層次分析、定義使用鏈構(gòu)建、反射分析、別名分析等。由于數(shù)據(jù)流分析結(jié)果可能會對控制流分析的結(jié)果造成影響,例如通過數(shù)據(jù)流分析,有些程序點(diǎn)的控制流信息可能會得到更新。對于這些被更新的程序點(diǎn)需要重新進(jìn)行控制流分析,并在新的控制流分析的結(jié)果上再次進(jìn)行數(shù)據(jù)流分析。迭代直到控制流分析和數(shù)據(jù)流分析的結(jié)果達(dá)到穩(wěn)定,沒有新的信息被更新,才認(rèn)為控制流和數(shù)據(jù)流分析結(jié)束,進(jìn)行下一個檢測步驟。
分析檢測:污染分析是用于分析確認(rèn) Android應(yīng)用程序中是否存在隱私泄露的操作。污染分析把Android應(yīng)用程序中獲取隱私相關(guān)信息的程序點(diǎn)作為污染分析的“源點(diǎn)”,把 Android應(yīng)用程序的信息泄露點(diǎn)作為污染分析的“錨點(diǎn)”,如果在 Android應(yīng)用程序的某個程序點(diǎn),信息的傳遞會得到用戶的確認(rèn)并中斷,那么認(rèn)為此程序點(diǎn)為污染分析的“清除點(diǎn)”。依據(jù)這些定義信息,對控制流分析和數(shù)據(jù)流分析的結(jié)果進(jìn)行分析匹配。如果通過分析,存在有某個“錨點(diǎn)”所泄露的信息依賴于某個“源點(diǎn)”所獲取到的隱私信息,且在依賴路徑上沒有任何“清除點(diǎn)”,則認(rèn)為該“錨點(diǎn)”泄露的信息被“污染”,即存在隱私泄露的可能性。污染分析一般從“錨點(diǎn)”或“源點(diǎn)”開始進(jìn)行分析。以“錨點(diǎn)”開始進(jìn)行分析為例,依據(jù)數(shù)據(jù)流分析中的定義使用鏈的結(jié)果,去查找“錨點(diǎn)”所泄露的數(shù)據(jù)會被那些程序點(diǎn)的數(shù)據(jù)影響。之后再查找這些程序點(diǎn)的數(shù)據(jù)又會被那些程序點(diǎn)的數(shù)據(jù)影響。如此遞歸分析,直到找到這些數(shù)據(jù)的初始化或常量定義。之后對這整個“搜索樹”進(jìn)行掃描,看是否包含有“源點(diǎn)”。如果存在“源點(diǎn)”,則這個“搜索樹”上“源點(diǎn)”到“錨點(diǎn)”的路徑就是隱私泄露的可能傳播路徑。之后再確定此傳播路徑是否可行,例如是否包含有“清除點(diǎn)”。
2.2 動態(tài)檢測
動態(tài)檢測技術(shù)有傳統(tǒng)的沙箱技術(shù)以及動態(tài)污點(diǎn)跟蹤技術(shù)。
沙箱技術(shù)是程序隔離運(yùn)行機(jī)制,廣泛的應(yīng)用于軟件測試、病毒檢測等領(lǐng)域。沙箱技術(shù)在進(jìn)行隱私泄露的檢測時,需要檢測系統(tǒng)中讀取敏感信息、網(wǎng)絡(luò)通信等重要接口。當(dāng)程序通過這些端口時,給予及時的記錄。通過這種辦法,可以檢測到程序是否讀取了用戶敏感信息和是否通過網(wǎng)絡(luò)向外部發(fā)送數(shù)據(jù)。但由于系統(tǒng)檢測的不連續(xù)性,檢測到數(shù)據(jù)缺乏必然的邏輯關(guān)系和上下文關(guān)聯(lián)性,因此存在檢測判定程序是否泄露用戶數(shù)據(jù)的不準(zhǔn)確性。
動態(tài)污點(diǎn)跟蹤技術(shù)則是連續(xù)跟蹤數(shù)據(jù)流向,彌補(bǔ)了沙箱技術(shù)的不連續(xù)性的缺陷。主要應(yīng)用于漏洞挖掘等方面。動態(tài)污點(diǎn)跟蹤檢測隱私數(shù)據(jù)泄露時,把隱私數(shù)據(jù)作為污點(diǎn)數(shù)據(jù),隨后跟蹤其傳播,當(dāng)檢測到這些污點(diǎn)數(shù)據(jù)通過網(wǎng)絡(luò)、藍(lán)牙或者后臺短信等方式發(fā)送出去的時,即可判定使用該數(shù)據(jù)的程序存在隱私泄露。
FlowDroid[5]基于污點(diǎn)跟蹤靜態(tài)分析應(yīng)用中的一個組件內(nèi)的數(shù)據(jù)流動。TaintDroid[6]基于污點(diǎn)跟蹤在應(yīng)用程序執(zhí)行時跟蹤敏感數(shù)據(jù)流動,當(dāng)數(shù)據(jù)通過網(wǎng)絡(luò)接口離開本機(jī)時提醒用戶,以此用戶可以保護(hù)數(shù)據(jù)隱私安全。除此之外,還有IccTA[7], TaintChaser, DidFail等不基于不同形式的污點(diǎn)跟蹤檢測。
如上圖2所示,程序A,B中的曲線分別代表程序內(nèi)運(yùn)行的進(jìn)程,實線代表該進(jìn)程中沒有污點(diǎn)數(shù)據(jù),虛線代表存在污點(diǎn)數(shù)據(jù),不同虛線表示不同的污點(diǎn)數(shù)據(jù)。當(dāng)檢測到程序在讀取用戶隱私信息時,將讀取到的隱私數(shù)據(jù)標(biāo)記污點(diǎn)。而當(dāng)程序?qū)в形埸c(diǎn)的用戶敏感數(shù)據(jù)進(jìn)行操作時,能夠?qū)υ摬僮鬟M(jìn)行相應(yīng)處理,保證污點(diǎn)能夠跟隨隱私數(shù)據(jù)傳播下去。當(dāng)2個程序之間進(jìn)行通信時,污點(diǎn)也能跟隨數(shù)據(jù)正常跟蹤下去。例如,圖中程序A中的一個進(jìn)程(點(diǎn)虛線)將帶有污點(diǎn)的數(shù)據(jù)發(fā)送給程序B中的一個線程后,污點(diǎn)在該線程中能繼續(xù)跟蹤著數(shù)據(jù)傳播下去。當(dāng)程序把帶有污點(diǎn)的數(shù)據(jù)通過隱私泄露點(diǎn)發(fā)送到外面時, 則實時地記錄該行為。最后分析得到的日志,來判斷程序是否存在隱私泄露。如果該日志中存在程序?qū)⑽埸c(diǎn)數(shù)據(jù)發(fā)送出去的記錄,則判定 程序存在隱私泄露的問題。
圖2 動態(tài)污點(diǎn)跟蹤技術(shù)原理Fig.2 The principle of dynamic stain tracking technology
Android操作系統(tǒng)作為一款基于Linux內(nèi)核設(shè)計的源移動終端操作系統(tǒng),在安全性設(shè)計方面,主要沿用了傳統(tǒng)Linux中的訪問控制(Access Control)機(jī)制,同時對其進(jìn)行了增強(qiáng),創(chuàng)建了一套權(quán)限授予機(jī)制,對系統(tǒng)資源進(jìn)行了更細(xì)粒度的權(quán)限保護(hù)。Android將系統(tǒng)資源進(jìn)行分類,每類資源對應(yīng)相應(yīng)的用戶組。同時,Android操作系統(tǒng)制定了許多權(quán)限規(guī)則,規(guī)定何種權(quán)限歸屬于何種用戶組,從而形成了一個權(quán)限-用戶組-系統(tǒng)資源的映射關(guān)系[8-10]。因此只有在擁有特定權(quán)限的用戶組中的用戶才能訪問相應(yīng)的系統(tǒng)資源。例如只有INET用戶組和SYSTEM用戶組中的用戶才擁有創(chuàng)建Socket通信的權(quán)限。此外,Android系統(tǒng)在運(yùn)行時為每個應(yīng)用程序分配一個獨(dú)立的用戶ID,依靠 Linux中的 UID機(jī)制以達(dá)到隔離效果。Android安全模型是基于沙箱環(huán)境下的程序隔離機(jī)制,每個程序在自己的進(jìn)程空間運(yùn)行,不能影響或修改其它程序的執(zhí)行序列,該隔離機(jī)制通常在Linux內(nèi)核層實現(xiàn),其具體的實現(xiàn)方式包括數(shù)據(jù)的隔離和內(nèi)存空間的隔離。Android的沙箱隔離機(jī)制為程序的執(zhí)行提供了一個安全的環(huán)境,但同時也降低了系統(tǒng)功能性[11-13]。因此為在安全的前提下盡量提升系統(tǒng)功能性,Android引入了共享ID和權(quán)限機(jī)制。兩個程序可以通過共享ID和聲明權(quán)限,共享數(shù)據(jù)和應(yīng)用程序組件。共享ID允許程序共享數(shù)據(jù)和程序組件。多個程序要共享 ID,必須使用相同的數(shù)字證書簽名。在實際開發(fā)中,開發(fā)者可以通過使用相同的私鑰簽名實現(xiàn)共享ID,從而繞過隔離機(jī)制的限制,然而由于沒有統(tǒng)一的證書管理機(jī)構(gòu),開發(fā)者只能自行保管私鑰,因此帶來了很大的安全隱患。權(quán)限機(jī)制的使用非常廣泛,其使用方式包括定義和聲明兩種。其中每個程序在編寫時能定義一組權(quán)限,這組權(quán)限表示在其它程序獲得授權(quán)的情況下,該程序?qū)ν馓峁┑牟糠止δ埽涣硗?,每個程序還可以聲明一組權(quán)限,以獲取訪問其它程序或系統(tǒng)提供的接口的資格。聲明的權(quán)限在程序安裝時獲取,若用戶不同意授權(quán),則程序無法成功安裝,并且權(quán)限一旦獲取就無法更改。
結(jié)合靜態(tài)檢測方法和動態(tài)檢測方法的優(yōu)缺點(diǎn),以及現(xiàn)有的 Android保護(hù)機(jī)制,設(shè)計出一種新的檢測方法。該方法結(jié)合了目前的靜態(tài)和動態(tài)檢測方法,并且加入了現(xiàn)有實施的 Android保護(hù)機(jī)制。其流程圖見圖3:
圖3 檢測流程圖Fig.3 Dection Flow chart
通過該流程圖可以清楚地知道該檢測方法是如何進(jìn)行檢測信息泄露的。首先獲得應(yīng)用程序,將其反編譯成為Java文件,然后從中得到Mainfest.xml配置文件,根據(jù) Android現(xiàn)有的安全機(jī)制,過濾出超出安裝時權(quán)限的信息,如果不存在超出,則進(jìn)入下一步進(jìn)行靜態(tài)分析檢測,存在超出則反饋該程序存在信息泄露。
下一步進(jìn)行靜態(tài)分析測試,步驟和之前的敘述的一樣,在次不做贅述,靜態(tài)分析結(jié)束后生成靜態(tài)報告。對包含疑似泄露路徑的進(jìn)行動態(tài)分析檢測。進(jìn)行動態(tài)分析檢測步驟和之前敘述一樣,在此不做贅述,最終生成動態(tài)分析報告,根據(jù)分析報告來判定該程序是否存在信息泄露。
但是,此方法存在的問題是資源占用太大,手機(jī)系統(tǒng)資源是非常寶貴的,占用太大的資源會影響用戶的體驗。如果放在本地進(jìn)行測試,動態(tài)驗證就不易實現(xiàn)。所以目前這種解決辦法小范圍的應(yīng)用在國內(nèi)的一些 Android商城中,并且還加入了人工驗證的辦法,提高安全性和檢測準(zhǔn)確度。因此如何將該方法嵌入到手機(jī) Android系統(tǒng)中,并且盡量少的占用資源,是一個值得今后進(jìn)行研究的問題。
[1]2014半年中國智能手機(jī)市場監(jiān)測報告[OL].[2014-08-19].http: //www.iimedi a.cn/37560.html.The report of China's smartphone market monitoring in half a 2014[OL].[2014-08-19].http: //www.iimedi a.cn/37560.html.
[2]Android Captures 84% Share of Global Smartphone Shipments in Q3 2014[OL].2014-10-31].http: //blogs.strategyanalytics.com/WSS/?tag=/android.
[3]騰訊移動實驗室2015年第一季度手機(jī)安全報告[OL].[2015-5-12].http: //scan.qq.com/security_lab/news_detail_ 310.html.
Tencent mobile laboratory mobile phone security report in the first quarter of 2015 [OL].[2015-5-12].http://scan.qq.com/security_lab/news_detail_310.html.
[4]劉濤, 唐祝壽, 沈備軍.Android應(yīng)用隱私泄露的自動化檢測[J].計算機(jī)應(yīng)用與軟件, 2015, (3): 297-301.DOI: 10.3969/ j.issn.1000-386x.2015.03.070.
Liu Tao, Tang Zhushou , Shen BeiJun.The application of automatic detection of privacy l-eaks [J].Computer Applications and Software, 2015, (3): 297~301, 316.DOI: 10.3969/ j.issn.1000-386x.2015.03.070.
[5]Arzt S, Rasthofer S, Fritz C, et al.FlowDroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps[J].Acm Sigplan Notices, 2014, 49(181): 187-195.
[6]Enck W, Gilbert P, Chun B G, et al.TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones[C]// Proceedings of the 9th USENIX conference on Operating systems design and implementation.USENIX Association, 2010: 1-6.
[7]LI L, BARTELA, KLEIN J, et al.I know what leaked in your pocket: uncovering privacy leaks on Android Apps with Static TaintAnalysis[R].Luxembourg: TR-SNT-2014-9_978-2-87971-129-4, 2014.
[8]曾立鹍, 唐泉彬, 牛斗, Android 系統(tǒng)應(yīng)用程序組件安全性分析[J].軟件, 2014, 35(3): 147-151.
[9]黃文雄.面向Android 應(yīng)用的用戶行為分析方法[J].軟件, 2014, 35(12): 83-87.
[10]吳文煥.Android 應(yīng)用程序數(shù)字簽名機(jī)制研究[J].軟件, 2014, 35(2): 109-110.
[11]榮艷冬.Android 軟件權(quán)限系統(tǒng)的設(shè)計與實現(xiàn)[J].軟件, 2014, 35(2): 50-51.
[12]李淑民.Android 手機(jī)隱私泄露研究[J].軟件, 2015, 36(2): 69-72.
[13]邢曉燕, 金洪穎, 田敏.Android 系統(tǒng) Root 權(quán)限獲取與檢測[J].軟件, 2013, 34(12): 208-210.
Android System Information Leak Detection
QIANG Jie1,2, PAN Qing1, WANG Fei1
(1.Department of Information Equipment, Equipment Academy, BeiJing 2, 101416, P.R.China; 2.Company of Postgraduate Management, Equipment Academy, BeiJing 1,101416, P.R.China)
With the widespread use of smart phones, Android system has been a large-scale popularity, however followed by the problem of information leak.This paper is based on the mechanism of detecting leaks; it introduces the implementation methods from static detection, dynamic detection and security protection mechanism of Android system.Finally, we made a prospection on the Android system detection in the future.
Mobile security; Static detection; Dynamic detection; Dynamic stain tracking; Access control
TP309.2
A
10.3969/j.issn.1003-6970.2017.03.030
強(qiáng)杰(1992-),男,碩士研究生,主要研究方向信息安全;潘清(1964-),男,裝備學(xué)院教授,主要研究方向信息安全;王飛(1979-),男,裝備學(xué)院講師,主要研究方向可信計算。
本文著錄格式:強(qiáng)杰,潘清,王飛.Android系統(tǒng)信息泄露檢測研究綜述[J].軟件,2017,38(3):143-146