• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

    安卓應(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)超過(guò)其他移動(dòng)設(shè)備操作系統(tǒng)[1].Android應(yīng)用的繁榮是Android流行的重要因素之一,每一臺(tái)Android設(shè)備上都同時(shí)存在有大量的Android應(yīng)用.為了更好地協(xié)同工作,應(yīng)用之間的數(shù)據(jù)共享變得越來(lái)越普遍,例如,同一臺(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)行訪問(wèn).Settings中存儲(chǔ)的數(shù)據(jù)根據(jù)數(shù)據(jù)來(lái)源可以分為2類(lèi):1)Android系統(tǒng)寫(xiě)入Settings中的全局配置信息,包括設(shè)備名稱(chēng)、飛行模式狀態(tài)、wifi狀態(tài)等設(shè)備和系統(tǒng)相關(guān)信息,設(shè)備上所有的Android應(yīng)用都可以通過(guò)系統(tǒng)提供的Settings API讀取這些信息,進(jìn)行相應(yīng)的操作,例如,應(yīng)用在發(fā)送短信前可以讀取當(dāng)前的飛行模式狀態(tài),若飛行模式打開(kāi)則不進(jìn)行短信的發(fā)送;2)Android應(yīng)用寫(xiě)入Settings中的數(shù)據(jù)和配置信息,該類(lèi)數(shù)據(jù)多為應(yīng)用在運(yùn)行過(guò)程中需要時(shí)常檢測(cè)和使用的數(shù)據(jù)項(xiàng),例如,手機(jī)安全應(yīng)用“樂(lè)安全”將當(dāng)前是否為訪客模式的狀態(tài)信息寫(xiě)入Settings數(shù)據(jù)中,在當(dāng)前用戶想要訪問(wèn)聯(lián)系人列表、通話記錄和短信息時(shí)讀取該值以判斷用戶是否具有相應(yīng)的操作權(quán)限.

    由于Settings中的數(shù)據(jù)保存在Android系統(tǒng)創(chuàng)建的數(shù)據(jù)庫(kù)中,即使寫(xiě)數(shù)據(jù)的應(yīng)用程序被用戶卸載,之前寫(xiě)入的數(shù)據(jù)也不會(huì)消失,因此很多第三方庫(kù)采用Settings機(jī)制為處于不同宿主應(yīng)用中的同一個(gè)第三方庫(kù)保存部分需要滿足數(shù)據(jù)一致性的信息,當(dāng)初始寫(xiě)入該數(shù)據(jù)的第三方庫(kù)宿主應(yīng)用被刪除時(shí),其他宿主應(yīng)用中的第三方庫(kù)依舊可以正常訪問(wèn)該數(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ù)中的使用已十分普遍,然而其面臨的安全問(wèn)題卻很少被關(guān)注.由于Settings機(jī)制中存儲(chǔ)的數(shù)據(jù)可被設(shè)備上所有的Android應(yīng)用讀取,且具備相關(guān)權(quán)限的應(yīng)用可以修改其中的內(nèi)容,因此Settings機(jī)制在使用過(guò)程中面臨的安全問(wèn)題主要分為2個(gè)方面:1)隱私數(shù)據(jù)泄露風(fēng)險(xiǎn),當(dāng)Android應(yīng)用或第三方庫(kù)誤將隱私數(shù)據(jù)寫(xiě)入Settings中時(shí),其他應(yīng)用可輕易獲取該數(shù)據(jù)的內(nèi)容,例如,百度推出的百度云推送SDK、百度地圖SDK等多款第三方庫(kù)都將IMEI的明文數(shù)值寫(xiě)入了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)鍵配置信息寫(xiě)入Settings數(shù)據(jù)中時(shí),惡意應(yīng)用可以通過(guò)修改該值影響目標(biāo)應(yīng)用的正常運(yùn)行,例如,百度云推送SDK將推送數(shù)據(jù)轉(zhuǎn)發(fā)中心所屬應(yīng)用的包名寫(xiě)入了Settings數(shù)據(jù)中,通過(guò)修改該值即可將推送數(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)用過(guò)程中存在的安全問(wèn)題,通過(guò)攻擊方案實(shí)際驗(yàn)證評(píng)估了其安全風(fēng)險(xiǎn);針對(duì)該問(wèn)題提出了相應(yīng)的檢測(cè)方法并研發(fā)了檢測(cè)工具SettingsHunter,利用該工具完成了大規(guī)模Android應(yīng)用的檢測(cè),對(duì)Settings機(jī)制應(yīng)用安全問(wèn)題進(jìn)行了評(píng)估.本文的貢獻(xiàn)主要包括4個(gè)方面:

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

    2) 設(shè)計(jì)了針對(duì)Settings機(jī)制的攻擊方案,成功實(shí)施了對(duì)Android應(yīng)用及第三方庫(kù)的數(shù)據(jù)劫持攻擊和拒絕服務(wù)攻擊,確認(rèn)了Settings機(jī)制的不當(dāng)使用帶來(lái)的安全風(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)鍵配置信息泄露問(wèn)題,并將第三方庫(kù)與宿主應(yīng)用的分析分離,優(yōu)化了分析過(guò)程,提高了分析效率和分析能力;

    4) 完成了系統(tǒng)的實(shí)驗(yàn)評(píng)估,對(duì)來(lái)自于Google Play、豌豆莢、安智市場(chǎng)上的3477個(gè)應(yīng)用進(jìn)行了檢測(cè),實(shí)驗(yàn)結(jié)果表明:23.5%的應(yīng)用將隱私數(shù)據(jù)或關(guān)鍵配置信息寫(xiě)入了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,用來(lái)存儲(chǔ)全局配置信息,同時(shí)創(chuàng)建了名為“SettingsProvider”的Content Provider組件封裝訪問(wèn)該數(shù)據(jù)庫(kù)的接口.之后,android.provider.Settings類(lèi)通過(guò)binder機(jī)制跨進(jìn)程訪問(wèn)SettingsProvider中的數(shù)據(jù),而處于最上層的Android應(yīng)用通過(guò)android.provider.Settings提供的API函數(shù)操作Settings數(shù)據(jù).為了提高訪問(wèn)效率,Settings機(jī)制中存在2個(gè)數(shù)據(jù)緩沖區(qū),一個(gè)位于SettingsProvider的Content Provider組件中,另一個(gè)位于android.provider.Settings類(lèi)中.Android應(yīng)用訪問(wèn)的數(shù)據(jù)首先在android.provider.Settings類(lèi)的本地緩沖區(qū)中進(jìn)行處理,無(wú)法命中時(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ǔ)書(shū)簽等用戶相關(guān)信息.在實(shí)現(xiàn)了多用戶機(jī)制的Android系統(tǒng)中,global表只為設(shè)備的所有者(owner user)創(chuàng)建,secure和system表則是每一個(gè)用戶單獨(dú)擁有一份,不同用戶之間的表不能進(jìn)行交叉操作.但是絕大多數(shù)用戶在使用Android設(shè)備的過(guò)程中仍是采用單用戶的使用模式,因此對(duì)于這些設(shè)備上的Android應(yīng)用來(lái)說(shuō),Settings中的數(shù)據(jù)依舊是全部可讀取的.

    3張表中的數(shù)據(jù)對(duì)所有Android應(yīng)用來(lái)說(shuō)均是可讀的,讀操作所需的權(quán)限READ_SETTINGS為normal級(jí)別權(quán)限,不需要在應(yīng)用程序的AndroidManifest.xml文件中明確列出也不需要用戶明確授權(quán),可以直接使用.對(duì)global表和secure表中數(shù)據(jù)進(jìn)行的寫(xiě)操作受到WRITE_SECURE_SETTINGS權(quán)限的保護(hù),對(duì)system表中數(shù)據(jù)進(jìn)行的寫(xiě)操作受到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)行寫(xiě)操作的數(shù)據(jù)只有system表中的數(shù)據(jù).

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

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

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

    第三方Android應(yīng)用及第三方庫(kù)對(duì)Settings機(jī)制的不安全使用包括2種類(lèi)型:1)將隱私數(shù)據(jù)寫(xiě)入Settings數(shù)據(jù)項(xiàng)中;2)將關(guān)鍵配置信息寫(xiě)入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)致的安全問(wèn)題相應(yīng)地可以分為2類(lèi):隱私數(shù)據(jù)泄露和關(guān)鍵配置數(shù)據(jù)泄露與污染.

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

    經(jīng)測(cè)試發(fā)現(xiàn),Android應(yīng)用寫(xiě)入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ù)來(lái)唯一標(biāo)識(shí)一臺(tái)設(shè)備,當(dāng)應(yīng)用獲取了這些信息后即可準(zhǔn)確地將當(dāng)前設(shè)備從其他設(shè)備中分辨出來(lái).Stevens等人的研究[2]指出,通過(guò)使用這些標(biāo)識(shí)信息,廣告庫(kù)可以將不同宿主應(yīng)用在不同時(shí)間段收集的信息對(duì)應(yīng)到同一臺(tái)設(shè)備上,從而達(dá)到長(zhǎng)時(shí)間追蹤用戶信息的目的.可見(jiàn)保護(hù)設(shè)備標(biāo)識(shí)符對(duì)于用戶隱私數(shù)據(jù)的保護(hù)有著重要的意義.

    當(dāng)同一開(kāi)發(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í)通過(guò)一定運(yùn)算后寫(xiě)入Settings數(shù)據(jù)項(xiàng)中,方便其他相關(guān)應(yīng)用讀取.當(dāng)寫(xiě)入的數(shù)據(jù)通過(guò)MD5等Hash算法轉(zhuǎn)換時(shí),其他應(yīng)用無(wú)法讀取對(duì)應(yīng)的IMEI等數(shù)據(jù)的明文信息,然而實(shí)際中存在部分應(yīng)用并沒(méi)有對(duì)寫(xiě)入Settings中的數(shù)據(jù)進(jìn)行加密及Hash保護(hù),導(dǎo)致其他無(wú)關(guān)應(yīng)用可以在不申請(qǐng)相關(guān)權(quán)限的情況下獲取IMEI等設(shè)備標(biāo)識(shí)的明文信息,造成數(shù)據(jù)泄露.而另一方面,經(jīng)過(guò)了加密及Hash保護(hù)的IMEI等數(shù)據(jù)依舊具備唯一標(biāo)識(shí)一臺(tái)設(shè)備的屬性,通過(guò)讀取該值,其他應(yīng)用也可以達(dá)到準(zhǔn)確識(shí)別當(dāng)前設(shè)備的目的.

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

    2) 追蹤用戶位置改變

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

    本文發(fā)現(xiàn)百度云推送SDK將BSSID寫(xiě)入了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)用可以通過(guò)讀取該值后調(diào)用Google等公司的BSSID信息查詢接口獲取用戶大致的地理位置信息.

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

    作為配置信息,Android應(yīng)用和第三方庫(kù)寫(xiě)入Settings中的數(shù)據(jù)多是為了在運(yùn)行過(guò)程中判斷執(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)景通過(guò)修改第三方庫(kù)寫(xiě)入Settings中的配置信息截獲目標(biāo)應(yīng)用應(yīng)當(dāng)接收或發(fā)送的數(shù)據(jù),實(shí)施數(shù)據(jù)劫持攻擊;第3個(gè)攻擊通過(guò)修改Settings中的配置信息破壞應(yīng)用及第三方庫(kù)正常功能的運(yùn)行,達(dá)到拒絕服務(wù)攻擊的目的.

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

    Android推送服務(wù)SDK通過(guò)在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ù)并通過(guò)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)用包名寫(xiě)入了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通過(guò)百度云推送收到的私聊信息,如圖2所示.從截獲到的消息中可以看到發(fā)送者的昵稱(chēng)“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并開(kāi)啟一個(gè)Watchdog端口接收使用了信鴿推送SDK的應(yīng)用發(fā)送過(guò)來(lái)的一些信息,該端口號(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)聽(tīng)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)用被打開(kāi)或被安裝時(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”作為名稱(chēng),而是將該字符串進(jìn)行MD5運(yùn)算后作為名稱(chēng),同時(shí)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行了加密.為了獲取該版本SDK傳輸?shù)絎atchdogPort上的數(shù)據(jù),攻擊程序?qū)㈤_(kāi)啟另一個(gè)本地Server,并通過(guò)信鴿推送SDK中自帶的解密函數(shù)進(jìn)行解密.

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

    很多應(yīng)用和第三方庫(kù)寫(xiě)入Settings中的配置數(shù)據(jù)都有著固定的類(lèi)型或格式,如果數(shù)據(jù)類(lèi)型被修改或格式被破壞,將導(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解密失敗,無(wú)法正常處理收到的推送數(shù)據(jù),導(dǎo)致數(shù)據(jù)無(wú)法傳遞給目標(biāo)應(yīng)用.此外,通過(guò)修改安全應(yīng)用“樂(lè)安全”寫(xiě)入Settings數(shù)據(jù)中“guest_mode_on”數(shù)據(jù)項(xiàng)的值,攻擊程序可以將訪客模式禁用,從而取消對(duì)聯(lián)系人等數(shù)據(jù)的訪問(wèn)限制.

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

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

    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)建過(guò)程間控制流圖(ICFG),并追蹤污點(diǎn)數(shù)據(jù)在過(guò)程間控制流圖中的傳播;第三方庫(kù)優(yōu)化部分為污點(diǎn)分析部分提供第三方庫(kù)信息,消除已知第三方庫(kù)對(duì)分析效率和分析結(jié)果帶來(lái)的影響,并發(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類(lèi)下的put類(lèi)API選為sink函數(shù).SettingsHunter將隱私泄露檢測(cè)部分的source函數(shù)分為DeviceId,Location,WifiInfo,Database,Others這5種類(lèi)別,每種類(lèi)別的說(shuō)明如表1所示:

    Table 1 Descriptions of Source Function Categories in

    對(duì)于關(guān)鍵配置信息檢測(cè),SettingsHunter關(guān)注的是修改其值后可允許攻擊應(yīng)用訪問(wèn)本不可訪問(wèn)的目標(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種類(lèi)別,每一類(lèi)別的說(shuō)明如表2所示.SettingsHunter將Settings.System中的get類(lèi)API選為該部分檢測(cè)的source函數(shù).

    Table 2 Descriptions of Sink Function Categories in Key Configuration Detection

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

    3.1.2 污點(diǎn)分析

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

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

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

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

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

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

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

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

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

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

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

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

    以上配置雖然會(huì)在分析過(guò)程中引入少量誤報(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)建的過(guò)程間控制流圖,提高分析效率;2)在樣本文件的分析過(guò)程中發(fā)掘新的第三方庫(kù)并收集其污點(diǎn)分析結(jié)果.

    在當(dāng)前的Android應(yīng)用開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者大量使用了各種第三方庫(kù)訪問(wèn)某些服務(wù)或簡(jiǎn)化開(kāi)發(fā)過(guò)程,導(dǎo)致同一個(gè)第三方庫(kù)可能存在于多個(gè)Android應(yīng)用中,這一現(xiàn)狀會(huì)帶來(lái)3類(lèi)問(wèn)題:1)導(dǎo)致Settings-Hunter的污點(diǎn)分析過(guò)程中多次重復(fù)分析相同的第三方庫(kù)代碼;2)Android應(yīng)用中大量使用的第三方庫(kù)會(huì)嚴(yán)重影響SettingsHunter的分析速度,Wang等人[9]發(fā)現(xiàn)1個(gè)Android應(yīng)用中可能有超過(guò)60%的代碼來(lái)自于第三方庫(kù)的使用,這就意味著在污點(diǎn)分析過(guò)程中可能有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中寫(xiě)入了隱私數(shù)據(jù)和關(guān)鍵配置信息,檢測(cè)出的安全問(wèn)題將被歸責(zé)于該應(yīng)用的開(kāi)發(fā)者,然而實(shí)際的問(wèn)題出現(xiàn)在該應(yīng)用使用的第三方庫(kù)中.為了解決這些問(wèn)題,SettingsHunter設(shè)計(jì)了第三方庫(kù)優(yōu)化模塊,在過(guò)程間控制流圖的構(gòu)建過(guò)程中將第三方庫(kù)的代碼剔除,有效縮減過(guò)程間控制流圖的規(guī)模,提高污點(diǎn)分析的運(yùn)行效率.

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

    1) 先驗(yàn)排除

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

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

    為了提取先驗(yàn)排除的第三方庫(kù)中Settings數(shù)據(jù)使用的情況,SettingsHunter在分析樣本文件的過(guò)程中將記錄包含有該第三方庫(kù)包名的apk文件,在全部樣本分析結(jié)束后,從包含有該第三方庫(kù)包名的apk文件中隨機(jī)選取3個(gè)apk文件進(jìn)行再次分析,將該第三方庫(kù)代碼加入過(guò)程間控制流圖的構(gòu)建過(guò)程,并在尋找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)分析過(guò)程中統(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)過(guò)混淆之后會(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è)過(guò)程結(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將樣本分析過(guò)程中檢測(cè)到的包名及對(duì)應(yīng)的source與sink函數(shù)存入數(shù)據(jù)庫(kù),每找到一次該記錄則將數(shù)據(jù)庫(kù)中該記錄的count字段值加1,當(dāng)count字段值為5時(shí),判定檢測(cè)到的包名為第三方庫(kù)包名,將其寫(xiě)入Library Information中,用于SettingsHunter在后續(xù)樣本文件的分析過(guò)程中去除對(duì)該包名下代碼的分析.

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

    SettingsHunter可能產(chǎn)生的誤報(bào)和漏報(bào)主要來(lái)自于污點(diǎn)分析過(guò)程中使用的Flowdroid工具.由于3.1.2節(jié)中使用一些特殊配置在Flowdroid的運(yùn)行效率和精確度之間進(jìn)行了折中,因此不可避免會(huì)引入一些誤報(bào)和漏報(bào).其中別名算法的選擇和array的處理會(huì)引入少量誤報(bào),其他的配置會(huì)引入少量漏報(bào).此外Flowdroid本身并不能很好地處理組件間通信過(guò)程中的數(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開(kāi)發(fā)的SettingsHunter的分析結(jié)果依舊具備很高的參考價(jià)值.

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

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

    4.1 測(cè)試樣本來(lái)源

    作者從安智(Anzhi)市場(chǎng)20類(lèi)應(yīng)用中隨機(jī)搜集了1 011個(gè)Android應(yīng)用,從豌豆莢(Wandoujia)市場(chǎng)18類(lèi)應(yīng)用中隨機(jī)搜集了1 220個(gè)Android應(yīng)用,從Google Play的28類(lèi)應(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)用無(wú)法使用Androguard進(jìn)行分析,因此SettingsHunter的實(shí)際分析樣本集包含3 477個(gè)樣本.3 477個(gè)樣本中含WRITE_SETTINGS權(quán)限的應(yīng)用數(shù)量及其所占比例如表3所示.可見(jiàn)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的分析過(guò)程中新發(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é)果顯示有問(wèn)題的第三方庫(kù)數(shù)量并不多,但是使用這些第三方庫(kù)的應(yīng)用數(shù)量卻達(dá)到785個(gè),占樣本總數(shù)的22.6%,占含有WRITE_SETTINGS權(quán)限樣本總數(shù)的51.8%,可見(jiàn)其影響十分廣泛.其中根據(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è)出問(wèn)題樣本818個(gè),占樣本總數(shù)的23.5%,去除第三方庫(kù)代碼后問(wèn)題樣本個(gè)數(shù)為76個(gè),即僅因嵌入了第三方庫(kù)而引入了安全問(wèn)題的樣本數(shù)量為742個(gè),占問(wèn)題樣本總數(shù)的90.7%.由此可見(jiàn),第三方庫(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)的安全問(wèn)題,本質(zhì)在于Android應(yīng)用或第三方庫(kù)的開(kāi)發(fā)者誤將敏感信息寫(xiě)入了可被設(shè)備上所有應(yīng)用訪問(wèn)的公共存儲(chǔ)空間Settings中,因此直觀的安全解決方案是采用其他安全的數(shù)據(jù)共享方式代替Settings數(shù)據(jù)共享機(jī)制.

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

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

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

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

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

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

    6 相關(guān)工作

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

    在已發(fā)現(xiàn)的安全問(wèn)題中,隱私數(shù)據(jù)泄露始終是大家關(guān)注的重點(diǎn)之一.傳統(tǒng)的隱私泄露問(wèn)題是指應(yīng)用通過(guò)調(diào)用相關(guān)API獲取IMEI、手機(jī)號(hào)、通訊錄等隱私數(shù)據(jù)之后通過(guò)網(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)行過(guò)程中的傳播,當(dāng)發(fā)現(xiàn)污點(diǎn)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)、短信等方式流出設(shè)備時(shí)即判斷可能存在隱私泄露.TaintDroid使用動(dòng)態(tài)檢測(cè)的方法,可以確保檢測(cè)出的行為是實(shí)際運(yùn)行過(guò)程中可以發(fā)生的行為.Flowdroid通過(guò)靜態(tài)污點(diǎn)傳播的方式檢測(cè)應(yīng)用中的隱私泄露行為,通過(guò)構(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)擊屏幕鍵盤(pá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值.類(lèi)似工作還有文獻(xiàn)[18-19].此外,Cheng等人[20]發(fā)現(xiàn)利用移動(dòng)社交應(yīng)用中的通訊錄匹配功能,通過(guò)上傳海量用戶手機(jī)號(hào)碼,可以獲取應(yīng)用賬號(hào)與手機(jī)號(hào)碼之間的對(duì)應(yīng)關(guān)系以及用戶賬戶的詳細(xì)資料,通過(guò)多款社交應(yīng)用之間數(shù)據(jù)的一致性分析,可以獲取大量用戶的真實(shí)信息.與上述研究不同,本文發(fā)現(xiàn)了在Android應(yīng)用使用Settings數(shù)據(jù)時(shí)產(chǎn)生的隱私泄露問(wè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來(lái)檢測(cè)Android應(yīng)用及第三方庫(kù)使用的Settings數(shù)據(jù)中的隱私泄露行為,SettingsHunter對(duì)Flowdroid進(jìn)行了改進(jìn),在分析Android應(yīng)用的同時(shí)提取第三方庫(kù)信息.

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

    在當(dāng)前的Android應(yīng)用開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者已越來(lái)越多地使用到第三方庫(kù),同一第三方庫(kù)可能存在于多個(gè)熱門(mén)應(yīng)用中,一旦第三方庫(kù)出現(xiàn)安全問(wèn)題,產(chǎn)生的影響將遠(yuǎn)遠(yuǎn)大于單個(gè)Android應(yīng)用帶來(lái)的影響,因此第三方庫(kù)的相關(guān)研究也逐漸開(kāi)展起來(lái).文獻(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)分析過(guò)程中遇到的第三方庫(kù),對(duì)于分析過(guò)程中遇到的多次出現(xiàn)且具有相同行為特征的包名判斷為新發(fā)現(xiàn)的第三方庫(kù),反饋到后續(xù)樣本的分析過(guò)程中.通過(guò)將文本特征和行為特征結(jié)合,SettingsHunter對(duì)第三方庫(kù)的識(shí)別準(zhǔn)確性更高.

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

    為了解決第三方庫(kù)帶來(lái)的安全問(wèn)題,研究人員設(shè)計(jì)了各種方案將第三方庫(kù)與宿主應(yīng)用隔離,并嚴(yán)格控制第三方庫(kù)的行為,例如AdSplit[30],AdDroid[31]和AFrame[32]采用不同層次的隔離技術(shù)解決廣告庫(kù)給宿主應(yīng)用帶來(lái)的安全問(wèn)題以及惡意宿主應(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ù)訪問(wèn)控制機(jī)制.

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

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

    猜你喜歡
    污點(diǎn)百度組件
    無(wú)人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
    能源工程(2022年2期)2022-05-23 13:51:50
    基于代碼重寫(xiě)的動(dòng)態(tài)污點(diǎn)分析
    新型碎邊剪刀盤(pán)組件
    Robust adaptive UKF based on SVR for inertial based integrated navigation
    U盾外殼組件注塑模具設(shè)計(jì)
    百度年度熱搜榜
    使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
    百度遭投行下調(diào)評(píng)級(jí)
    我國(guó)“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
    風(fēng)起新一代光伏組件膜層:SSG納米自清潔膜層
    国产真实伦视频高清在线观看| 只有这里有精品99| 国产日韩欧美在线精品| 国产精品久久久久久久久免| 色视频www国产| 国产亚洲精品久久久com| 亚洲精品影视一区二区三区av| 一本一本综合久久| 特大巨黑吊av在线直播| 中文字幕久久专区| 国产亚洲精品av在线| h日本视频在线播放| 日韩,欧美,国产一区二区三区 | 久久久久九九精品影院| 成人无遮挡网站| 毛片女人毛片| 亚洲精品久久国产高清桃花| 国产成人午夜福利电影在线观看| 99热6这里只有精品| 成年免费大片在线观看| 色视频www国产| 啦啦啦啦在线视频资源| 亚洲人成网站高清观看| 欧美激情国产日韩精品一区| 白带黄色成豆腐渣| 色5月婷婷丁香| 三级经典国产精品| 欧美激情久久久久久爽电影| 亚洲中文字幕一区二区三区有码在线看| 久久精品91蜜桃| 村上凉子中文字幕在线| 国产av不卡久久| 国产国拍精品亚洲av在线观看| 亚洲av免费在线观看| 长腿黑丝高跟| 毛片一级片免费看久久久久| 夜夜夜夜夜久久久久| 色视频www国产| 午夜精品国产一区二区电影 | 中文字幕制服av| 老师上课跳d突然被开到最大视频| 国产成人午夜福利电影在线观看| 国产精品一区二区三区四区免费观看| 身体一侧抽搐| 91午夜精品亚洲一区二区三区| 久久精品久久久久久噜噜老黄 | 久久久午夜欧美精品| 男女下面进入的视频免费午夜| 男人舔女人下体高潮全视频| 爱豆传媒免费全集在线观看| 观看美女的网站| 69人妻影院| 亚洲最大成人手机在线| 99久久精品国产国产毛片| 久久久久性生活片| 亚洲不卡免费看| 在线国产一区二区在线| 十八禁国产超污无遮挡网站| 欧美+日韩+精品| 在线观看免费视频日本深夜| 男女啪啪激烈高潮av片| 欧美+亚洲+日韩+国产| 男人舔奶头视频| ponron亚洲| 久久热精品热| 亚洲精品乱码久久久久久按摩| 国产精品无大码| 91av网一区二区| 亚洲av男天堂| 久久精品影院6| 亚洲aⅴ乱码一区二区在线播放| 国产黄片视频在线免费观看| 美女内射精品一级片tv| 韩国av在线不卡| 欧美3d第一页| 亚洲第一电影网av| 在线国产一区二区在线| 久久精品国产亚洲av涩爱 | 岛国在线免费视频观看| 久久韩国三级中文字幕| 日日干狠狠操夜夜爽| 淫秽高清视频在线观看| 免费av毛片视频| 国产av在哪里看| 久久亚洲精品不卡| 成年女人永久免费观看视频| 久久综合国产亚洲精品| 美女cb高潮喷水在线观看| 青春草国产在线视频 | .国产精品久久| 久久热精品热| 菩萨蛮人人尽说江南好唐韦庄 | 一区福利在线观看| 精品久久国产蜜桃| videossex国产| 国产成人aa在线观看| 国产在线精品亚洲第一网站| 午夜福利高清视频| 最近视频中文字幕2019在线8| 婷婷色av中文字幕| 夜夜看夜夜爽夜夜摸| 亚洲国产欧洲综合997久久,| 少妇熟女欧美另类| 人人妻人人澡人人爽人人夜夜 | av.在线天堂| АⅤ资源中文在线天堂| 蜜桃亚洲精品一区二区三区| 高清午夜精品一区二区三区 | 不卡视频在线观看欧美| 免费电影在线观看免费观看| 少妇人妻精品综合一区二区 | 床上黄色一级片| 午夜激情福利司机影院| 国产午夜精品一二区理论片| 国产午夜精品论理片| 91在线精品国自产拍蜜月| 性色avwww在线观看| 成人亚洲精品av一区二区| 国产伦理片在线播放av一区 | 亚洲国产精品成人久久小说 | 久久99精品国语久久久| 国产一区二区亚洲精品在线观看| 男插女下体视频免费在线播放| 亚洲人成网站在线播| 日本一本二区三区精品| 亚洲av中文字字幕乱码综合| 伊人久久精品亚洲午夜| 日韩欧美 国产精品| 亚洲精品日韩av片在线观看| АⅤ资源中文在线天堂| 国产亚洲av嫩草精品影院| 特大巨黑吊av在线直播| 欧美日本视频| 悠悠久久av| 人人妻人人澡欧美一区二区| 麻豆一二三区av精品| 人人妻人人看人人澡| 日本熟妇午夜| 日产精品乱码卡一卡2卡三| 国产高清激情床上av| 亚洲熟妇中文字幕五十中出| 噜噜噜噜噜久久久久久91| 亚洲av熟女| 免费观看人在逋| 免费观看的影片在线观看| 99久久人妻综合| 国产乱人偷精品视频| 色尼玛亚洲综合影院| 久久久精品大字幕| 国产毛片a区久久久久| 男人舔奶头视频| 美女黄网站色视频| 一级毛片电影观看 | 日韩国内少妇激情av| 在线观看66精品国产| 91av网一区二区| 久久久精品94久久精品| 国产高清有码在线观看视频| 国产精品一区www在线观看| 麻豆精品久久久久久蜜桃| 国产色爽女视频免费观看| .国产精品久久| 国产精品久久久久久精品电影| 青春草亚洲视频在线观看| 午夜免费激情av| 99热全是精品| 观看免费一级毛片| 亚洲丝袜综合中文字幕| 久久精品国产亚洲av涩爱 | 18禁在线播放成人免费| 好男人视频免费观看在线| 久久久久网色| 晚上一个人看的免费电影| 免费人成在线观看视频色| 久久久久久久久久久免费av| 中文字幕av成人在线电影| 国产精品久久久久久精品电影| 超碰av人人做人人爽久久| 99在线视频只有这里精品首页| 欧美成人免费av一区二区三区| 麻豆一二三区av精品| 国产亚洲精品久久久久久毛片| 成人三级黄色视频| 久久人人爽人人爽人人片va| 美女 人体艺术 gogo| 免费看光身美女| 在线免费观看的www视频| 午夜激情福利司机影院| 夫妻性生交免费视频一级片| 欧美一区二区国产精品久久精品| 级片在线观看| 美女大奶头视频| 性色avwww在线观看| 麻豆一二三区av精品| 看非洲黑人一级黄片| 亚洲四区av| 国产免费男女视频| 国产一区二区激情短视频| 青春草国产在线视频 | 天美传媒精品一区二区| 中文字幕久久专区| 久久精品夜夜夜夜夜久久蜜豆| 久久午夜亚洲精品久久| 色综合色国产| 综合色av麻豆| 最近最新中文字幕大全电影3| 亚洲精品乱码久久久久久按摩| 国产黄片视频在线免费观看| 国产色婷婷99| 在线观看一区二区三区| 午夜激情欧美在线| 中文亚洲av片在线观看爽| 综合色av麻豆| 精品久久久噜噜| 美女大奶头视频| 亚洲欧美日韩高清专用| 国语自产精品视频在线第100页| 久久精品影院6| 欧美成人免费av一区二区三区| 不卡一级毛片| av卡一久久| 日韩欧美在线乱码| 亚洲18禁久久av| 干丝袜人妻中文字幕| 美女脱内裤让男人舔精品视频 | 亚洲丝袜综合中文字幕| 91麻豆精品激情在线观看国产| 青春草国产在线视频 | 亚洲国产精品成人综合色| 可以在线观看毛片的网站| 婷婷色综合大香蕉| 午夜激情福利司机影院| 你懂的网址亚洲精品在线观看 | 国产精品久久久久久久久免| 波多野结衣高清无吗| 欧美在线一区亚洲| 亚洲欧美成人精品一区二区| 国产一区亚洲一区在线观看| 久久精品国产鲁丝片午夜精品| 日韩精品青青久久久久久| 国产精品久久久久久av不卡| 国产成人一区二区在线| 亚洲精品粉嫩美女一区| 久久人妻av系列| 深夜a级毛片| 精品一区二区三区视频在线| 日本黄色视频三级网站网址| 18禁在线无遮挡免费观看视频| 国产午夜精品一二区理论片| 国产亚洲91精品色在线| 国产av一区在线观看免费| av天堂在线播放| 男人的好看免费观看在线视频| 欧美日韩国产亚洲二区| 国产男人的电影天堂91| 又爽又黄a免费视频| 国产午夜精品久久久久久一区二区三区| 在现免费观看毛片| 国产熟女欧美一区二区| 99久久无色码亚洲精品果冻| 伊人久久精品亚洲午夜| 国产精品女同一区二区软件| 日韩一区二区视频免费看| 九九久久精品国产亚洲av麻豆| 青春草国产在线视频 | 一级毛片我不卡| 久久久久久久久久成人| 舔av片在线| 亚洲人成网站高清观看| 国产私拍福利视频在线观看| 日本在线视频免费播放| 亚洲精品成人久久久久久| 可以在线观看的亚洲视频| 插逼视频在线观看| 性插视频无遮挡在线免费观看| 中国美白少妇内射xxxbb| 国产精品av视频在线免费观看| 好男人视频免费观看在线| 精品欧美国产一区二区三| a级毛片a级免费在线| 国产淫片久久久久久久久| 精品国内亚洲2022精品成人| 国产熟女欧美一区二区| 国产亚洲91精品色在线| 亚洲四区av| 欧美最黄视频在线播放免费| 亚洲成人久久性| 天堂√8在线中文| 夜夜夜夜夜久久久久| 特级一级黄色大片| h日本视频在线播放| 国产精品av视频在线免费观看| 毛片一级片免费看久久久久| 久久精品国产鲁丝片午夜精品| 精品熟女少妇av免费看| 少妇的逼好多水| 桃色一区二区三区在线观看| 成人永久免费在线观看视频| 免费看a级黄色片| 夜夜爽天天搞| 精品国内亚洲2022精品成人| 在线观看av片永久免费下载| 最近视频中文字幕2019在线8| 一级av片app| 黄色日韩在线| 有码 亚洲区| 国产精品伦人一区二区| av福利片在线观看| 变态另类丝袜制服| 亚洲人成网站在线播| 91久久精品电影网| 综合色丁香网| eeuss影院久久| 一边亲一边摸免费视频| 性色avwww在线观看| 欧美高清性xxxxhd video| 日本熟妇午夜| 少妇被粗大猛烈的视频| 欧美性猛交╳xxx乱大交人| 亚洲一区高清亚洲精品| 两性午夜刺激爽爽歪歪视频在线观看| 午夜a级毛片| 欧美色视频一区免费| 91狼人影院| 精品一区二区免费观看| 99在线视频只有这里精品首页| 尾随美女入室| www.色视频.com| 国产成人aa在线观看| 人妻制服诱惑在线中文字幕| 亚洲av男天堂| 热99re8久久精品国产| 国产白丝娇喘喷水9色精品| av又黄又爽大尺度在线免费看 | 人体艺术视频欧美日本| 少妇被粗大猛烈的视频| 国产精品久久久久久av不卡| 国产乱人偷精品视频| 麻豆久久精品国产亚洲av| 青青草视频在线视频观看| 精品久久久久久久久久久久久| 麻豆久久精品国产亚洲av| 我要搜黄色片| 久久久a久久爽久久v久久| 2022亚洲国产成人精品| 国产精品久久久久久av不卡| 可以在线观看毛片的网站| 3wmmmm亚洲av在线观看| 国产亚洲av嫩草精品影院| 国产午夜精品一二区理论片| 只有这里有精品99| 99久久无色码亚洲精品果冻| 婷婷亚洲欧美| 毛片一级片免费看久久久久| 国产精品一区二区在线观看99 | 久久精品国产亚洲av香蕉五月| 亚洲av不卡在线观看| 亚洲欧美日韩无卡精品| 女人被狂操c到高潮| 亚洲欧美精品专区久久| 99久国产av精品| 日韩欧美精品v在线| 国产69精品久久久久777片| 国产精品久久久久久亚洲av鲁大| 秋霞在线观看毛片| 亚洲精品自拍成人| 99热全是精品| 亚洲精品日韩av片在线观看| 午夜精品国产一区二区电影 | 成人鲁丝片一二三区免费| 国产精品福利在线免费观看| 久久99热6这里只有精品| 亚洲真实伦在线观看| 成年免费大片在线观看| 久久国产乱子免费精品| 内地一区二区视频在线| 草草在线视频免费看| 内地一区二区视频在线| 丰满人妻一区二区三区视频av| 丝袜喷水一区| 麻豆国产97在线/欧美| 老女人水多毛片| 中文欧美无线码| 禁无遮挡网站| 99精品在免费线老司机午夜| 一个人免费在线观看电影| 成熟少妇高潮喷水视频| 久久久久久久久久成人| 婷婷色综合大香蕉| 能在线免费观看的黄片| 免费无遮挡裸体视频| 哪里可以看免费的av片| 欧美3d第一页| 国内少妇人妻偷人精品xxx网站| 免费人成视频x8x8入口观看| 久久久欧美国产精品| 日韩三级伦理在线观看| 国产精品一区www在线观看| 国产探花极品一区二区| 国产国拍精品亚洲av在线观看| 色尼玛亚洲综合影院| 国产真实伦视频高清在线观看| 国产老妇伦熟女老妇高清| 久久久久国产网址| 久久精品综合一区二区三区| 精品人妻一区二区三区麻豆| 国产午夜精品久久久久久一区二区三区| 久久久久网色| 日本成人三级电影网站| 日本免费a在线| av专区在线播放| 菩萨蛮人人尽说江南好唐韦庄 | 18禁在线播放成人免费| 中文字幕久久专区| 久久久久久伊人网av| 晚上一个人看的免费电影| 日产精品乱码卡一卡2卡三| 国产人妻一区二区三区在| 大型黄色视频在线免费观看| 又爽又黄无遮挡网站| 日韩中字成人| 尤物成人国产欧美一区二区三区| АⅤ资源中文在线天堂| 久久久久免费精品人妻一区二区| 欧美激情在线99| 一级黄色大片毛片| 给我免费播放毛片高清在线观看| 国产乱人视频| 成人鲁丝片一二三区免费| 亚洲欧美日韩无卡精品| 国产久久久一区二区三区| 久久久久久伊人网av| 十八禁国产超污无遮挡网站| 国产精品久久久久久精品电影| 日韩亚洲欧美综合| 一个人观看的视频www高清免费观看| 内地一区二区视频在线| 色5月婷婷丁香| 久久99蜜桃精品久久| 色播亚洲综合网| 国产大屁股一区二区在线视频| 91久久精品电影网| 成年av动漫网址| 此物有八面人人有两片| 亚洲精品国产av成人精品| 亚洲欧美日韩东京热| 综合色av麻豆| 国产成人精品一,二区 | 日韩av在线大香蕉| 欧美高清成人免费视频www| 丰满人妻一区二区三区视频av| 亚洲av电影不卡..在线观看| 亚洲精品日韩在线中文字幕 | 成年版毛片免费区| or卡值多少钱| 级片在线观看| 99热只有精品国产| 少妇的逼水好多| 国产黄色小视频在线观看| 少妇熟女aⅴ在线视频| 嫩草影院入口| 成年女人看的毛片在线观看| 能在线免费看毛片的网站| 国产午夜福利久久久久久| 精品久久久久久久久亚洲| 亚洲av电影不卡..在线观看| 国产精品人妻久久久影院| 国产伦精品一区二区三区四那| 成人漫画全彩无遮挡| 伦理电影大哥的女人| 一本久久精品| 神马国产精品三级电影在线观看| 99热这里只有精品一区| 国产av不卡久久| 麻豆成人av视频| av卡一久久| 成人毛片60女人毛片免费| 青春草国产在线视频 | 免费看av在线观看网站| www.色视频.com| 国产欧美日韩精品一区二区| 一个人免费在线观看电影| 欧美日韩综合久久久久久| 麻豆国产av国片精品| 日本五十路高清| 国产久久久一区二区三区| 少妇的逼好多水| 国产探花极品一区二区| 毛片女人毛片| av在线观看视频网站免费| 久久精品国产亚洲av天美| 国产精品人妻久久久影院| 亚洲无线观看免费| 能在线免费看毛片的网站| 日韩av不卡免费在线播放| 特大巨黑吊av在线直播| 波多野结衣高清作品| 成人永久免费在线观看视频| 男人的好看免费观看在线视频| 亚洲av中文av极速乱| 免费黄网站久久成人精品| 哪里可以看免费的av片| 国内精品一区二区在线观看| 麻豆国产av国片精品| 久久国产乱子免费精品| 成人美女网站在线观看视频| 免费观看人在逋| 国产精品久久久久久久电影| 欧美色欧美亚洲另类二区| 国产伦精品一区二区三区视频9| 午夜精品一区二区三区免费看| 黄色视频,在线免费观看| 三级男女做爰猛烈吃奶摸视频| 亚洲欧美中文字幕日韩二区| 亚洲成人中文字幕在线播放| 日韩视频在线欧美| 一区二区三区四区激情视频 | 欧美丝袜亚洲另类| 97人妻精品一区二区三区麻豆| 中文在线观看免费www的网站| 97在线视频观看| 免费无遮挡裸体视频| 能在线免费观看的黄片| 国内揄拍国产精品人妻在线| 免费人成在线观看视频色| av在线播放精品| 1000部很黄的大片| 久久草成人影院| 精品午夜福利在线看| 91狼人影院| 春色校园在线视频观看| 亚洲成人精品中文字幕电影| 亚洲在线自拍视频| 狠狠狠狠99中文字幕| 我的老师免费观看完整版| 成人二区视频| 波多野结衣高清作品| 亚洲欧美日韩东京热| 亚洲精品国产av成人精品| 国产女主播在线喷水免费视频网站 | 校园人妻丝袜中文字幕| 久久久欧美国产精品| 一边亲一边摸免费视频| 欧美潮喷喷水| 成人漫画全彩无遮挡| 好男人在线观看高清免费视频| 九九在线视频观看精品| 国内精品宾馆在线| 亚洲精品乱码久久久久久按摩| 日本撒尿小便嘘嘘汇集6| 亚洲精品日韩av片在线观看| 成年av动漫网址| 丰满人妻一区二区三区视频av| 午夜精品一区二区三区免费看| 国产一区二区在线av高清观看| 亚洲国产日韩欧美精品在线观看| 超碰av人人做人人爽久久| 大香蕉久久网| 高清毛片免费观看视频网站| 成人毛片60女人毛片免费| 久久精品夜色国产| 91aial.com中文字幕在线观看| 老司机福利观看| 热99在线观看视频| 国产高清三级在线| 亚洲精品粉嫩美女一区| 婷婷亚洲欧美| 可以在线观看的亚洲视频| 99久久精品热视频| 欧美潮喷喷水| 我要搜黄色片| 夫妻性生交免费视频一级片| 韩国av在线不卡| 日韩欧美三级三区| kizo精华| 亚洲国产精品成人综合色| 国产精品久久久久久久电影| 久久精品国产99精品国产亚洲性色| 国产av不卡久久| 亚洲av二区三区四区| 日韩一区二区三区影片| 亚洲一级一片aⅴ在线观看| 天天一区二区日本电影三级| 国产成人aa在线观看| 美女国产视频在线观看| 内射极品少妇av片p| 午夜爱爱视频在线播放| 国产精品久久久久久精品电影| 国产伦在线观看视频一区| 午夜精品在线福利| 亚洲欧洲国产日韩| 日日摸夜夜添夜夜添av毛片| 国产精华一区二区三区| 看非洲黑人一级黄片| 国产精品人妻久久久久久| 久久九九热精品免费| 国内揄拍国产精品人妻在线| 欧美日本视频| 精品久久久久久久末码| 欧美精品一区二区大全| 日本黄色片子视频| 成人特级黄色片久久久久久久| 久久人人精品亚洲av| 欧美成人精品欧美一级黄| 婷婷六月久久综合丁香| 最近最新中文字幕大全电影3| av又黄又爽大尺度在线免费看 | 日韩高清综合在线| 22中文网久久字幕| 国产v大片淫在线免费观看| 免费av毛片视频| 成人欧美大片| 一夜夜www| 全区人妻精品视频| 日韩一区二区三区影片|