亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android Settings機(jī)制應(yīng)用安全性分析與評(píng)估

        2016-11-14 02:12:47路曄綿應(yīng)凌云蘇璞睿馮登國(guó)靖二霞谷雅聰
        計(jì)算機(jī)研究與發(fā)展 2016年10期
        關(guān)鍵詞:百度設(shè)備分析

        路曄綿 應(yīng)凌云 蘇璞睿 馮登國(guó) 靖二霞 谷雅聰

        (中國(guó)科學(xué)院軟件研究所可信計(jì)算與信息保障實(shí)驗(yàn)室 北京 100190) (luyemian@tca.iscas.ac.cn)

        ?

        Android Settings機(jī)制應(yīng)用安全性分析與評(píng)估

        路曄綿 應(yīng)凌云 蘇璞睿 馮登國(guó) 靖二霞 谷雅聰

        (中國(guó)科學(xué)院軟件研究所可信計(jì)算與信息保障實(shí)驗(yàn)室 北京 100190) (luyemian@tca.iscas.ac.cn)

        Settings機(jī)制是Android系統(tǒng)向應(yīng)用程序提供的訪問和配置部分全局設(shè)置的機(jī)制,Settings中的數(shù)據(jù)可被設(shè)備上的所有應(yīng)用讀取.實(shí)際使用中,一些Android應(yīng)用及第三方庫(kù)誤將IMEI、BSSID、地理位置等隱私數(shù)據(jù)或關(guān)鍵配置信息寫入Settings中,使得系統(tǒng)面臨嚴(yán)重的隱私數(shù)據(jù)泄露、關(guān)鍵配置信息泄露和污染等安全風(fēng)險(xiǎn).在分析大量樣本的基礎(chǔ)上,總結(jié)了Settings數(shù)據(jù)中泄露的隱私數(shù)據(jù)類型和關(guān)鍵配置信息,并針對(duì)部分Android應(yīng)用和第三方庫(kù)設(shè)計(jì)了數(shù)據(jù)劫持攻擊和拒絕服務(wù)攻擊方案,驗(yàn)證并確認(rèn)了Settings機(jī)制在使用過程中的安全風(fēng)險(xiǎn);針對(duì)該問題設(shè)計(jì)和實(shí)現(xiàn)了基于污點(diǎn)分析的Settings機(jī)制應(yīng)用漏洞靜態(tài)檢測(cè)工具——SettingsHunter,該工具利用污點(diǎn)分析技術(shù)實(shí)現(xiàn)了對(duì)Android應(yīng)用及第三方庫(kù)Settings數(shù)據(jù)中的隱私數(shù)據(jù)泄露和關(guān)鍵配置信息泄露問題的自動(dòng)檢測(cè),該工具將第三方庫(kù)與宿主應(yīng)用的分析分離,優(yōu)化了分析過程,提高了分析效率和分析能力.使用SettingsHunter對(duì)3477個(gè)應(yīng)用進(jìn)行檢測(cè)的結(jié)果顯示,23.5%的應(yīng)用在Settings數(shù)據(jù)的使用中存在隱私數(shù)據(jù)泄露或配置信息泄露問題,其中90.7%的應(yīng)用中Settings相關(guān)風(fēng)險(xiǎn)操作完全來自于第三方庫(kù).實(shí)驗(yàn)結(jié)果表明:Settings中隱私數(shù)據(jù)泄露和關(guān)鍵配置信息泄露問題嚴(yán)重,第三方庫(kù)中的問題尤為突出.

        安卓應(yīng)用;第三方庫(kù);隱私泄露;數(shù)據(jù)污染;靜態(tài)污點(diǎn)分析

        Android系統(tǒng)是目前最流行的移動(dòng)智能設(shè)備操作系統(tǒng),據(jù)Gartner的統(tǒng)計(jì)數(shù)據(jù)顯示,2015年第4季度Android系統(tǒng)的市場(chǎng)占有率為80.7%,遠(yuǎn)遠(yuǎn)超過其他移動(dòng)設(shè)備操作系統(tǒng)[1].Android應(yīng)用的繁榮是Android流行的重要因素之一,每一臺(tái)Android設(shè)備上都同時(shí)存在有大量的Android應(yīng)用.為了更好地協(xié)同工作,應(yīng)用之間的數(shù)據(jù)共享變得越來越普遍,例如,同一臺(tái)設(shè)備上的多款亞馬遜應(yīng)用之間共享當(dāng)前用戶登錄的亞馬遜賬號(hào),可有效避免用戶重復(fù)登錄,改進(jìn)用戶體驗(yàn).Android系統(tǒng)中,應(yīng)用之間存在多種數(shù)據(jù)共享方式,其中Settings機(jī)制是Android系統(tǒng)提供給應(yīng)用程序共享全局配置信息的重要機(jī)制.

        Settings機(jī)制將Android系統(tǒng)和應(yīng)用的共享數(shù)據(jù)存儲(chǔ)在系統(tǒng)創(chuàng)建的數(shù)據(jù)庫(kù)settings.db中,方便有需要的應(yīng)用隨時(shí)進(jìn)行訪問.Settings中存儲(chǔ)的數(shù)據(jù)根據(jù)數(shù)據(jù)來源可以分為2類:1)Android系統(tǒng)寫入Settings中的全局配置信息,包括設(shè)備名稱、飛行模式狀態(tài)、wifi狀態(tài)等設(shè)備和系統(tǒng)相關(guān)信息,設(shè)備上所有的Android應(yīng)用都可以通過系統(tǒng)提供的Settings API讀取這些信息,進(jìn)行相應(yīng)的操作,例如,應(yīng)用在發(fā)送短信前可以讀取當(dāng)前的飛行模式狀態(tài),若飛行模式打開則不進(jìn)行短信的發(fā)送;2)Android應(yīng)用寫入Settings中的數(shù)據(jù)和配置信息,該類數(shù)據(jù)多為應(yīng)用在運(yùn)行過程中需要時(shí)常檢測(cè)和使用的數(shù)據(jù)項(xiàng),例如,手機(jī)安全應(yīng)用“樂安全”將當(dāng)前是否為訪客模式的狀態(tài)信息寫入Settings數(shù)據(jù)中,在當(dāng)前用戶想要訪問聯(lián)系人列表、通話記錄和短信息時(shí)讀取該值以判斷用戶是否具有相應(yīng)的操作權(quán)限.

        由于Settings中的數(shù)據(jù)保存在Android系統(tǒng)創(chuàng)建的數(shù)據(jù)庫(kù)中,即使寫數(shù)據(jù)的應(yīng)用程序被用戶卸載,之前寫入的數(shù)據(jù)也不會(huì)消失,因此很多第三方庫(kù)采用Settings機(jī)制為處于不同宿主應(yīng)用中的同一個(gè)第三方庫(kù)保存部分需要滿足數(shù)據(jù)一致性的信息,當(dāng)初始寫入該數(shù)據(jù)的第三方庫(kù)宿主應(yīng)用被刪除時(shí),其他宿主應(yīng)用中的第三方庫(kù)依舊可以正常訪問該數(shù)據(jù).例如百度云推送SDK將當(dāng)前設(shè)備對(duì)應(yīng)的channel_id信息存入Settings數(shù)據(jù)中,從而該設(shè)備上其他使用百度云推送SDK的應(yīng)用可以共享該數(shù)據(jù).

        Settings機(jī)制在Android應(yīng)用和第三方庫(kù)中的使用已十分普遍,然而其面臨的安全問題卻很少被關(guān)注.由于Settings機(jī)制中存儲(chǔ)的數(shù)據(jù)可被設(shè)備上所有的Android應(yīng)用讀取,且具備相關(guān)權(quán)限的應(yīng)用可以修改其中的內(nèi)容,因此Settings機(jī)制在使用過程中面臨的安全問題主要分為2個(gè)方面:1)隱私數(shù)據(jù)泄露風(fēng)險(xiǎn),當(dāng)Android應(yīng)用或第三方庫(kù)誤將隱私數(shù)據(jù)寫入Settings中時(shí),其他應(yīng)用可輕易獲取該數(shù)據(jù)的內(nèi)容,例如,百度推出的百度云推送SDK、百度地圖SDK等多款第三方庫(kù)都將IMEI的明文數(shù)值寫入了Settings數(shù)據(jù)中,使得其他不具有任何權(quán)限的應(yīng)用可以輕松讀取當(dāng)前設(shè)備的標(biāo)識(shí)符;2)關(guān)鍵配置信息污染風(fēng)險(xiǎn),當(dāng)Android應(yīng)用或第三方庫(kù)誤將關(guān)鍵配置信息寫入Settings數(shù)據(jù)中時(shí),惡意應(yīng)用可以通過修改該值影響目標(biāo)應(yīng)用的正常運(yùn)行,例如,百度云推送SDK將推送數(shù)據(jù)轉(zhuǎn)發(fā)中心所屬應(yīng)用的包名寫入了Settings數(shù)據(jù)中,通過修改該值即可將推送數(shù)據(jù)的轉(zhuǎn)發(fā)中心變?yōu)橥瑯忧度肓税俣仍仆扑蚐DK的攻擊應(yīng)用,從而劫持發(fā)送給其他應(yīng)用的推送數(shù)據(jù).

        本文在對(duì)大量樣本進(jìn)行分析的基礎(chǔ)上,總結(jié)了當(dāng)前Settings機(jī)制在應(yīng)用過程中存在的安全問題,通過攻擊方案實(shí)際驗(yàn)證評(píng)估了其安全風(fēng)險(xiǎn);針對(duì)該問題提出了相應(yīng)的檢測(cè)方法并研發(fā)了檢測(cè)工具SettingsHunter,利用該工具完成了大規(guī)模Android應(yīng)用的檢測(cè),對(duì)Settings機(jī)制應(yīng)用安全問題進(jìn)行了評(píng)估.本文的貢獻(xiàn)主要包括4個(gè)方面:

        1) 完成了Android應(yīng)用及第三方庫(kù)中Settings機(jī)制應(yīng)用的安全性分析,發(fā)現(xiàn)了大量的隱私數(shù)據(jù)泄露、關(guān)鍵配置信息泄露和污染等安全問題,總結(jié)了Settings機(jī)制應(yīng)用過程中泄露的數(shù)據(jù)類型及對(duì)該問題的利用模式;

        2) 設(shè)計(jì)了針對(duì)Settings機(jī)制的攻擊方案,成功實(shí)施了對(duì)Android應(yīng)用及第三方庫(kù)的數(shù)據(jù)劫持攻擊和拒絕服務(wù)攻擊,確認(rèn)了Settings機(jī)制的不當(dāng)使用帶來的安全風(fēng)險(xiǎn);

        3) 提出了基于污點(diǎn)傳播分析的Settings應(yīng)用漏洞檢測(cè)方法,并實(shí)現(xiàn)了原型系統(tǒng)SettingsHunter,該系統(tǒng)利用污點(diǎn)分析技術(shù)檢測(cè)Android應(yīng)用及第三方庫(kù)Settings數(shù)據(jù)中的隱私泄露和關(guān)鍵配置信息泄露問題,并將第三方庫(kù)與宿主應(yīng)用的分析分離,優(yōu)化了分析過程,提高了分析效率和分析能力;

        4) 完成了系統(tǒng)的實(shí)驗(yàn)評(píng)估,對(duì)來自于Google Play、豌豆莢、安智市場(chǎng)上的3477個(gè)應(yīng)用進(jìn)行了檢測(cè),實(shí)驗(yàn)結(jié)果表明:23.5%的應(yīng)用將隱私數(shù)據(jù)或關(guān)鍵配置信息寫入了Settings數(shù)據(jù)中,其中90.7%的應(yīng)用中Settings相關(guān)風(fēng)險(xiǎn)操作完全由嵌入的第三方庫(kù)引入.

        1 Settings機(jī)制分析

        Android系統(tǒng)提供的Settings機(jī)制框架圖如圖1所示:

        Fig. 1 Framework of Settings mechanism.圖1 Settings機(jī)制框架圖

        Android系統(tǒng)在framework中實(shí)現(xiàn)了一個(gè)名為SettingsProvider的應(yīng)用,在其中創(chuàng)建了數(shù)據(jù)庫(kù)settings.db,用來存儲(chǔ)全局配置信息,同時(shí)創(chuàng)建了名為“SettingsProvider”的Content Provider組件封裝訪問該數(shù)據(jù)庫(kù)的接口.之后,android.provider.Settings類通過binder機(jī)制跨進(jìn)程訪問SettingsProvider中的數(shù)據(jù),而處于最上層的Android應(yīng)用通過android.provider.Settings提供的API函數(shù)操作Settings數(shù)據(jù).為了提高訪問效率,Settings機(jī)制中存在2個(gè)數(shù)據(jù)緩沖區(qū),一個(gè)位于SettingsProvider的Content Provider組件中,另一個(gè)位于android.provider.Settings類中.Android應(yīng)用訪問的數(shù)據(jù)首先在android.provider.Settings類的本地緩沖區(qū)中進(jìn)行處理,無法命中時(shí)進(jìn)入SettingsProvider中進(jìn)行處理.Android系統(tǒng)提供的Settings應(yīng)用屬于Settings機(jī)制中Android Apps中的一個(gè),是Android系統(tǒng)提供給用戶操作Settings數(shù)據(jù)的圖形操作界面.

        在settings.db數(shù)據(jù)庫(kù)中,全局配置信息分別存儲(chǔ)在名為“global”,“secure”和“system”的3張表中,另外還有其他一些表格存儲(chǔ)書簽等用戶相關(guān)信息.在實(shí)現(xiàn)了多用戶機(jī)制的Android系統(tǒng)中,global表只為設(shè)備的所有者(owner user)創(chuàng)建,secure和system表則是每一個(gè)用戶單獨(dú)擁有一份,不同用戶之間的表不能進(jìn)行交叉操作.但是絕大多數(shù)用戶在使用Android設(shè)備的過程中仍是采用單用戶的使用模式,因此對(duì)于這些設(shè)備上的Android應(yīng)用來說,Settings中的數(shù)據(jù)依舊是全部可讀取的.

        3張表中的數(shù)據(jù)對(duì)所有Android應(yīng)用來說均是可讀的,讀操作所需的權(quán)限READ_SETTINGS為normal級(jí)別權(quán)限,不需要在應(yīng)用程序的AndroidManifest.xml文件中明確列出也不需要用戶明確授權(quán),可以直接使用.對(duì)global表和secure表中數(shù)據(jù)進(jìn)行的寫操作受到WRITE_SECURE_SETTINGS權(quán)限的保護(hù),對(duì)system表中數(shù)據(jù)進(jìn)行的寫操作受到WRITE_SETTINGS權(quán)限的保護(hù).其中WRITE_SETTINGS權(quán)限為dangerous級(jí)別權(quán)限,可被第三方Android應(yīng)用申請(qǐng)使用,而WRITE_SECURE_SETTINGS為signatureOrSystem級(jí)別權(quán)限,只能被Android系統(tǒng)應(yīng)用申請(qǐng)使用,意味著對(duì)于第三方Android應(yīng)用而言,可進(jìn)行寫操作的數(shù)據(jù)只有system表中的數(shù)據(jù).

        global,secure和system表中記錄均為3個(gè)字段,分別為_id,name和value,其中_id為INTEGER類型數(shù)據(jù),后2者為TEXT類型數(shù)據(jù);而android.provider.Settings類中API函數(shù)的操作對(duì)象是name-value對(duì),分別對(duì)應(yīng)數(shù)據(jù)表中的name字段和value字段,其中value可為String,int,long,float這4種數(shù)據(jù)類型之一,Settings API將傳遞過來的value數(shù)據(jù)統(tǒng)一轉(zhuǎn)變?yōu)镾tring類型數(shù)據(jù)后傳遞給SettingsProvider應(yīng)用,由SettingsProvider應(yīng)用的Content Provider組件完成相應(yīng)的數(shù)據(jù)庫(kù)操作.

        Settings API分為get和put兩類,其中g(shù)et用于數(shù)據(jù)讀取,put用于數(shù)據(jù)寫入,對(duì)應(yīng)數(shù)據(jù)庫(kù)的insert和update操作.由于android.provider.Settings沒有提供刪除數(shù)據(jù)的API函數(shù),因此通過Settings API寫入的數(shù)據(jù),即使在Android應(yīng)用被卸載后依然存在于設(shè)備中,即使設(shè)備重啟也無法將該數(shù)據(jù)刪除,意味著如果曾經(jīng)有應(yīng)用將IMEI寫入了Settings數(shù)據(jù)中,那么該設(shè)備之后安裝的應(yīng)用都可以在不申請(qǐng)相關(guān)權(quán)限的情況下獲取當(dāng)前設(shè)備的IMEI值.

        2 Settings數(shù)據(jù)安全問題分析

        第三方Android應(yīng)用及第三方庫(kù)對(duì)Settings機(jī)制的不安全使用包括2種類型:1)將隱私數(shù)據(jù)寫入Settings數(shù)據(jù)項(xiàng)中;2)將關(guān)鍵配置信息寫入Settings數(shù)據(jù)項(xiàng)中.由于Settings中的數(shù)據(jù)可被同一設(shè)備上的所有應(yīng)用讀取,申請(qǐng)了相關(guān)權(quán)限的應(yīng)用也可以修改Settings中存儲(chǔ)的數(shù)據(jù),因此Settings機(jī)制的不安全使用可能導(dǎo)致的安全問題相應(yīng)地可以分為2類:隱私數(shù)據(jù)泄露和關(guān)鍵配置數(shù)據(jù)泄露與污染.

        2.1 隱私數(shù)據(jù)泄露

        經(jīng)測(cè)試發(fā)現(xiàn),Android應(yīng)用寫入Settings中的數(shù)據(jù)可能與多種隱私數(shù)據(jù)相關(guān),例如IMEI、IMSI、MAC地址、BSSID、基站信息等.利用這些數(shù)據(jù),攻擊者可以實(shí)現(xiàn)準(zhǔn)確識(shí)別用戶設(shè)備、追蹤用戶位置改變等多種攻擊目的.

        1) 識(shí)別用戶設(shè)備

        Android系統(tǒng)通常使用IMEI,ANDROID_ID,序列號(hào)等數(shù)據(jù)來唯一標(biāo)識(shí)一臺(tái)設(shè)備,當(dāng)應(yīng)用獲取了這些信息后即可準(zhǔn)確地將當(dāng)前設(shè)備從其他設(shè)備中分辨出來.Stevens等人的研究[2]指出,通過使用這些標(biāo)識(shí)信息,廣告庫(kù)可以將不同宿主應(yīng)用在不同時(shí)間段收集的信息對(duì)應(yīng)到同一臺(tái)設(shè)備上,從而達(dá)到長(zhǎng)時(shí)間追蹤用戶信息的目的.可見保護(hù)設(shè)備標(biāo)識(shí)符對(duì)于用戶隱私數(shù)據(jù)的保護(hù)有著重要的意義.

        當(dāng)同一開發(fā)者的多款應(yīng)用安裝于同一臺(tái)設(shè)備上,或設(shè)備上存在使用同一個(gè)第三方庫(kù)的多款應(yīng)用時(shí),為了統(tǒng)一這些應(yīng)用使用的設(shè)備標(biāo)識(shí),以方便遠(yuǎn)端服務(wù)器進(jìn)行數(shù)據(jù)統(tǒng)計(jì),部分應(yīng)用會(huì)將IMEI等設(shè)備標(biāo)識(shí)通過一定運(yùn)算后寫入Settings數(shù)據(jù)項(xiàng)中,方便其他相關(guān)應(yīng)用讀取.當(dāng)寫入的數(shù)據(jù)通過MD5等Hash算法轉(zhuǎn)換時(shí),其他應(yīng)用無法讀取對(duì)應(yīng)的IMEI等數(shù)據(jù)的明文信息,然而實(shí)際中存在部分應(yīng)用并沒有對(duì)寫入Settings中的數(shù)據(jù)進(jìn)行加密及Hash保護(hù),導(dǎo)致其他無關(guān)應(yīng)用可以在不申請(qǐng)相關(guān)權(quán)限的情況下獲取IMEI等設(shè)備標(biāo)識(shí)的明文信息,造成數(shù)據(jù)泄露.而另一方面,經(jīng)過了加密及Hash保護(hù)的IMEI等數(shù)據(jù)依舊具備唯一標(biāo)識(shí)一臺(tái)設(shè)備的屬性,通過讀取該值,其他應(yīng)用也可以達(dá)到準(zhǔn)確識(shí)別當(dāng)前設(shè)備的目的.

        本文發(fā)現(xiàn)在百度推出的多款應(yīng)用及第三方庫(kù)中均存在將明文IMEI值寫入Settings中的現(xiàn)象,其數(shù)據(jù)項(xiàng)的鍵值(name)為“bd_setting_i”.百度系應(yīng)用還會(huì)計(jì)算IMEI和ANDROID_ID的MD5值寫入名為“com.baidu.deviceid”的Settings數(shù)據(jù)項(xiàng)中,以作為當(dāng)前設(shè)備的唯一標(biāo)識(shí)符.除此之外,安全應(yīng)用“樂安全”將IMEI值寫入了名為“ReaperAssignedDeviceId”的數(shù)據(jù)項(xiàng)中;搜狗推送服務(wù)將IMEI明文信息寫入了名為“sogou_push_device_id”和“SOGOU_UUID”的數(shù)據(jù)項(xiàng)中.通過讀取這些信息,惡意應(yīng)用可以在不申請(qǐng)任何權(quán)限的情況下獲取當(dāng)前設(shè)備的唯一標(biāo)識(shí)符,用于之后用戶信息的追蹤.

        2) 追蹤用戶位置改變

        Android應(yīng)用為了獲取用戶的位置信息,通常使用LocationManager讀取準(zhǔn)確的經(jīng)緯度信息,除此之外,Android應(yīng)用還可以通過基站信息和BSSID值推斷大致的位置信息.其中,BSSID是Android設(shè)備當(dāng)前所連無線局域網(wǎng)網(wǎng)關(guān)的MAC地址,雖然局域網(wǎng)內(nèi)部設(shè)備的MAC地址與設(shè)備地理位置并不直接相關(guān),然而Zhou等人[3]指出,由于越來越多的公司通過收集無線熱點(diǎn)的MAC地址在GPS無法使用的時(shí)候推斷用戶的地理位置,因此在Android設(shè)備上BSSID信息的泄露即意味著存在設(shè)備地理位置泄露的可能性.

        本文發(fā)現(xiàn)百度云推送SDK將BSSID寫入了Settings中名為“com.baidu.android.pushservice.lac”的數(shù)據(jù)項(xiàng)中,只要Android設(shè)備上存在1個(gè)使用了百度云推送SDK的應(yīng)用,其他任何應(yīng)用都可以在不申請(qǐng)ACCESS_WIFI_STATE權(quán)限的情況下讀取當(dāng)前設(shè)備的BSSID值.惡意應(yīng)用可以通過讀取該值后調(diào)用Google等公司的BSSID信息查詢接口獲取用戶大致的地理位置信息.

        2.2 關(guān)鍵配置數(shù)據(jù)泄露與污染

        作為配置信息,Android應(yīng)用和第三方庫(kù)寫入Settings中的數(shù)據(jù)多是為了在運(yùn)行過程中判斷執(zhí)行流程.當(dāng)Settings中的數(shù)據(jù)影響到Android應(yīng)用或第三方庫(kù)的關(guān)鍵運(yùn)行邏輯時(shí),這些數(shù)據(jù)被攻擊程序修改將導(dǎo)致受害應(yīng)用的運(yùn)行受到嚴(yán)重影響.本節(jié)介紹了3個(gè)攻擊場(chǎng)景,其中前2個(gè)攻擊場(chǎng)景通過修改第三方庫(kù)寫入Settings中的配置信息截獲目標(biāo)應(yīng)用應(yīng)當(dāng)接收或發(fā)送的數(shù)據(jù),實(shí)施數(shù)據(jù)劫持攻擊;第3個(gè)攻擊通過修改Settings中的配置信息破壞應(yīng)用及第三方庫(kù)正常功能的運(yùn)行,達(dá)到拒絕服務(wù)攻擊的目的.

        1) 劫持私聊數(shù)據(jù)

        Android推送服務(wù)SDK通過在Android應(yīng)用與推送服務(wù)器之間創(chuàng)建并維持1條socket長(zhǎng)連接的方式,提供服務(wù)器端向客戶端主動(dòng)發(fā)送消息的功能,并保證消息的實(shí)時(shí)性.由于同一設(shè)備上可能存在多個(gè)使用了同一推送服務(wù)SDK的Android應(yīng)用,為了減少資源消耗,部分SDK選擇在多個(gè)應(yīng)用之間共享1條socket長(zhǎng)連接,由創(chuàng)建該連接的應(yīng)用作為推送數(shù)據(jù)的轉(zhuǎn)發(fā)中心,接收從服務(wù)器端推送的數(shù)據(jù)并通過sendBroadcast等函數(shù)轉(zhuǎn)發(fā)給目標(biāo)應(yīng)用.在上述應(yīng)用場(chǎng)景下,使用同一推送服務(wù)SDK的多個(gè)應(yīng)用需要知曉當(dāng)前的推送數(shù)據(jù)轉(zhuǎn)發(fā)中心是哪個(gè)應(yīng)用,以避免重復(fù)創(chuàng)建socket長(zhǎng)連接,破壞推送服務(wù)SDK的運(yùn)行邏輯.為了達(dá)到數(shù)據(jù)共享的目的,一些推送服務(wù)SDK將擔(dān)任推送數(shù)據(jù)轉(zhuǎn)發(fā)中心的Android應(yīng)用包名寫入了Settings中,使得設(shè)備上所有的應(yīng)用都可以讀取該值,同時(shí)申請(qǐng)了WRITE_SETTINGS權(quán)限的應(yīng)用可以修改其中數(shù)據(jù).

        國(guó)內(nèi)市場(chǎng)占有率最高的百度云推送Android SDK即使用了Settings機(jī)制保存推送數(shù)據(jù)轉(zhuǎn)發(fā)中心所屬應(yīng)用包名.使用百度云推送的應(yīng)用被安裝啟動(dòng)后,其中的SDK會(huì)讀取Settings中名為“com.baidu.push.cur_pkg”數(shù)據(jù)項(xiàng)的值,如果得到的結(jié)果不為null,且其對(duì)應(yīng)的應(yīng)用中屬于百度云推送的service組件處于運(yùn)行狀態(tài)中,其所用SDK的版本不低于當(dāng)前應(yīng)用所用SDK的版本,則當(dāng)前應(yīng)用不修改Settings中的數(shù)值,繼續(xù)使用原有的數(shù)據(jù)轉(zhuǎn)發(fā)中心.若從Settings中獲取的數(shù)據(jù)值為null,判斷所有使用百度云推送服務(wù)的應(yīng)用中SharedPreferences中存儲(chǔ)的優(yōu)先級(jí)值,將優(yōu)先級(jí)值最高的應(yīng)用作為推送數(shù)據(jù)轉(zhuǎn)發(fā)中心.優(yōu)先級(jí)值的大小與百度云推送SDK的版本值正相關(guān).

        本文設(shè)計(jì)了一個(gè)攻擊應(yīng)用,在應(yīng)用中嵌入百度云推送SDK,并對(duì)其中讀取Settings數(shù)據(jù)的操作進(jìn)行hook,在百度云推送SDK讀取Settings中“com.baidu.push.cur_pkg”數(shù)據(jù)項(xiàng)的值時(shí),將返回值替換為null,同時(shí)將本應(yīng)用下Sharedpreferences中的值修改為10000,此時(shí)百度云推送SDK將自動(dòng)把“com.baidu.push.cur_pkg”數(shù)據(jù)項(xiàng)的值修改為攻擊應(yīng)用的包名,而不論攻擊應(yīng)用的真實(shí)SDK版本值是多少.使用這種方法,即使攻擊應(yīng)用使用的百度云推送SDK版本不是當(dāng)前設(shè)備中最高的版本,也可以將數(shù)據(jù)轉(zhuǎn)發(fā)中心成功變更為攻擊應(yīng)用自身.由于百度云推送的數(shù)據(jù)在數(shù)據(jù)轉(zhuǎn)發(fā)中心處以明文形式傳播,所以攻擊應(yīng)用可以獲取所有推送數(shù)據(jù)的明文信息.本文將攻擊應(yīng)用安裝在已安裝了“Pogo看演出”應(yīng)用的Android手機(jī)上,成功獲取了“Pogo看演出”應(yīng)用的用戶lulu通過百度云推送收到的私聊信息,如圖2所示.從截獲到的消息中可以看到發(fā)送者的昵稱“l(fā)ilylucy”以及發(fā)送的消息內(nèi)容“have a nice day”.圖3為用戶lulu實(shí)際看到的私聊界面.

        Fig. 2 Data intercepted by attack app.圖2 攻擊程序截獲的信息

        Fig. 3 Chatting interface of user lulu.圖3 用戶lulu的私聊界面

        2) 獲取特定應(yīng)用列表

        騰訊信鴿推送SDK會(huì)在設(shè)備上實(shí)現(xiàn)一個(gè)本地Server并開啟一個(gè)Watchdog端口接收使用了信鴿推送SDK的應(yīng)用發(fā)送過來的一些信息,該端口號(hào)保存在Settings中名為“com.tencent.tpnsWatchdog-Port”的數(shù)據(jù)項(xiàng)中.

        本文設(shè)計(jì)了一個(gè)攻擊應(yīng)用,在Service組件中實(shí)現(xiàn)了一個(gè)本地Server并將其端口號(hào)設(shè)定為6000,同時(shí)將Settings中“com.tencent.tpnsWatchdogPort”數(shù)據(jù)項(xiàng)的值修改為6 000.此外該Service組件還注冊(cè)了監(jiān)聽Settings中數(shù)據(jù)改變的ContentObserver,以便在檢測(cè)到其他應(yīng)用修改“com.tencent.tpns-WatchdogPort”數(shù)據(jù)項(xiàng)的值時(shí)將其改回6 000.在攻擊應(yīng)用順利啟動(dòng)本地Server并修改“com.tencent.tpnsWatchdogPort”數(shù)據(jù)項(xiàng)的值后,當(dāng)設(shè)備上使用騰訊信鴿推送SDK的應(yīng)用被打開或被安裝時(shí),攻擊應(yīng)用將收到當(dāng)前設(shè)備上使用了騰訊信鴿推送SDK的應(yīng)用列表,如圖4所示,列表中的信息包括應(yīng)用的包名及應(yīng)用使用騰訊信鴿SDK時(shí)申請(qǐng)的AccessId.列表中的第1項(xiàng)為發(fā)送者的包名,后面為當(dāng)前設(shè)備上所有使用騰訊信鴿推送SDK的應(yīng)用列表.

        Fig. 5 Framework of SettingsHunter.圖5 SettingsHunter系統(tǒng)架構(gòu)圖

        Fig. 4 Application list received by attack app.圖4 攻擊程序收到的應(yīng)用列表信息

        在騰訊信鴿推送SDK 2.45版本中,WatchdogPort在Settings中的數(shù)據(jù)項(xiàng)不再直接使用“com.tencent.tpnsWatchdogPort”作為名稱,而是將該字符串進(jìn)行MD5運(yùn)算后作為名稱,同時(shí)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行了加密.為了獲取該版本SDK傳輸?shù)絎atchdogPort上的數(shù)據(jù),攻擊程序?qū)㈤_啟另一個(gè)本地Server,并通過信鴿推送SDK中自帶的解密函數(shù)進(jìn)行解密.

        3) 拒絕服務(wù)攻擊

        很多應(yīng)用和第三方庫(kù)寫入Settings中的配置數(shù)據(jù)都有著固定的類型或格式,如果數(shù)據(jù)類型被修改或格式被破壞,將導(dǎo)致相應(yīng)模塊運(yùn)行失敗,停止提供正常服務(wù).例如,騰訊信鴿推送SDK將收到的推送消息id進(jìn)行加密后存入Settings數(shù)據(jù)中,當(dāng)收到新消息時(shí)會(huì)判斷Settings數(shù)據(jù)中是否存儲(chǔ)有該消息的id,以判斷是否為重放消息.攻擊程序?qū)ettings數(shù)據(jù)中存放消息id的數(shù)據(jù)項(xiàng)的值改為“test”,從而導(dǎo)致騰訊信鴿SDK解密失敗,無法正常處理收到的推送數(shù)據(jù),導(dǎo)致數(shù)據(jù)無法傳遞給目標(biāo)應(yīng)用.此外,通過修改安全應(yīng)用“樂安全”寫入Settings數(shù)據(jù)中“guest_mode_on”數(shù)據(jù)項(xiàng)的值,攻擊程序可以將訪客模式禁用,從而取消對(duì)聯(lián)系人等數(shù)據(jù)的訪問限制.

        3 SettingsHunter的設(shè)計(jì)與實(shí)現(xiàn)

        為了檢測(cè)Android應(yīng)用和第三方庫(kù)寫入Settings數(shù)據(jù)中的隱私數(shù)據(jù)和關(guān)鍵配置信息,本文設(shè)計(jì)并實(shí)現(xiàn)了Settings數(shù)據(jù)靜態(tài)檢測(cè)工具——SettingsHunter.SettingsHunter通過靜態(tài)污點(diǎn)分析技術(shù)檢測(cè)Android應(yīng)用和第三方庫(kù)是否將獲取的隱私數(shù)據(jù)作為Settings寫操作API函數(shù)的參數(shù)以及是否將Settings中讀取的數(shù)據(jù)用于關(guān)鍵操作API函數(shù)的參數(shù),以此判斷Settings數(shù)據(jù)中是否存在隱私數(shù)據(jù)泄露和關(guān)鍵配置數(shù)據(jù)泄露的安全問題.

        SettingsHunter的系統(tǒng)架構(gòu)如圖5所示,主要分為3部分功能,分別為預(yù)處理(pre-analysis)、污點(diǎn)分析(taint analysis)和第三方庫(kù)優(yōu)化(library optimizer).其中,預(yù)處理部分以apk樣本文件作為輸入,從中提取申請(qǐng)的權(quán)限信息,判斷是否包含WRITE_SETTINGS權(quán)限,將包含有上述權(quán)限的apk文件作為候選樣本進(jìn)行下面的分析,同時(shí)輸出權(quán)限檢測(cè)結(jié)果用于之后的統(tǒng)計(jì)分析;污點(diǎn)分析部分根據(jù)配置好的sourcesink函數(shù)構(gòu)建過程間控制流圖(ICFG),并追蹤污點(diǎn)數(shù)據(jù)在過程間控制流圖中的傳播;第三方庫(kù)優(yōu)化部分為污點(diǎn)分析部分提供第三方庫(kù)信息,消除已知第三方庫(kù)對(duì)分析效率和分析結(jié)果帶來的影響,并發(fā)掘和提取新的第三方庫(kù)信息.SettingsHunter基于Androguard[4],F(xiàn)lowdroid[5]和mysql數(shù)據(jù)庫(kù)[6]實(shí)現(xiàn)相關(guān)功能.

        在SettingsHunter的設(shè)計(jì)中,污點(diǎn)分析和第三方庫(kù)優(yōu)化是其核心功能,下面將重點(diǎn)進(jìn)行介紹.

        3.1 基于污點(diǎn)分析的數(shù)據(jù)泄露檢測(cè)

        SettingsHunter中的污點(diǎn)分析將指定的source函數(shù)的返回結(jié)果作為污點(diǎn)源,追蹤污點(diǎn)數(shù)據(jù)在程序代碼中的傳播,當(dāng)發(fā)現(xiàn)污點(diǎn)數(shù)據(jù)到達(dá)指定的sink函數(shù)時(shí)輸出檢測(cè)結(jié)果.

        SettingsHunter的檢測(cè)分為隱私數(shù)據(jù)泄露檢測(cè)和關(guān)鍵配置數(shù)據(jù)使用檢測(cè)2部分,根據(jù)檢測(cè)目的的不同,選用的sourcesink函數(shù)也有所區(qū)別.

        對(duì)于隱私數(shù)據(jù)泄露檢測(cè),污點(diǎn)分析模塊將傳統(tǒng)的獲取隱私數(shù)據(jù)的Android API作為source函數(shù),將Settings.System類下的put類API選為sink函數(shù).SettingsHunter將隱私泄露檢測(cè)部分的source函數(shù)分為DeviceId,Location,WifiInfo,Database,Others這5種類別,每種類別的說明如表1所示:

        Table 1 Descriptions of Source Function Categories in

        對(duì)于關(guān)鍵配置信息檢測(cè),SettingsHunter關(guān)注的是修改其值后可允許攻擊應(yīng)用訪問本不可訪問的目標(biāo)應(yīng)用的數(shù)據(jù)或啟動(dòng)本不應(yīng)啟動(dòng)的目標(biāo)應(yīng)用組件的數(shù)據(jù)項(xiàng),因此將組件間傳送數(shù)據(jù)的API函數(shù)、設(shè)置URIURL的API函數(shù)、創(chuàng)建socket的API函數(shù)等作為sink函數(shù),相應(yīng)地將其分為ICC,URI,Network和Others這4種類別,每一類別的說明如表2所示.SettingsHunter將Settings.System中的get類API選為該部分檢測(cè)的source函數(shù).

        Table 2 Descriptions of Sink Function Categories in Key Configuration Detection

        由于第三方Android應(yīng)用及第三方庫(kù)自定義的Settings數(shù)據(jù)只能寫入system表中,因此在上述2部分的檢測(cè)中都只考慮了Settings.System類提供的操作函數(shù).

        3.1.2 污點(diǎn)分析

        污點(diǎn)數(shù)據(jù)在程序代碼中的傳播分析基于現(xiàn)有的靜態(tài)污點(diǎn)分析工具Flowdroid進(jìn)行開發(fā).FlowDroid是一個(gè)流敏感、上下文敏感、對(duì)象敏感和字段敏感的靜態(tài)污點(diǎn)分析工具,用于檢測(cè)Android應(yīng)用中可能存在的隱私數(shù)據(jù)泄露問題.Flowdroid提供過程間控制流圖(ICFG)的構(gòu)建及污點(diǎn)數(shù)據(jù)在ICFG中的傳播分析2部分功能.

        雖然Flowdroid的檢測(cè)精度可以達(dá)到字段級(jí)別,但是過于精確的分析不可避免會(huì)帶來極大的時(shí)間和空間消耗,為了提高Flowdroid的可用性,不得不在準(zhǔn)確度和效率之間進(jìn)行折中.SettingsHunter根據(jù)具體的使用場(chǎng)景對(duì)Flowdroid進(jìn)行了2部分的優(yōu)化,分別為過程間控制流圖精簡(jiǎn)和分析配置優(yōu)化.

        1) 過程間控制流圖精簡(jiǎn)

        為了降低過程間控制流圖的規(guī)模、提高污點(diǎn)分析的效率,在Flowdroid構(gòu)建過程間控制流圖之前,SettingsHunter將對(duì)apk文件中的callback函數(shù)進(jìn)行預(yù)處理,如果發(fā)現(xiàn)在某個(gè)callback函數(shù)與Settings接口函數(shù)之間存在可達(dá)路徑,則選為候選callback函數(shù),否則在Flowdroid的控制流圖構(gòu)建過程中將不再考慮該callback函數(shù)可達(dá)的代碼.

        2) 分析配置優(yōu)化

        SettingsHunter參考了Flowdroid的開發(fā)者在實(shí)際分析中使用的配置[7-8],并結(jié)合具體的分析場(chǎng)景,對(duì)污點(diǎn)分析模塊進(jìn)行了如下配置:

        ① 不考慮污點(diǎn)數(shù)據(jù)在隱式流中的傳播;

        ② 使用非數(shù)據(jù)流敏感的別名搜索算法;

        ③ 將字段的訪問路徑最大長(zhǎng)度設(shè)置為3;

        ④ 不分析應(yīng)用布局文件中可能存在的隱私數(shù)據(jù)源,即不將用戶通過界面控件輸入的數(shù)據(jù)看為隱私數(shù)據(jù);

        ⑤ 將array看為一個(gè)整體進(jìn)行污點(diǎn)分析,而不區(qū)分其中的具體元素;

        ⑥ 不分析污點(diǎn)數(shù)據(jù)在exception處理函數(shù)中的傳播.

        以上配置雖然會(huì)在分析過程中引入少量誤報(bào)和漏報(bào),但可以大大提高污點(diǎn)分析模塊的實(shí)際可用性,在實(shí)際分析中是可以接受的.

        3.2 第三方庫(kù)分析優(yōu)化

        SettingsHunter針對(duì)第三方庫(kù)進(jìn)行的優(yōu)化處理主要包括2部分:1)為污點(diǎn)分析提供已知第三方庫(kù)包名信息,便于精簡(jiǎn)其構(gòu)建的過程間控制流圖,提高分析效率;2)在樣本文件的分析過程中發(fā)掘新的第三方庫(kù)并收集其污點(diǎn)分析結(jié)果.

        在當(dāng)前的Android應(yīng)用開發(fā)過程中,開發(fā)者大量使用了各種第三方庫(kù)訪問某些服務(wù)或簡(jiǎn)化開發(fā)過程,導(dǎo)致同一個(gè)第三方庫(kù)可能存在于多個(gè)Android應(yīng)用中,這一現(xiàn)狀會(huì)帶來3類問題:1)導(dǎo)致Settings-Hunter的污點(diǎn)分析過程中多次重復(fù)分析相同的第三方庫(kù)代碼;2)Android應(yīng)用中大量使用的第三方庫(kù)會(huì)嚴(yán)重影響SettingsHunter的分析速度,Wang等人[9]發(fā)現(xiàn)1個(gè)Android應(yīng)用中可能有超過60%的代碼來自于第三方庫(kù)的使用,這就意味著在污點(diǎn)分析過程中可能有60%甚至更多的分析時(shí)間耗費(fèi)在第三方庫(kù)代碼中;3)對(duì)Settings數(shù)據(jù)的使用定責(zé)不明,例如一個(gè)善意的Android應(yīng)用本身的功能當(dāng)中并不包含對(duì)Settings數(shù)據(jù)的操作,但是因?yàn)槠渲惺褂昧税俣仍仆扑蚐DK,導(dǎo)致污點(diǎn)分析的結(jié)果顯示該應(yīng)用向Settings中寫入了隱私數(shù)據(jù)和關(guān)鍵配置信息,檢測(cè)出的安全問題將被歸責(zé)于該應(yīng)用的開發(fā)者,然而實(shí)際的問題出現(xiàn)在該應(yīng)用使用的第三方庫(kù)中.為了解決這些問題,SettingsHunter設(shè)計(jì)了第三方庫(kù)優(yōu)化模塊,在過程間控制流圖的構(gòu)建過程中將第三方庫(kù)的代碼剔除,有效縮減過程間控制流圖的規(guī)模,提高污點(diǎn)分析的運(yùn)行效率.

        SettingsHunter針對(duì)第三方庫(kù)的優(yōu)化分為2部分:

        1) 先驗(yàn)排除

        作者首先提取了部分已知第三方庫(kù)的包名,在SettingsHunter構(gòu)建函數(shù)調(diào)用圖和過程間控制流圖的過程中去除第三方庫(kù)相關(guān)的代碼.

        先驗(yàn)排除中的第三方庫(kù)信息來源于2部分:①人工下載的國(guó)內(nèi)常用的30個(gè)第三方庫(kù),從其中的jar文件中提取包名信息;②Li等人從Google Play上145萬多個(gè)apk文件中提取的1353個(gè)第三方庫(kù)包名信息[10].

        為了提取先驗(yàn)排除的第三方庫(kù)中Settings數(shù)據(jù)使用的情況,SettingsHunter在分析樣本文件的過程中將記錄包含有該第三方庫(kù)包名的apk文件,在全部樣本分析結(jié)束后,從包含有該第三方庫(kù)包名的apk文件中隨機(jī)選取3個(gè)apk文件進(jìn)行再次分析,將該第三方庫(kù)代碼加入過程間控制流圖的構(gòu)建過程,并在尋找source函數(shù)時(shí)只考慮該第三方庫(kù)使用到的source函數(shù),從而避免對(duì)原apk文件自身功能的重復(fù)分析.提取3個(gè)apk文件分析結(jié)果的交集作為該第三方庫(kù)的分析結(jié)果.

        2) 動(dòng)態(tài)反饋

        對(duì)于未提前獲取的第三方庫(kù)信息,Settings-Hunter在污點(diǎn)分析過程中統(tǒng)計(jì)每一對(duì)source-sink的調(diào)用函數(shù)所屬包名信息,若發(fā)現(xiàn)包含某一對(duì)source-sink的包名在5個(gè)以上apk文件中出現(xiàn),則判定該包名屬于第三方庫(kù)包名,存入圖5的Library Information中,當(dāng)SettingsHunter在以后的樣本分析中再次遇到該包名時(shí)將不再進(jìn)行函數(shù)調(diào)用圖和控制流圖的構(gòu)建.

        第三方庫(kù)包名的選取條件包括4條:

        ① 不以宿主應(yīng)用包名為前綴;

        ② 不以android,java,javax等系統(tǒng)包名為前綴;

        ③ 以”.”分割的字段數(shù)量大于2;

        ④ 以”.”分割的字段其字符串長(zhǎng)度均大于1.

        其中第4條用于排除混淆后的包名,一些本身并不相同的包名在經(jīng)過混淆之后會(huì)變得相同,因此為了減少誤報(bào),需要將混淆的包名去除.一般混淆字段的包名多以單個(gè)英文字母命名,因此將判斷條件中字符串長(zhǎng)度設(shè)置為1可以有效減少誤報(bào).雖然有些混淆字段長(zhǎng)度會(huì)大于1,但是SettingsHunter對(duì)于第三方庫(kù)包名的檢測(cè)是基于擁有同樣的source-sink對(duì)為前提進(jìn)行的,整個(gè)檢測(cè)過程結(jié)合了行為特征和文本特征2個(gè)方面的內(nèi)容,因此即使文本特征的檢測(cè)結(jié)果會(huì)有誤報(bào),但結(jié)合行為特征后也可以有效降低誤報(bào)率.

        此外,由于第三方庫(kù)的包名字段數(shù)量一般為2~4,因此當(dāng)發(fā)現(xiàn)的候選包名字段大于4時(shí),只截取前4個(gè)字段作為第三方庫(kù)包名.

        SettingsHunter將樣本分析過程中檢測(cè)到的包名及對(duì)應(yīng)的source與sink函數(shù)存入數(shù)據(jù)庫(kù),每找到一次該記錄則將數(shù)據(jù)庫(kù)中該記錄的count字段值加1,當(dāng)count字段值為5時(shí),判定檢測(cè)到的包名為第三方庫(kù)包名,將其寫入Library Information中,用于SettingsHunter在后續(xù)樣本文件的分析過程中去除對(duì)該包名下代碼的分析.

        3.3 SettingsHunter誤報(bào)漏報(bào)分析

        SettingsHunter可能產(chǎn)生的誤報(bào)和漏報(bào)主要來自于污點(diǎn)分析過程中使用的Flowdroid工具.由于3.1.2節(jié)中使用一些特殊配置在Flowdroid的運(yùn)行效率和精確度之間進(jìn)行了折中,因此不可避免會(huì)引入一些誤報(bào)和漏報(bào).其中別名算法的選擇和array的處理會(huì)引入少量誤報(bào),其他的配置會(huì)引入少量漏報(bào).此外Flowdroid本身并不能很好地處理組件間通信過程中的數(shù)據(jù)流動(dòng),因此會(huì)導(dǎo)致部分漏報(bào)的產(chǎn)生.

        除了上述情形,由于第三方庫(kù)不同版本之間對(duì)Settings數(shù)據(jù)的使用可能存在差異,而不同應(yīng)用可能使用了同一第三方庫(kù)的不同版本,因此針對(duì)第三方庫(kù)提取的分析結(jié)果可能會(huì)與實(shí)際情況存在些微差異.

        盡管存在誤報(bào)和漏報(bào),但Flowdroid進(jìn)行數(shù)據(jù)流分析的精確度高于絕大多數(shù)現(xiàn)有的分析工具,因此基于Flowdroid開發(fā)的SettingsHunter的分析結(jié)果依舊具備很高的參考價(jià)值.

        4 實(shí)驗(yàn)與分析

        本節(jié)將展示作者使用SettingsHunter對(duì)收集到的樣本進(jìn)行檢測(cè)的結(jié)果,并對(duì)其進(jìn)行分析和說明.

        4.1 測(cè)試樣本來源

        作者從安智(Anzhi)市場(chǎng)20類應(yīng)用中隨機(jī)搜集了1 011個(gè)Android應(yīng)用,從豌豆莢(Wandoujia)市場(chǎng)18類應(yīng)用中隨機(jī)搜集了1 220個(gè)Android應(yīng)用,從Google Play的28類應(yīng)用中搜集了1 326個(gè)Android應(yīng)用,3個(gè)應(yīng)用市場(chǎng)一共搜集了3 557個(gè)應(yīng)用作為實(shí)驗(yàn)樣本集.所有應(yīng)用均收集于2016年5月份,能較好地反映當(dāng)前Android應(yīng)用對(duì)Settings數(shù)據(jù)的使用情況.

        4.2 實(shí)驗(yàn)結(jié)果分析

        1) 權(quán)限分析結(jié)果

        3個(gè)應(yīng)用市場(chǎng)搜集的應(yīng)用中有80個(gè)應(yīng)用無法使用Androguard進(jìn)行分析,因此SettingsHunter的實(shí)際分析樣本集包含3 477個(gè)樣本.3 477個(gè)樣本中含WRITE_SETTINGS權(quán)限的應(yīng)用數(shù)量及其所占比例如表3所示.可見Android應(yīng)用對(duì)Settings機(jī)制的使用十分普遍.

        Table 3 Result of Permission Analysis

        2) 第三方庫(kù)信息統(tǒng)計(jì)

        在SettingsHunter分析的樣本中,檢測(cè)使用到的第三方庫(kù)包名有433個(gè),其中39個(gè)包含Settings數(shù)據(jù)的使用,20個(gè)存在隱私數(shù)據(jù)泄露或關(guān)鍵配置信息泄露的隱患,其中包含7個(gè)在SettingsHunter的分析過程中新發(fā)現(xiàn)的第三方庫(kù)包名.針對(duì)第三方庫(kù)的隱私泄露檢測(cè)結(jié)果如表4所示,關(guān)鍵配置數(shù)據(jù)使用檢測(cè)結(jié)果如表5所示.

        Table 4 Result of Privacy Leakage Detection of

        Table 5 Result of Key Configuration Detection of

        雖然檢測(cè)結(jié)果顯示有問題的第三方庫(kù)數(shù)量并不多,但是使用這些第三方庫(kù)的應(yīng)用數(shù)量卻達(dá)到785個(gè),占樣本總數(shù)的22.6%,占含有WRITE_SETTINGS權(quán)限樣本總數(shù)的51.8%,可見其影響十分廣泛.其中根據(jù)包名可識(shí)別出的知名第三方庫(kù)有百度云推送SDK、百度地圖SDK、百度定位SDK、騰訊信鴿推送SDK等.

        3) Android應(yīng)用信息統(tǒng)計(jì)

        為了更好地展現(xiàn)第三方庫(kù)代碼對(duì)Android應(yīng)用行為的影響,本部分將Android應(yīng)用的統(tǒng)計(jì)結(jié)果分為不包含第三方庫(kù)和包含第三方庫(kù)2部分進(jìn)行展示.

        3個(gè)應(yīng)用市場(chǎng)中Android應(yīng)用的隱私泄露檢測(cè)結(jié)果如表6所示,關(guān)鍵配置數(shù)據(jù)使用檢測(cè)結(jié)果如表7所示.其中“no-lib”表示去除應(yīng)用中第三方庫(kù)代碼之后的檢測(cè)結(jié)果,“with-lib”表示添加了第三方庫(kù)分析結(jié)果之后的檢測(cè)結(jié)果.

        在3 477個(gè)樣本中,SettingsHunter共檢測(cè)出問題樣本818個(gè),占樣本總數(shù)的23.5%,去除第三方庫(kù)代碼后問題樣本個(gè)數(shù)為76個(gè),即僅因嵌入了第三方庫(kù)而引入了安全問題的樣本數(shù)量為742個(gè),占問題樣本總數(shù)的90.7%.由此可見,第三方庫(kù)對(duì)Android應(yīng)用安全的影響不容小覷.

        Table 6 Result of Privacy Peakage Detection of Android Applications

        Table 7 Result of Key Configuration Detection of Android Applications

        5 討 論

        本文發(fā)現(xiàn)的安全問題,本質(zhì)在于Android應(yīng)用或第三方庫(kù)的開發(fā)者誤將敏感信息寫入了可被設(shè)備上所有應(yīng)用訪問的公共存儲(chǔ)空間Settings中,因此直觀的安全解決方案是采用其他安全的數(shù)據(jù)共享方式代替Settings數(shù)據(jù)共享機(jī)制.

        其中SharedPreferences只允許與其所屬應(yīng)用擁有相同簽名及相同sharedUserId的應(yīng)用進(jìn)行數(shù)據(jù)讀寫,當(dāng)SharedPreferences的打開模式設(shè)置為MODE_WORLD_READABLE模式時(shí),同一設(shè)備上的任意應(yīng)用都可以讀取其中的內(nèi)容,但是寫操作依舊只有簽名相同且sharedUserId相同的應(yīng)用才可進(jìn)行.

        Content Provider是應(yīng)用程序?qū)ν馓峁?shù)據(jù)訪問接口的常見方式,其掩蓋了底層數(shù)據(jù)存儲(chǔ)方式的不同,向應(yīng)用程序提供了讀寫數(shù)據(jù)的統(tǒng)一接口.只要應(yīng)用程序?qū)ontent Provider組件公開,其他應(yīng)用便可以讀寫其底層存儲(chǔ)的數(shù)據(jù).為了提供對(duì)Content Provider組件的訪問控制,應(yīng)用程序可以設(shè)置相應(yīng)的讀寫權(quán)限,只有具備相關(guān)權(quán)限的應(yīng)用才可以通過該Content Provider組件訪問底層存儲(chǔ)的數(shù)據(jù).

        Broadcast Receiver組件主要用來接收數(shù)據(jù)改變的通知,從而改變應(yīng)用自身存儲(chǔ)的數(shù)據(jù)內(nèi)容,例如Amazon Seller應(yīng)用的登錄賬號(hào)退出時(shí)會(huì)通過sendBroadcast函數(shù)向同一設(shè)備上的Kindle應(yīng)用發(fā)送當(dāng)前賬號(hào)退出信息,此時(shí)再打開Kindle應(yīng)用將需要重新進(jìn)行登錄.與Broadcast Receiver相似,通過Service組件來共享數(shù)據(jù)時(shí)同樣是將數(shù)據(jù)的改變通過bindService函數(shù)傳遞給創(chuàng)建該Service組件的應(yīng)用.此外,為了提供訪問控制,應(yīng)用程序也可以為Broadcast Receiver組件和Service組件設(shè)置訪問權(quán)限,只有具備相應(yīng)權(quán)限的應(yīng)用才可以通過send-Broadcast和bindService函數(shù)向該應(yīng)用傳遞數(shù)據(jù).

        上述4種數(shù)據(jù)共享方案中,獲取對(duì)Shared-Preferences的完整讀寫權(quán)限需要同一開發(fā)者開發(fā)的應(yīng)用方能滿足簽名相同且sharedUserId相同的條件,而其余3種均是使用公開組件進(jìn)行數(shù)據(jù)訪問和傳播,為了防止非授權(quán)應(yīng)用訪問相關(guān)數(shù)據(jù),需要為公開組件設(shè)置訪問權(quán)限,未設(shè)置訪問權(quán)限的公開組件也將面臨數(shù)據(jù)泄露和配置數(shù)據(jù)污染的問題.公開組件的訪問權(quán)限一般為應(yīng)用自定義權(quán)限,一個(gè)應(yīng)用需要申請(qǐng)自定義權(quán)限時(shí)一般也要同時(shí)在自己的AndroidManifest.xml文件中定義該權(quán)限,因此設(shè)備上可能有多個(gè)聲明了同一自定義權(quán)限的應(yīng)用存在,在Android 5.0之后,只有具有相同開發(fā)者簽名的應(yīng)用才可以聲明相同的自定義權(quán)限,因此在Android 5.0之后,只有同一開發(fā)者的應(yīng)用才可能使用公開組件的方式進(jìn)行數(shù)據(jù)共享.

        綜上所述,只有同一開發(fā)者開發(fā)的應(yīng)用才可能安全使用上述4種數(shù)據(jù)共享方案,對(duì)于宿主應(yīng)用由不同開發(fā)者開發(fā)且簽名密鑰不同的第三方庫(kù)而言則無法很好適用.

        對(duì)于百度云推送等確實(shí)需要在不同宿主應(yīng)用之間共享數(shù)據(jù)的第三方庫(kù)而言,其安全共享數(shù)據(jù)的目標(biāo)在于阻止非授權(quán)的其他應(yīng)用讀寫共享數(shù)據(jù)以及阻止惡意宿主應(yīng)用修改配置數(shù)據(jù),因此設(shè)計(jì)安全共享數(shù)據(jù)方案的難點(diǎn)在于區(qū)分讀寫操作的請(qǐng)求來源于第三方庫(kù)還是其宿主應(yīng)用或其他應(yīng)用.直觀的方案是使用函數(shù)調(diào)用棧的信息來區(qū)分操作Settings數(shù)據(jù)的函數(shù)調(diào)用來源,然而Seo等人[11]指出,Android應(yīng)用可以使用原生代碼(native code)篡改Dalvik調(diào)用棧的內(nèi)容,使得通過調(diào)用棧區(qū)分操作來源的方法失效.因此,設(shè)計(jì)第三方庫(kù)的安全共享數(shù)據(jù)方案的前提是設(shè)計(jì)第三方庫(kù)與宿主應(yīng)用運(yùn)行環(huán)境的隔離,這將作為本文的下一步研究工作.

        6 相關(guān)工作

        近年來智能手機(jī)得到了飛速發(fā)展,人們的生活越來越多地依賴于智能手機(jī),對(duì)手機(jī)使用的安全性要求也越來越高.作為最受歡迎的智能手機(jī)操作系統(tǒng)平臺(tái),Android系統(tǒng)及Android應(yīng)用的安全得到了廣泛研究,文獻(xiàn)[12]即是從系統(tǒng)安全和應(yīng)用安全2個(gè)角度詳細(xì)介紹了現(xiàn)有的安全問題及相關(guān)的安全研究.

        在已發(fā)現(xiàn)的安全問題中,隱私數(shù)據(jù)泄露始終是大家關(guān)注的重點(diǎn)之一.傳統(tǒng)的隱私泄露問題是指應(yīng)用通過調(diào)用相關(guān)API獲取IMEI、手機(jī)號(hào)、通訊錄等隱私數(shù)據(jù)之后通過網(wǎng)絡(luò)等途徑將隱私數(shù)據(jù)傳出設(shè)備,相應(yīng)的檢測(cè)方案有TaintDroid[13],F(xiàn)lowdroid[14],VetDroid[15]等.其中TaintDroid將隱私數(shù)據(jù)標(biāo)記為污點(diǎn)源,動(dòng)態(tài)追蹤污點(diǎn)數(shù)據(jù)在應(yīng)用運(yùn)行過程中的傳播,當(dāng)發(fā)現(xiàn)污點(diǎn)數(shù)據(jù)通過網(wǎng)絡(luò)、短信等方式流出設(shè)備時(shí)即判斷可能存在隱私泄露.TaintDroid使用動(dòng)態(tài)檢測(cè)的方法,可以確保檢測(cè)出的行為是實(shí)際運(yùn)行過程中可以發(fā)生的行為.Flowdroid通過靜態(tài)污點(diǎn)傳播的方式檢測(cè)應(yīng)用中的隱私泄露行為,通過構(gòu)建程序入口點(diǎn)到污點(diǎn)源的可達(dá)路徑確保檢測(cè)到的行為實(shí)際發(fā)生的可能性.VetDroid從權(quán)限使用的角度分析應(yīng)用中隱私數(shù)據(jù)的獲取及之后的使用,重構(gòu)應(yīng)用的權(quán)限使用行為,檢測(cè)其中的隱私泄露及其他惡意行為.

        除了傳統(tǒng)隱私數(shù)據(jù)泄露的檢測(cè),新型隱私泄露場(chǎng)景的挖掘和檢測(cè)也成為近幾年研究的熱點(diǎn)之一.例如,TouchLogger[16]利用加速度和陀螺儀記錄用戶點(diǎn)擊屏幕鍵盤時(shí)產(chǎn)生的震動(dòng),推斷用戶輸入內(nèi)容;PIN Skimmer[17]使用麥克風(fēng)檢測(cè)觸屏事件的發(fā)生,使用攝像頭估計(jì)手機(jī)輕微轉(zhuǎn)動(dòng)的方向,將其與點(diǎn)擊的數(shù)字位置相關(guān)聯(lián),推測(cè)用戶輸入的PIN值.類似工作還有文獻(xiàn)[18-19].此外,Cheng等人[20]發(fā)現(xiàn)利用移動(dòng)社交應(yīng)用中的通訊錄匹配功能,通過上傳海量用戶手機(jī)號(hào)碼,可以獲取應(yīng)用賬號(hào)與手機(jī)號(hào)碼之間的對(duì)應(yīng)關(guān)系以及用戶賬戶的詳細(xì)資料,通過多款社交應(yīng)用之間數(shù)據(jù)的一致性分析,可以獲取大量用戶的真實(shí)信息.與上述研究不同,本文發(fā)現(xiàn)了在Android應(yīng)用使用Settings數(shù)據(jù)時(shí)產(chǎn)生的隱私泄露問題,泄露的數(shù)據(jù)多為IMEI,wifi信息等傳統(tǒng)隱私數(shù)據(jù),數(shù)據(jù)流出點(diǎn)為全局可讀數(shù)據(jù)存儲(chǔ)區(qū)Settings數(shù)據(jù)庫(kù).針對(duì)此隱私泄露場(chǎng)景,本文設(shè)計(jì)了Settings-Hutter來檢測(cè)Android應(yīng)用及第三方庫(kù)使用的Settings數(shù)據(jù)中的隱私泄露行為,SettingsHunter對(duì)Flowdroid進(jìn)行了改進(jìn),在分析Android應(yīng)用的同時(shí)提取第三方庫(kù)信息.

        除了隱私泄露,Android應(yīng)用組件安全問題也是近年來關(guān)注的重點(diǎn)之一.Android應(yīng)用由四大組件組成,任一組件出現(xiàn)安全問題都會(huì)影響整個(gè)應(yīng)用的安全.Zhou等人[21]指出,未加以保護(hù)的公開Content Provider組件會(huì)導(dǎo)致隱私數(shù)據(jù)泄露和關(guān)鍵配置數(shù)據(jù)被修改等安全問題.Chin等人[22]指出,惡意應(yīng)用可以通過劫持隱式Intent并修改其內(nèi)容向Intent的目標(biāo)組件中注入惡意信息,影響目標(biāo)組件的運(yùn)行.與上述研究不同,本文發(fā)現(xiàn)的數(shù)據(jù)污染問題出現(xiàn)在Settings數(shù)據(jù)中,由于部分Android應(yīng)用及第三方庫(kù)不慎將關(guān)鍵配置數(shù)據(jù)寫入Settings數(shù)據(jù)中,導(dǎo)致攻擊程序可以通過修改其中數(shù)值改變應(yīng)用程序的運(yùn)行邏輯.

        在當(dāng)前的Android應(yīng)用開發(fā)過程中,開發(fā)者已越來越多地使用到第三方庫(kù),同一第三方庫(kù)可能存在于多個(gè)熱門應(yīng)用中,一旦第三方庫(kù)出現(xiàn)安全問題,產(chǎn)生的影響將遠(yuǎn)遠(yuǎn)大于單個(gè)Android應(yīng)用帶來的影響,因此第三方庫(kù)的相關(guān)研究也逐漸開展起來.文獻(xiàn)[23]和文獻(xiàn)[24]均對(duì)如何提取Android應(yīng)用中的第三方庫(kù)進(jìn)行了研究,其中Li等人[24]將他們的提取結(jié)果公布在了github上供大家使用[10].在Li等人的研究成果基礎(chǔ)上,本文采用了先驗(yàn)排除和動(dòng)態(tài)反饋的方式處理污點(diǎn)分析過程中遇到的第三方庫(kù),對(duì)于分析過程中遇到的多次出現(xiàn)且具有相同行為特征的包名判斷為新發(fā)現(xiàn)的第三方庫(kù),反饋到后續(xù)樣本的分析過程中.通過將文本特征和行為特征結(jié)合,SettingsHunter對(duì)第三方庫(kù)的識(shí)別準(zhǔn)確性更高.

        對(duì)于第三方庫(kù)中出現(xiàn)的安全問題,近年來的研究主要關(guān)注于廣告庫(kù)和推送服務(wù)的安全分析.Grace等人的工作[23]、Stevens等人的工作[2]以及Book等人的工作[25]對(duì)廣告庫(kù)中的權(quán)限濫用、隱私信息收集和用戶追蹤等危險(xiǎn)行為進(jìn)行了分析;Crussell等人的工作[26]和Liu等人的工作[27]對(duì)廣告庫(kù)可能面臨的虛假訪問和不正確顯示等攻擊進(jìn)行了研究.Li等人的工作[28]和Chen等人的工作[29]分析了推送服務(wù)在邏輯設(shè)計(jì)上存在的安全問題,并提出了相應(yīng)的檢測(cè)方案和安全加固方案.與上述研究不同,本文分析的并不是某類第三方庫(kù)中存在的安全問題,而是在多種第三方庫(kù)中都可能出現(xiàn)的Settings數(shù)據(jù)使用不當(dāng)問題,其影響范圍更為廣泛.

        為了解決第三方庫(kù)帶來的安全問題,研究人員設(shè)計(jì)了各種方案將第三方庫(kù)與宿主應(yīng)用隔離,并嚴(yán)格控制第三方庫(kù)的行為,例如AdSplit[30],AdDroid[31]和AFrame[32]采用不同層次的隔離技術(shù)解決廣告庫(kù)給宿主應(yīng)用帶來的安全問題以及惡意宿主應(yīng)用對(duì)廣告庫(kù)進(jìn)行的攻擊;FlexDroid[11]采用硬件故障隔離技術(shù),對(duì)第三方庫(kù)的原生代碼進(jìn)行隔離,嚴(yán)格限制第三方庫(kù)的能力.這些方案可以作為本文所建議的針對(duì)第三方庫(kù)防護(hù)方案設(shè)計(jì)的參考,在對(duì)第三方庫(kù)與宿主應(yīng)用進(jìn)行隔離的基礎(chǔ)上設(shè)計(jì)細(xì)粒度的共享數(shù)據(jù)訪問控制機(jī)制.

        7 結(jié)束語(yǔ)

        本文分析了Android應(yīng)用及第三方庫(kù)在使用Settings數(shù)據(jù)的過程中出現(xiàn)的安全問題,指出了其中可能存在的隱私泄露問題及關(guān)鍵配置數(shù)據(jù)泄露與污染問題,并成功實(shí)施了針對(duì)部分Android應(yīng)用及第三方庫(kù)的數(shù)據(jù)劫持攻擊和拒絕服務(wù)攻擊.本文設(shè)計(jì)了針對(duì)上述安全問題的靜態(tài)檢測(cè)方案,通過靜態(tài)污點(diǎn)分析技術(shù)檢測(cè)Settings數(shù)據(jù)中的隱私數(shù)據(jù)泄露和關(guān)鍵配置信息泄露問題.本文實(shí)現(xiàn)了該方案的原型系統(tǒng)——SettingsHunter,并對(duì)來自于安智市場(chǎng)、豌豆莢市場(chǎng)和Google Play的3477個(gè)應(yīng)用進(jìn)行了檢測(cè)分析,檢測(cè)結(jié)果顯示:23.5%的應(yīng)用將隱私數(shù)據(jù)或關(guān)鍵配置信息寫入了Settings數(shù)據(jù)中,其中,90.7%的應(yīng)用僅因?yàn)榍度肓擞袉栴}的第三方庫(kù)而引入了這些安全問題.在樣本應(yīng)用使用到的433個(gè)第三方庫(kù)中,有20個(gè)第三方庫(kù)存在Settings數(shù)據(jù)使用安全問題.雖然存在安全問題的第三方庫(kù)數(shù)量不多,但是使用到這些第三方庫(kù)的應(yīng)用所占比率達(dá)到22.6%,其影響不容忽視.實(shí)驗(yàn)結(jié)果顯示,在目前Android應(yīng)用及第三方庫(kù)的開發(fā)過程中,Settings數(shù)據(jù)使用的安全情況不容樂觀,應(yīng)引起開發(fā)者的廣泛關(guān)注,在應(yīng)用和第三方庫(kù)的設(shè)計(jì)過程中采用更安全的數(shù)據(jù)共享方式.

        [1]Xinhuanet. Gartner: Global smart phone sales increased by 9.7% in 4Q15[EB/OL]. (2016-02-24)[2016-05-15]. http://news.xinhuanet.com/tech/2016-02/24/c_128744695.htm (in Chinese)(新華網(wǎng). Gartner:2015年第四季度全球智能手機(jī)銷量增長(zhǎng)9.7%[EB/OL]. (2016-02-24)[2016-05-15]. http://news.xinhuanet.com/tech/2016-02/24/c_128744695.htm)

        [2]Stevens R, Gibler C, Crussell J, et al. Investigating user privacy in Android ad libraries[C] //Proc of the 1st IEEE Workshop on Mobile Security Technologies (MoST). Piscataway, NJ: IEEE, 2012

        [3]Zhou Xiaoyong, Demetriou S, He Dongjing, et al. Identity, location, disease and more: Inferring your secrets from Android public resources[C] //Proc of the 2013 ACM SIGSAC Conf on Computer & Communications Security. New York: ACM, 2013: 1017-1028

        [4]Androguard Team. Androguard[CP/OL]. (2015-10-29)[2016-05-15]. https://github.com/androguard/androguard

        [5]Paderborn University and TU Darmstadt. FlowDroid : Taint analysis[EB/OL]. [2016-05-15]. https://blogs.uni-paderborn.de/sse/tools/flowdroid

        [6]Oracle Corporation. MySQL[EB/OL]. [2016-05-15]. http://www.mysql.com

        [7]Arzt S. How to run FlowDroid[EB/OL]. (2015-11-30)[2016-05-20] https://github.com/secure-software-engineering/soot-infoflow-android/wiki

        [8]Avdiienko V, Kuznetsov K, Gorla A, et al. Mining apps for abnormal usage of sensitive data[C] //Proc of the 37th Int Conf on Software Engineering (ICSE). Piscataway, NJ: IEEE, 2015: 426-436

        [9]Wang Haoyu, Guo Yao, Ma Ziang, et al. WuKong: A scalable and accurate two-phase approach to Android app clone detection[C] //Proc of the 2015 Int Symp on Software Testing and Analysis. New York: ACM, 2015: 71-82

        [10]SerVal Research Group. A repository of Android common libraries and advertisement libraries[EB/OL]. (2015-12-15)[2016-05-15]. https://github.com/serval-snt-uni-lu/Common-Libraries

        [11]Seo J, Kim D, Cho D, et al. FLEXDROID: Enforcing in-app privilege separation in Android[C/OL] //Proc of the 23rd Network and Distributed System Security Symp (NDSS). 2016 [2016-05-15]. https://www.internetsociety.org/sites/default/files/blogs-media/flexdroid-enforcing-in-app-privilege-separation-android.pdf

        [12]Zhang Yuqing, Wang Kai, Yang Huan, et al. Survey of Android OS security[J]. Journal of Computer Research and Development, 2014, 51(7): 1385-1396 (in Chinese)(張玉清, 王凱, 楊歡, 等, Android安全綜述[J]. 計(jì)算機(jī)研究與發(fā)展, 2014, 51(7): 1385-1396)

        [13]Enck W, Gilbert P, Han S, et al. TaintDroid: An information-flow tracking system for realtime privacy monitoring on smartphones[J]. ACM Trans on Computer Systems (TOCS), 2014, 32(2): 5:1-5:29

        [14]Arzt S, Rasthofer S, Fritz C, et al. Flowdroid: Precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps[C] //Proc of the ACM SIGPLAN Conf on Programming Language Design and Implementation. New York: ACM, 2014: 259-269

        [15]Zhang Yuan, Yang Min, Xu Bingquan, et al. Vetting undesirable behaviors in Android apps with permission use analysis[C] //Proc of the 2013 ACM SIGSAC Conf on Computer & Communications Security. New York: ACM, 2013: 611-622

        [16]Cai Liang, Chen Hao. TouchLogger: Inferring keystrokes on touch screen from smartphone motion[C] //Proc of the 6th USENIX Workshop on Hot Topics in Security (HotSec). Berkeley, CA: USENIX Association, 2011: 9-9

        [17]Simon L, Anderson R. PIN skimmer: Inferring PINs through the camera and microphone[C] //Proc of the 3rd ACM Workshop on Security and Privacy in Smartphones & Mobile Devices. New York: ACM, 2013: 67-78

        [18]Xu Zhi, Bai Kun, Zhu Sencun. Taplogger: Inferring user inputs on smartphone touchscreens using on-board motion sensors[C] //Proc of the 5th ACM Conf on Security and Privacy in Wireless and Mobile Networks. New York: ACM, 2012: 113-124

        [19]Aviv A J, Sapp B, Blaze M, et al. Practicality of accelerometer side channels on smartphones[C] //Proc of the 28th Annual Computer Security Applications Conf. New York: ACM, 2012: 41-50

        [20]Cheng Yao, Ying Lingyun, Jiao Sibei, et al. Bind your phone number with caution: Automated user profiling through address book matching on smartphone[C] //Proc of the 8th ACM SIGSAC Symp on Information, Computer and Communications Security. New York: ACM, 2013: 335-340

        [21]Zhou Yajin, Jiang Xuxian. Detecting passive content leaks and pollution in Android applications[C/OL] //Proc of the 20th Network and Distributed System Security Symp (NDSS). 2013[2016-05-15]. http://www.internetsociety.org/doc/detecting-passive-content-leaks-and-pollution-android-applications

        [22]Chin E, Felt A P, Greenwood K, et al. Analyzing inter-application communication in Android[C] //Proc of the 9th Int Conf on Mobile Systems, Applications, and Services. New York: ACM, 2011: 239-252

        [23]Grace M C, Zhou Wu, Jiang Xuxian, et al. Unsafe exposure analysis of mobile in-app advertisements[C] //Proc of the 5th ACM Conf on Security and Privacy in Wireless and Mobile Networks. New York: ACM, 2012: 101-112

        [24]Li Li, Bissyandé T F, Klein J, et al, An investigation into the use of common libraries in Android apps[C] //Proc of 2016 IEEE 23rd Int Conf on Software Analysis, Evolution, and Reengineering (SANER). Piscataway, NJ: IEEE, 2016: 403-414

        [25]Book T, Wallach D S. A case of collusion: A study of the interface between ad libraries and their apps[C] //Proc of the 3rd ACM Workshop on Security and Privacy in Smartphones & Mobile Devices. New York: ACM, 2013: 79-86

        [26]Crussell J, Stevens R, Chen Hao. MAdFraud: Investigating ad fraud in Android applications[C] //Proc of the 12th Annual Int Conf on Mobile Systems, Applications, and Services. New York: ACM, 2014: 123-134

        [27]Liu Bin, Nath S, Govindan R, et al. DECAF: Detecting and characterizing ad fraud in mobile apps[C] //Proc of the 11th USENIX Symp on Networked Systems Design and Imple-mentation (NSDI 14). Berkeley, CA: USENIX Association, 2014: 57-70

        [28]Li Tongxin, Zhou Xiaoyong, Xing Luyi, et al. Mayhem in the push clouds: Understanding and mitigating security hazards in mobile push-messaging services[C] //Proc of the 2014 ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2014: 978-989

        [29]Chen Yangyi, Li Tongxin, Wang Xiaofeng, et al. Perplexed messengers from the cloud: Automated security analysis of push-messaging integrations[C] //Proc of the 22nd ACM SIGSAC Conf on Computer and Communications Security. New York: ACM, 2015: 1260-1272

        [30]Shekhar S, Dietz M, Wallach D S. AdSplit: Separating smartphone advertising from applications[C] //Proc of the 21st USENIX Security Symp. Berkeley, CA: USENIX Association, 2012: 553-567

        [31]Pearce P, Felt A P, Nunez G, et al. Addroid: Privilege separation for applications and advertisers in Android[C] //Proc of the 7th ACM Symp on Information, Computer and Communications Security. New York: ACM, 2012: 71-72

        [32]Zhang Xiao, Ahlawat A, Du Wenliang. AFrame: Isolating advertisements from mobile applications in Android[C] //Proc of the 29th Annual Computer Security Applications Conf. New York: ACM, 2013: 9-18

        Lu Yemian, born in 1989. PhD candidate. Her main research interests include Android application security and malicious code analysis.

        Ying Lingyun, born in 1982. PhD. Senior engineer. His main research interests include malware analysis and mobile security (lingyun@iscas.ac.cn).

        Su Purui, born in 1976. PhD. Professor and PhD supervisor. His main research interests include malware analysis and prevention (purui@iscas.ac.cn).

        Feng Dengguo, born in 1965. Professor and PhD supervisor. His main research interests include cryptography and information security (feng@tca.iscas.ac.cn).

        Jing Erxia, born in 1989. MSc candidate. Her main research interests include Android security and static analysis (jingerxia@tca.iscas.ac.cn).

        Gu Yacong, born in 1989. PhD candidate. His main research interests include Android system security and malicious code analysis (guyacong@tca.iscas.ac.cn).

        Security Analysis and Evaluation for the Usage of Settings Mechanism in Android

        Lu Yemian, Ying Lingyun, Su Purui, Feng Dengguo, Jing Erxia, and Gu Yacong

        (TrustedComputingandInformationAssuranceLaboratory,InstituteofSoftware,ChineseAcademyofSciences,Beijing100190)

        Offered by Android system, Settings is a mechanism used by applications to read and write some global settings of the device. Data stored in Settings can be read by all the applications on the same device. Some Android applications and third-party libraries carelessly put privacy data and important configuration information into Settings, which leads to serious security risks such as privacy leakage and configuration data leakage. In this paper, we make a comprehensive study of the issues mentioned above. By analyzing a large number of applications, we find the privacy data and configuration information leaked to Settings including IMEI, BSSID and location info, etc. We also successfully undertake some data hijacking attacks and DoS attacks for Android applications and third-party libraries, which confirms that the inappropriate use of Settings can really lead to serious security problems. Based on the above research, we propose SettingsHunter, a static detection tool for Settings issues. SettingsHunter detects privacy data and important configuration information put in Settings using taint analysis technology. In order to improve the efficiency, SettingsHunter separates the analysis of third-party libraries from the one of host applications. This separation also improves the analysis ability for third-party libraries. We use SettingsHunter to analysis 3477 applications and the result shows that 23.5% of the analyzed applications put privacy data or key configuration information into Settings, of which 90.7% is due to the using of third-party libraries. These applications and third-party libraries may suffer from privacy data leakage or configuration data pollution attacks.

        Android applications; third-party libraries; privacy leakage; data pollution; static taint analysis

        oid應(yīng)用之間常見的數(shù)據(jù)共享方式包括SharedP

        ,Content Provider,Broadcast Receiver和Service.

        2016-06-16

        2016-08-09

        國(guó)家“九七三”重點(diǎn)基礎(chǔ)研究發(fā)展計(jì)劃基金項(xiàng)目(2012CB315804); 國(guó)家自然科學(xué)基金項(xiàng)目(61502468); 國(guó)家“八六三”高技術(shù)研究發(fā)展計(jì)劃基金項(xiàng)目(2015AA01603)

        TP309

        This work was supported by the National Basic Research Program of China (973 Program) (2012CB315804), the National Natural Science Foundation of China (61502468), and the National High Technology Research and Development Program of China (863 Program) (2015AA01603).

        猜你喜歡
        百度設(shè)備分析
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        隱蔽失效適航要求符合性驗(yàn)證分析
        Robust adaptive UKF based on SVR for inertial based integrated navigation
        電力系統(tǒng)不平衡分析
        電子制作(2018年18期)2018-11-14 01:48:24
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        百度年度熱搜榜
        電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        百度遭投行下調(diào)評(píng)級(jí)
        原來他們都是可穿戴設(shè)備
        中字幕人妻一区二区三区| 久久中文字幕av一区二区不卡| 国产女优一区在线观看| 亚洲av永久无码天堂网小说区| 亚洲学生妹高清av| 被欺辱的高贵人妻被中出| 日韩亚洲精选一区二区三区| 亚洲男女内射在线播放| 亚洲色欲色欲综合网站| 亚洲动漫成人一区二区| 看大陆男女真人草逼视频| 欧美午夜理伦三级在线观看| 国产亚洲午夜高清国产拍精品| 亚洲熟妇在线视频观看| 国产亚洲精品一区二区在线播放| 人妻少妇进入猛烈时中文字幕| 精品欧洲av无码一区二区| 91亚洲国产成人aⅴ毛片大全| 青青青视频手机在线观看| 国产视频自拍一区在线观看| 50岁熟妇大白屁股真爽| 综合激情网站| 亚洲第一大av在线综合| 精品视频一区二区三区在线观看 | 丝袜美腿在线播放一区二区| 亚洲国产精品无码av| 日韩精品一区二区亚洲av| 亚洲AV无码AV色| 亚洲av综合色区一区二区| 日韩丰满少妇无码内射| 免费成人福利视频| 亚洲福利视频一区二区三区| 免费a级毛片无码a∨蜜芽试看| 乱人伦视频中文字幕| 无码人妻中文中字幕一区二区 | 亚洲日本中文字幕高清在线| 国产永久免费高清在线| 99国产免费热播视频| 用力草我小逼视频在线播放| 日韩人妻无码精品一专区二区三区 | 亚洲av福利天堂一区二区三|