您好,登錄后才能下訂單哦!
現(xiàn)今,智能手機(jī)操作系統(tǒng)不能有效的提供給用戶足夠的控制權(quán)并且很清楚的了解到第三方的應(yīng)用程序是如何使用其的隱私數(shù)據(jù)。我們使用了TaintDroid來闡明這個(gè)缺點(diǎn),其是一個(gè)高效的,全系統(tǒng)動(dòng)態(tài)污點(diǎn)跟蹤和分析系統(tǒng)可以同時(shí)跟蹤對個(gè)敏感數(shù)據(jù)來源。TaintDroid利用了Android虛擬機(jī)的執(zhí)行環(huán)境提供了一個(gè)實(shí)時(shí)的分析。TaintDroid僅需消耗綁定的CPU為基準(zhǔn)14%的性能開銷對于第三方的應(yīng)用程序的開銷完全可以忽略不計(jì)。通過使用TaintDroid監(jiān)控了Android第三方比較流行的30款軟件的行為,我們發(fā)現(xiàn)在其中的20款軟件中就有68個(gè)例子是誤用用戶隱私信息的。使用TaintDroid監(jiān)控敏感信息有助于手機(jī)用戶在使用第三方應(yīng)用時(shí)獲得很多的信息對于智能手機(jī)有價(jià)值的輸入對于安全公司也可以有效的尋找出有惡意行為的軟件。
現(xiàn)代智能手機(jī)平臺的一個(gè)主要特征就是一個(gè)集中式的服務(wù)下載多數(shù)來自第三方應(yīng)用市場。這樣的一個(gè)“App stores”不僅方便了用戶和開發(fā)者,而且已經(jīng)讓手機(jī)設(shè)備更加的有趣以及有用,因此使得智能手機(jī)平臺有了一個(gè)爆發(fā)式的增長。蘋果的APP Store僅僅18個(gè)月就提供了將近3億的應(yīng)用程序。大多數(shù)的這些應(yīng)用程序混合數(shù)據(jù)時(shí)來自本地的傳感器像GPS接收器,照相機(jī),攝像頭和加速器然后上傳到云端。應(yīng)用程序通常都具有合法的原因來獲取用戶的隱私數(shù)據(jù),但是用戶往往希望自己的數(shù)據(jù)是被正確使用的。程序的開發(fā)者中繼利用了上傳到云端的數(shù)據(jù)并且這些隱私數(shù)據(jù)是通過看似無辜的傳感器產(chǎn)生的比如說加速計(jì)。
解決這種用戶體驗(yàn)樂趣和使用第三方的應(yīng)用軟件而帶來的隱私?jīng)_突在智能手機(jī)平臺是一個(gè)極大的挑戰(zhàn)。目前,手機(jī)的操作系統(tǒng)提供的僅僅是一個(gè)粗粒度的控制訪問信息是否一個(gè)應(yīng)用程序可以訪問用戶的隱私信息,但是沒有提供隱私數(shù)據(jù)是怎樣被使用的。例如,如果用戶允許應(yīng)用程序獲取到她的地理位置信息,但是她無法得知是否這個(gè)應(yīng)用程序?qū)?huì)送她的應(yīng)用程序到地理位置服務(wù)系統(tǒng),廣告商,應(yīng)用開發(fā)者或者是其他的應(yīng)用實(shí)體。作為這個(gè)結(jié)果,用戶盲目的相信了應(yīng)用程序?qū)?huì)正確的使用他們的隱私數(shù)據(jù)。
這篇文章講了TaintDroid,是針對Android手機(jī)平臺的一個(gè)擴(kuò)展,通過第三方的應(yīng)用程序用于跟蹤敏感數(shù)據(jù)流。TaintDroid假設(shè)下載的第三方運(yùn)用程序是不被信任的,通過實(shí)時(shí)的檢測這些應(yīng)用程序是怎樣獲取和控制用戶的隱私數(shù)據(jù)的。我們的首要目標(biāo)是檢測當(dāng)敏感數(shù)據(jù)通過不信任程序離開我們的系統(tǒng)時(shí)通過手機(jī)用戶或者是外部安全服務(wù)來促進(jìn)對應(yīng)用程序的分析。
分析應(yīng)用程序行為要求有足夠的上下文信息關(guān)于數(shù)據(jù)將要離開一個(gè)設(shè)備以及數(shù)據(jù)將會(huì)被送往哪里。因此,TaintDroid自動(dòng)標(biāo)記數(shù)據(jù)的來源從隱私敏感來源以及物地應(yīng)用標(biāo)簽作為敏感數(shù)據(jù)傳播通過程序的變量,文件,進(jìn)程間的消息。當(dāng)污點(diǎn)數(shù)據(jù)通過網(wǎng)絡(luò)傳播或者是其他的途徑離開了系統(tǒng),TaintDroid將會(huì)對這個(gè)數(shù)據(jù)進(jìn)行標(biāo)簽,應(yīng)用程序負(fù)責(zé)傳送數(shù)據(jù)和數(shù)據(jù)的目的地。這樣的實(shí)時(shí)反饋給用戶還有安全服務(wù)商更深入的了解到移動(dòng)的運(yùn)用程序在做什么,有可能識別出行為不端的應(yīng)用程序。
對于實(shí)用性來說,TaintDroid的性能開銷必須要最小。相比于現(xiàn)在的重量級的全系統(tǒng)仿真,我們利用了Android的虛擬化架構(gòu)整合了四個(gè)粒度級的污點(diǎn)傳播:變量級,方法級,信息級和文件級。盡管現(xiàn)有的技術(shù)都不是新的,我們的貢獻(xiàn)在于合并了這些技術(shù)并且找到了一個(gè)由于智能手機(jī)對資源約束在性能和精度之間的平衡點(diǎn)。實(shí)驗(yàn)表明我們的原型系統(tǒng)顯示跟蹤而引起的CPU的運(yùn)行時(shí)候的開銷通過微基準(zhǔn)測試還不到14%。更為重要的就是,被檢測的第三方軟件可以被監(jiān)控并且產(chǎn)生很少的感知延遲。
為了評估TaintDroid的準(zhǔn)確性,我們使用了30款隨機(jī)選取的運(yùn)用程序,這些流行的Android運(yùn)用程序會(huì)涉及到使用定位用戶的地理位置信息,使用攝像頭,錄音數(shù)據(jù)等等。TaintDroid正確的標(biāo)記了這些應(yīng)用程序中的105例這樣的應(yīng)用程序傳輸污染路徑;在這105例中我們檢測到其中的37例是合法的。TaintDroid同樣顯示了在這30款軟件中的15例提供了用戶的地理位置信息給遠(yuǎn)程的廣告服務(wù)商。其中的7款軟件收集了手機(jī)的相關(guān)信息的ID,例如手機(jī)的號碼和SIM卡號。總的來說,在我們研究的三分之二的應(yīng)用程序中都有涉及到使用敏感數(shù)據(jù)的可以行為。我們的發(fā)現(xiàn)揭示了TaintDroid能夠幫助解決可能存在威脅的第三方應(yīng)用程序的敏感行為。
類似于信息流跟蹤系統(tǒng),TaintDroid的一個(gè)基本限制可以通過隱式流繞過泄露。通過隱式流避免了污點(diǎn)檢測,就這種行為而言,就可以作為惡意軟件的一項(xiàng)指標(biāo),并且可以通過其他的技術(shù)例如自動(dòng)化的靜態(tài)代碼分析,這一技術(shù)我們將在第8章中討論。
剩余文章的組織如下:第二部分提供更高層次的對TaintDroid的介紹,第三部分會(huì)對Android平臺的背景做一個(gè)介紹,第四部分將會(huì)介紹TaintDroid的設(shè)計(jì),第五部分描述了TaintDroid對污染源的追蹤,第六部分描述了對Android應(yīng)用程序的研究,第7部分描述了我們原型系統(tǒng)的性能特征,第八部分描述了我們方法的局限性,第9部分介紹了相關(guān)工作,第十部分進(jìn)行相關(guān)的總結(jié)。
我們試圖尋找一個(gè)框架允許用戶監(jiān)控第三方智能手機(jī)應(yīng)用程序讓他們實(shí)時(shí)處理他們的隱私數(shù)據(jù)。許多的智能手機(jī)都是閉源的,因此,靜態(tài)代碼分析是不可能的。即使源代碼是可用的,運(yùn)行時(shí)事件和配置常常規(guī)定了信息使用;實(shí)時(shí)監(jiān)控在特殊的環(huán)境了占了很重要的比重。
對于網(wǎng)絡(luò)的監(jiān)控披露隱私敏感信息存在以下幾個(gè)挑戰(zhàn):
l智能手機(jī)的資源是受限的。由于資源的限制阻礙了像Panorama這樣重量級信息跟蹤系統(tǒng)。
l第三方應(yīng)用程序委托了幾種類型的隱私數(shù)據(jù)信息。這個(gè)監(jiān)控系統(tǒng)必須區(qū)分各種各樣的信息,這就產(chǎn)生了額外的計(jì)算和存儲(chǔ)。
l基于上下文的敏感信息是動(dòng)態(tài)的,難以識別甚至是當(dāng)發(fā)送的時(shí)候才會(huì)清晰。例如,地理位置是一系列的浮點(diǎn)數(shù)可以很頻繁的改變并且很難預(yù)測。
l應(yīng)用程序可以分享信息。如果將監(jiān)控系統(tǒng)限制在單獨(dú)的APP里面的話不能夠很好的檢測文件之間的信息流和應(yīng)用程序之間的進(jìn)程通信,包括核心系統(tǒng)的設(shè)計(jì)到敏感信息的傳遞。
我們使用動(dòng)態(tài)的污點(diǎn)分析來監(jiān)控智能手機(jī)里的敏感隱私信息。敏感信息是首先用來標(biāo)記污點(diǎn)來源的,一個(gè)污點(diǎn)標(biāo)示指示信息是被分配好的。動(dòng)態(tài)污點(diǎn)分析標(biāo)記數(shù)據(jù)標(biāo)簽是怎樣影響其他數(shù)據(jù)的可能方式是原始的敏感信息泄露。這種追蹤方式常常是在指令執(zhí)行水平上的。最后,受影響的數(shù)據(jù)將會(huì)被標(biāo)示在他離開系統(tǒng)之前存放到污點(diǎn)池(常常是網(wǎng)絡(luò)接口)中。
存在的污點(diǎn)跟蹤方法通常有幾個(gè)限制。首先也是最重要的,方法依靠指令級的動(dòng)態(tài)污點(diǎn)分析來做整個(gè)系統(tǒng)的仿真將會(huì)產(chǎn)生很高的性能消耗。指令級的檢測將會(huì)是產(chǎn)生2-20倍的性能消耗,除此之外也會(huì)招致仿真的性能消耗,因此指令級的動(dòng)態(tài)分析并不適合實(shí)時(shí)的動(dòng)態(tài)分析。第二,發(fā)展中的精確污點(diǎn)傳播邏輯已經(jīng)證明對于X86的指令級是一個(gè)很大的挑戰(zhàn)。指令級的污點(diǎn)檢測可能導(dǎo)致污點(diǎn)爆發(fā)如果出現(xiàn)堆棧指針錯(cuò)誤或者是污點(diǎn)丟失例如像CMPXCHG,REF MOV這樣復(fù)雜的指令。然而大多數(shù)的智能手機(jī)都是使用ARM指令集,類似很多假陽性和假陰極的現(xiàn)象都可能出現(xiàn)。
表一呈現(xiàn)出了我們污點(diǎn)跟蹤智能手機(jī)的方法。我們利用智能手機(jī)的體系架構(gòu)來提升架構(gòu)(e.g.,安卓,黑莓,J2ME架構(gòu)的手機(jī)),系統(tǒng)范圍的污染使用語義明確細(xì)粒度跟蹤標(biāo)簽。
首先,我們執(zhí)行VM解釋器來提供各種等級的跟蹤用以跟蹤可疑的程序代碼。使用各種語義是通過解釋器提供的值得上下文來避免污點(diǎn)爆發(fā)在X86的指令級中。除此之外,通過追蹤的變化,我們只是跟蹤數(shù)據(jù)而并不跟蹤代碼。第二,我們在應(yīng)用程序之間使用了信息級別的跟蹤。跟蹤消息之間的污點(diǎn)而不是數(shù)據(jù)在進(jìn)程間通信的信息最小化開銷以此來擴(kuò)大分析的系統(tǒng)寬度。第三,對于系統(tǒng)提供的原生態(tài)庫,我們使用了方法級別的跟蹤。在這里,我們運(yùn)行代碼而不做測試,并且修復(fù)了污點(diǎn)追蹤傳播的返回值。這些方法伴隨著系統(tǒng)和一直心系流動(dòng)的語義。最后,我們使用了文件級別的跟蹤以確保信息的持久性保留了污點(diǎn)標(biāo)記。
我們充分利用應(yīng)用程序定義好的接口來訪問敏感數(shù)據(jù),以此來分配標(biāo)簽。例如,所有的信息來自于GPS硬件的都是位置敏感信息,并且所有信息來自聯(lián)系人數(shù)據(jù)庫是涉及聯(lián)系人的敏感信息。這避免了對標(biāo)簽的依賴試探或者手冊規(guī)范。對于擴(kuò)展的信息我們將在第5部分詳述。
為了實(shí)現(xiàn)跟蹤的多粒度,我們的方法依賴于固件的完整性。這個(gè)污點(diǎn)跟蹤的可信計(jì)算基于包括虛擬機(jī)在內(nèi)的執(zhí)行用戶空間和任何不可信的解釋應(yīng)用程序加載的系統(tǒng)庫。然而,這部分代碼是固件的一部分,因此是可信的。應(yīng)用程序僅僅可以逃避虛擬機(jī)執(zhí)行的原生代碼。在我們的目標(biāo)平臺(Android),我們修改了本地庫加載程序確保應(yīng)用程序不僅可以只從固件加載本地庫而不是從應(yīng)用程序下載。值得注意的是,在2010年初對Android Market市場上的每一個(gè)類別前50的最流行的免費(fèi)發(fā)行的應(yīng)用程序都揭示出這些程序少于4%包含a.so文件。一份類似的調(diào)查報(bào)告在2010年中期揭示出這個(gè)部分增長到了5%,這個(gè)增長預(yù)示著使用第三方庫的增長,但是這個(gè)數(shù)量對應(yīng)用程序的影響還是很小的。
總的來說,我們提供了一個(gè)新穎的,高效的,款系統(tǒng)的,多標(biāo)記的根據(jù)不同的信息進(jìn)行多粒度結(jié)合的污點(diǎn)跟蹤系統(tǒng)。雖然對于一些技術(shù)像通過解釋器進(jìn)行變量跟蹤在之前曾經(jīng)被提出過(看第九章),據(jù)我們所知,我們的方法是第一個(gè)擴(kuò)充像系統(tǒng)級跟蹤的,通過選擇多粒度的方法,我們平衡了性能和精度之間的問題。此部分我們將在第6和第7節(jié)中提及,我們的系統(tǒng)方法即高效(對于同時(shí)跟蹤每個(gè)數(shù)據(jù)單元的32個(gè)污點(diǎn)只占了14%的系統(tǒng)開銷和4.4%的內(nèi)存開銷)
Android是一個(gè)基于Linux的開源的,移動(dòng)手機(jī)平臺。最核心的手機(jī)功能被執(zhí)行作為一個(gè)應(yīng)用程序運(yùn)行在頂層自己定制的中間鍵上。中間件本身使用的是Java和C/C++代碼。運(yùn)用程序是用Java實(shí)現(xiàn)的并且被編譯成一個(gè)自定義的字節(jié)碼被命名為Dalvik可執(zhí)行文件(DEX)的格式。每一個(gè)的可執(zhí)行程序都是一個(gè)Dalvik虛擬機(jī)實(shí)例。每一個(gè)實(shí)例作為一個(gè)唯一的UNIX用戶身份在Linux平臺子系統(tǒng)上每個(gè)應(yīng)用程序是隔離的互不干擾的。應(yīng)用程序之間的通信通過Binder IPC機(jī)制。Binder通過一個(gè)基于包交換的信息處理系統(tǒng)。我們現(xiàn)在討論一些必要的話題來是我們更好的理解我們的系統(tǒng)。
Dalvik 虛擬機(jī)解釋器:Dex文件是一種基于寄存器的機(jī)器語言,和Java的字節(jié)碼不同,其是基于棧的。對于每一個(gè)DEX方法都有它自己預(yù)定義的一定數(shù)量的虛擬寄存器(由于經(jīng)常使用所以我們簡單稱為“寄存器”)。Dalvik虛擬機(jī)的解釋器管理方法寄存器使用一個(gè)內(nèi)部的可執(zhí)行棧。當(dāng)前的方法寄存器總是在頂部的堆??蚣?。這些寄存器對應(yīng)著Java方法的局部變量和原始的存儲(chǔ)類型以及對象的引用。所有的這些計(jì)算都發(fā)生在寄存器中,因此在使用前和使用后類的字段都必須要加載和存儲(chǔ)。值得注意的是DEX使用的類的字段必須是長時(shí)間存儲(chǔ)的,不像硬件基于寄存器的語言(e.g.,X86)存儲(chǔ)值的時(shí)候是隨機(jī)的。
Native 方法:Android的中間件提供了訪問到本地性能優(yōu)化和第三方庫像OpenGL和WebKit。Android同樣使用了Apache Harmony Java架構(gòu),使其可以頻繁的使用系統(tǒng)庫(e.g.,math routines)。Native層的方法是用C/C++寫的暴露出功能是基于Linux內(nèi)核和服務(wù)的。他們同樣提供了可以訪問Java內(nèi)部的接口,因此它是被包含在我們的可信計(jì)算部分。
圖2 TaintDroid的體系結(jié)構(gòu)
Android包含了兩種類型的原生方法:內(nèi)部虛擬機(jī)方法和JNI方法。內(nèi)部虛擬機(jī)方法用于訪問內(nèi)部特殊的結(jié)構(gòu)和APIs。JNI方法符合Java本地接口標(biāo)準(zhǔn)規(guī)范,這要求Dalvik對單獨(dú)的java參數(shù)傳進(jìn)的變量使用JNI調(diào)用橋。相反的,內(nèi)部的VM方法必須手動(dòng)的解析從解釋出的字節(jié)碼數(shù)組參數(shù)。內(nèi)部虛擬機(jī)的方法必須手動(dòng)解析參數(shù)從解釋器傳來的字節(jié)數(shù)組的參數(shù)。
Binder IPC:所有的Android IPC都需要使用Binder 機(jī)制來進(jìn)行通信。Binder是一個(gè)基于組件的進(jìn)程并且IPC框架設(shè)計(jì)是為了BeOS,Palm Inc 進(jìn)行擴(kuò)展,Google為Android量身定制的。Binder的基礎(chǔ)是基于包的,是活躍并且標(biāo)準(zhǔn)數(shù)據(jù)的序列化,允許應(yīng)用程序框架層在進(jìn)程之間管理分享對象。Binder 的內(nèi)核模塊在進(jìn)程之間傳遞包的信息。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。