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

    基于靜態(tài)污點(diǎn)分析的Android應(yīng)用能力泄露檢測(cè)框架

    2019-05-17 02:45:14陳純周安民
    現(xiàn)代計(jì)算機(jī) 2019年9期
    關(guān)鍵詞:控制流污點(diǎn)語(yǔ)句

    陳純,周安民

    (四川大學(xué)電子信息學(xué)院信安所,成都610065)

    0 引言

    Android是一種基于Linux的、開(kāi)放源代碼的操作系統(tǒng),主要適合移動(dòng)設(shè)備,如智能手機(jī)和平板電腦等,Android操作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),主要支持手機(jī),2005年8月由Google收購(gòu)[1]。在網(wǎng)絡(luò)技術(shù)迅猛發(fā)展的今天,各種移動(dòng)設(shè)備如春后竹筍般增長(zhǎng),現(xiàn)在移動(dòng)設(shè)備的使用頻率已經(jīng)超過(guò)PC端。Android系統(tǒng)的快速發(fā)展,不同功能Android應(yīng)用也越來(lái)越多,形形色色的應(yīng)用豐富了人們的生活,也給人們的生活帶來(lái)了便捷的同時(shí)也產(chǎn)生了弊端,由于復(fù)雜的網(wǎng)絡(luò)環(huán)境,Android系統(tǒng)中產(chǎn)生了大量的安全漏洞,從而造成了各種信息泄露、惡意扣費(fèi)、系統(tǒng)破壞等各種現(xiàn)象,而漏洞的產(chǎn)生,主要是由于開(kāi)發(fā)人員的安全意識(shí)淡薄,在程序設(shè)計(jì)當(dāng)中存在的缺陷,或者在開(kāi)發(fā)過(guò)程中對(duì)沒(méi)有對(duì)輸入做校驗(yàn),因此設(shè)計(jì)一款檢測(cè)Android應(yīng)用漏洞是很有必要的。

    1 背景知識(shí)和相關(guān)工作

    1. 1 Android體系結(jié)構(gòu)

    Android整體構(gòu)架[2]主要包括應(yīng)用層、應(yīng)用程序框架、核心庫(kù)與運(yùn)行環(huán)境層、Linux內(nèi)核層。

    (1)應(yīng)用層

    應(yīng)用層幾乎運(yùn)行所有的應(yīng)用程序。應(yīng)用程序不僅包括Android系統(tǒng)自帶的應(yīng)用,例如主屏幕(Home)、聯(lián)系人(Contact)、電話(huà)(Phone)、瀏覽器(Browsers)等,還包括用戶(hù)自定義開(kāi)發(fā)的應(yīng)用程序,應(yīng)用層的應(yīng)用程序是直接和用戶(hù)進(jìn)行交互的,并最終運(yùn)行在Dalvik虛擬機(jī)中。

    (2)應(yīng)用框架層

    應(yīng)用框架層主要為應(yīng)用層的開(kāi)發(fā)者提供API,本層包含了UI程序中所需要的各種控件,包括:豐富而又可擴(kuò)展的視圖、內(nèi)容提供器、資源管理器、通知管理器、活動(dòng)管理器等。

    (3)核心庫(kù)與運(yùn)行環(huán)境層

    本層次對(duì)應(yīng)一般嵌入式系統(tǒng),相當(dāng)于中間件層次,分為各種庫(kù)和Android運(yùn)行環(huán)境兩個(gè)部分,包括C庫(kù)、多媒體框架、SGL、SSL、OpenGL SE、界面管理工具、SQLite、WebKit、FreeType 等。

    (4)Linux內(nèi)核層

    該層位于最底層,作為硬件層和軟件層交互的層,提供了與Android設(shè)備相關(guān)的驅(qū)動(dòng)程序,例如顯示驅(qū)動(dòng)、Flash內(nèi)存驅(qū)動(dòng)、照相機(jī)驅(qū)動(dòng)、音頻驅(qū)動(dòng)、Wi-Fi驅(qū)動(dòng)、藍(lán)牙驅(qū)動(dòng)等。

    1. 2 Android組件

    Android有四種不同類(lèi)型與功能的組件[2],它們分別是活動(dòng)(Activity)、服務(wù)(Service)、廣播接收器(Broadcast Receiver)、內(nèi)容提供者(Content Provider)。

    (1)活動(dòng)是android應(yīng)用程序的表現(xiàn)層,展現(xiàn)為一個(gè)可視化的用戶(hù)界面,是用戶(hù)與程序進(jìn)行交互的組件,存在著活動(dòng)、暫停、停止、銷(xiāo)毀四種狀態(tài)。

    (2)服務(wù)是運(yùn)行在操作系統(tǒng)后臺(tái)、無(wú)用戶(hù)界面的一種組件,Service通常被用來(lái)執(zhí)行不需要用戶(hù)干涉的操作。

    (3)內(nèi)容提供器是Android系統(tǒng)提供的一種應(yīng)用程序數(shù)據(jù)共享機(jī)制,可以在多個(gè)應(yīng)用程序中實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)的共享。

    (4)廣播接收器是Android系統(tǒng)提供的一種異步消息傳遞機(jī)制,用于在系統(tǒng)與應(yīng)用程序之間、應(yīng)用程序與應(yīng)用程序之間傳遞消息,Broadcast Receiver本質(zhì)上就是一種系統(tǒng)級(jí)別的時(shí)間監(jiān)聽(tīng)器,用于監(jiān)聽(tīng)系統(tǒng)全局的廣播消息。

    1. 3 組件通信機(jī)制

    同一應(yīng)用的組件之間的交流和不同應(yīng)用組件之間的交流是通過(guò)意圖(Intent)組件[2]來(lái)實(shí)現(xiàn)的,四大組件都需要使用意圖來(lái)激活,意圖主要有兩種類(lèi)型:顯示Intent和隱式 Intent。

    (1)顯示Intent

    顯式Intent通常為應(yīng)用程序內(nèi)部組件之間的通信方式,通常這種方式需要在Intent中明確指定目標(biāo)組件;

    (2)隱式Intent

    隱式Intent通常應(yīng)用于程序之間通信,由于隱式Intent沒(méi)有明確目標(biāo)組件,所以必須包含足夠的屬性信息才能通過(guò)系統(tǒng)匹配到對(duì)應(yīng)的目標(biāo)組件,相對(duì)而言,目標(biāo)組件必須包含意圖的過(guò)濾器,過(guò)濾包含匹配意圖的相應(yīng)的屬性信息才能實(shí)現(xiàn)兩者的匹配,隱式意圖中攜帶的屬性有 action(動(dòng)作)、data(數(shù)據(jù))、category(類(lèi)別)。

    1. 4 Android安全機(jī)制

    Android系統(tǒng)的安全機(jī)制在內(nèi)核層面試?yán)^承Linux內(nèi)核的安全機(jī)制,在內(nèi)核安全機(jī)制的基礎(chǔ)上發(fā)展了一套具有自身特點(diǎn)的安全機(jī)制,主要介紹Android系統(tǒng)提供的三大安全機(jī)制:沙箱隔離機(jī)制、權(quán)限授予和檢查機(jī)制以及簽名機(jī)制。

    (1)沙箱隔離機(jī)制

    Android在Linux內(nèi)核安全模型[3]基礎(chǔ)上,拓展了用戶(hù)與權(quán)限機(jī)制,將多個(gè)用戶(hù)操作系統(tǒng)中用戶(hù)隔離為應(yīng)用程序隔離,并且為其配置一個(gè)UID,用于區(qū)別每個(gè)應(yīng)用程序。Android系統(tǒng)根據(jù)UID為應(yīng)用程序創(chuàng)建沙箱,不同UID的應(yīng)用程序運(yùn)行在各自的沙箱中,彼此隔離,互不干擾。默認(rèn)情況下,兩個(gè)不同的Android應(yīng)用彼此無(wú)法互相訪問(wèn),如果要實(shí)現(xiàn)不同應(yīng)用程序之間的互相訪問(wèn)需要為它們分配相同UID。Android系統(tǒng)提供了一種共享UID機(jī)制,通過(guò)在Manifest在文件中制定android:sharedUserId屬性實(shí)現(xiàn)不同的應(yīng)用程序具有相同UID的功能。

    (2)權(quán)限授予和檢查機(jī)制

    Android系統(tǒng)的沙箱隔離機(jī)制使應(yīng)用程序之間的分離開(kāi)來(lái),相互隔離的進(jìn)程之間無(wú)法互相訪問(wèn)彼此的資源,這樣導(dǎo)致應(yīng)用無(wú)法使用系統(tǒng)資源,為此Android系統(tǒng)提供了權(quán)限授予和檢查機(jī)制[4],使應(yīng)用程序可以通過(guò)較為安全的方式訪問(wèn)系統(tǒng)資源,Android系統(tǒng)提供了多達(dá)一百多種權(quán)限。Android應(yīng)用程序通過(guò)在Manifest文件中使用標(biāo)簽顯示聲明權(quán)限名稱(chēng)來(lái)獲得指定權(quán)限,進(jìn)而可以訪問(wèn)相應(yīng)的系統(tǒng)資源。

    (3)簽名機(jī)制

    開(kāi)發(fā)人員在發(fā)布自己的Android應(yīng)用程序時(shí)必須對(duì)應(yīng)用程序設(shè)置數(shù)字簽名,Android系統(tǒng)會(huì)在應(yīng)用程序安裝時(shí)檢查應(yīng)用的簽名,如果沒(méi)有簽名或者簽名不正確則拒絕安裝。雖然Android應(yīng)用程序必須進(jìn)行簽名才能發(fā)布和安裝運(yùn)行,但其簽名可以有開(kāi)發(fā)人員自己生成,Android SDK為開(kāi)發(fā)人員提供了簽名工具singapk.jar[5],使用自己生成的公鑰、密鑰即可完成對(duì)應(yīng)用程序的簽名。簽名是應(yīng)用程序開(kāi)發(fā)者的身份識(shí)別標(biāo)識(shí),可以通過(guò)簽名判斷應(yīng)用程序是否被篡改,這對(duì)應(yīng)用的安全起到了一定程度的保護(hù)作用。

    1. 5 能力泄露原理

    能力泄露[6]漏洞是Android應(yīng)用軟件眾多安全問(wèn)題之一的一類(lèi),其本質(zhì)是應(yīng)用軟件通過(guò)某種方式提升了相關(guān)系統(tǒng)權(quán)限,獲取了權(quán)限對(duì)應(yīng)的系統(tǒng)資源,最終執(zhí)行相應(yīng)的軟件行為,造成對(duì)用戶(hù)或者系統(tǒng)的危害。

    Android應(yīng)用在運(yùn)行時(shí)都運(yùn)用于自身的進(jìn)程中,該進(jìn)程擁有獨(dú)立的虛擬機(jī)實(shí)例,不能隨便與其他應(yīng)用相互訪問(wèn)資源。圖1給出了Android應(yīng)用程序級(jí)別的能力泄露漏洞原理。從圖中表示單個(gè)應(yīng)用運(yùn)行在各自的虛擬機(jī)中,互不干擾,應(yīng)用1不擁有權(quán)限,應(yīng)用2擁有權(quán)限p1,應(yīng)用2并沒(méi)有任何權(quán)限保護(hù)它的組件1,任何其他應(yīng)用可以訪問(wèn)應(yīng)用2的組件1,當(dāng)然應(yīng)用1的任何組件可以訪問(wèn)應(yīng)用2的組件1,又因?yàn)閼?yīng)用2的組件1有可以訪問(wèn)應(yīng)用3組件1的權(quán)限,因此,應(yīng)用1的組件1在沒(méi)有p1的權(quán)限情況下也可以通過(guò)應(yīng)用2的組件1訪問(wèn)應(yīng)用3的組件1,應(yīng)用1的組件1通過(guò)應(yīng)用2的組件1權(quán)限得到了提升,這就是所謂的應(yīng)用2能力泄露。

    圖1 能力泄露原理

    下面將用具體代碼展示能力泄露漏洞產(chǎn)生的過(guò)程,如圖2所示,應(yīng)用1的配置文件代碼的作用是使應(yīng)用1具有獲取定位信息的權(quán)限,應(yīng)用1的代碼的作用是使組件能夠獲得用戶(hù)定位并且將定位信息綁定到隱式Intent對(duì)象上,最后啟動(dòng)應(yīng)用2的一個(gè)活動(dòng),應(yīng)用2中的配置文件1是獲取發(fā)送短信的權(quán)限,配置文件2通過(guò)過(guò)濾器篩選出符合條件的Intent對(duì)象,應(yīng)用2的代碼的作用是獲得應(yīng)用1的Intent對(duì)象以及Intent中額外的位置信息,并將信息發(fā)送到其他設(shè)備上,這就導(dǎo)致雖然應(yīng)用2沒(méi)有獲取定位信息的權(quán)限,卻通過(guò)應(yīng)用1獲得了該權(quán)限,我們也稱(chēng)這種現(xiàn)象叫做應(yīng)用2權(quán)限提升,應(yīng)用1能力泄露。

    圖2 能力泄露代碼

    1. 6 靜態(tài)污點(diǎn)分析技術(shù)

    污點(diǎn)分析技術(shù)[7]是信息流分析技術(shù)的一種,該技術(shù)通過(guò)對(duì)程序中敏感數(shù)據(jù)進(jìn)行標(biāo)記,之后跟蹤標(biāo)記數(shù)據(jù)在程序中的傳播,最后檢測(cè)是否到達(dá)泄漏點(diǎn)來(lái)進(jìn)行漏洞分析的,污點(diǎn)分析技術(shù)主要有三個(gè)重要技術(shù):中間表示層,Source和Sink,可達(dá)路徑。

    (1)中間表示層

    為了簡(jiǎn)化分析的復(fù)雜性,一般不會(huì)在Dalvik字節(jié)碼和Java代碼上面直接分析,而是在中間代碼Jimple[8]上進(jìn)行分析的,Jimple是Java中簡(jiǎn)單類(lèi)型化的三地址表示的中間語(yǔ)言,只有15條語(yǔ)句指令,這15條指令核心指令、函數(shù)內(nèi)控制指令、函數(shù)間控制指令、監(jiān)視器指令、退出指令和異常處理指令。

    (2)Source和 Sink

    Source[9]即污點(diǎn)源,代表直接引入不受信任的數(shù)據(jù),Sink[9]即泄漏點(diǎn),代表直接產(chǎn)生安全敏感操作或者泄露隱私數(shù)據(jù)到外界,污點(diǎn)分析是通過(guò)信息流分析方法檢測(cè)出那些標(biāo)記的Source(污點(diǎn)源)所操作的信息是否能流向并且達(dá)到所定義的Sink(泄漏點(diǎn))位置。

    (3)可達(dá)路徑

    污點(diǎn)分析的整個(gè)過(guò)程屬于執(zhí)行順序相關(guān),其中前向的污點(diǎn)分析用于尋找被污染源污染的變量傳播到了何處,而后向的按需別名分析[9]用于查找在Source之前所有對(duì)同一個(gè)被污染源污染的堆內(nèi)存位置的別名,從而找出一條從Source到Sink之間的一種可能性路徑,如圖3所示[9],foo函數(shù)中的w變量被標(biāo)記為污點(diǎn)變量,然后傳播到堆對(duì)象中的x.f變量,當(dāng)有被污染了的變量傳播到堆對(duì)象的成員變量中時(shí),使用后向分析找出相關(guān)變量或者對(duì)象的別名,x.f和z.g.f指向了同一內(nèi)存,而這兩個(gè)變量是由x賦值的,x又是參數(shù)z賦值而來(lái)的,然后繼續(xù)向前分析調(diào)用函數(shù)中a賦值給z,接著發(fā)現(xiàn)b也是別名,對(duì)b.f再繼續(xù)做前向分析,判斷出b.f即a.g.f,從而檢測(cè)到Source被傳遞到了Sink的位置。

    圖3 可達(dá)路徑

    2 框架的設(shè)計(jì)及實(shí)現(xiàn)

    第一節(jié)主要介紹了Android體系結(jié)構(gòu)、Android組件、Android安全機(jī)制、能力泄露原理、靜態(tài)污點(diǎn)分析技術(shù)的基礎(chǔ)知識(shí),在本章中主要提出一種基于污點(diǎn)分析的Android能力泄露漏洞檢測(cè)框架,該框架的流程圖如圖4所示,該框架啟動(dòng)時(shí),首先會(huì)對(duì)apk文件進(jìn)行逆向解析,得到Manifest文件和Dex文件。接著,將Dex文件用soot工具[10]轉(zhuǎn)換成可讀的中間語(yǔ)言表示形式,結(jié)合對(duì)Manifest文件進(jìn)行分析得到模擬的Android生命周期,構(gòu)造初始偽入口函數(shù)dummymain[9],以偽造的dummymain函數(shù)為入口,對(duì)Jimple代碼進(jìn)行控制流分析并構(gòu)造程序控制流圖ICFG[11],然后,在ICFG的基礎(chǔ)上進(jìn)行檢測(cè)Android應(yīng)用中能力泄露數(shù)據(jù)在Android應(yīng)用內(nèi)的傳播情況。

    圖4 系統(tǒng)框架流程圖

    2. 1 解析Manifest文件

    通過(guò)前面的能力泄露漏洞原理介紹,可以知道Android應(yīng)用能力通過(guò)權(quán)限以及敏感API泄露的,而Manifest文件記錄了應(yīng)用需要使用的權(quán)限,暴露的組件和實(shí)現(xiàn)的類(lèi)、實(shí)現(xiàn)的位置,以及訪問(wèn)某組件所需的權(quán)限。其中標(biāo)簽表示需要獲取某個(gè)權(quán)限時(shí)必須在該標(biāo)簽中聲明。標(biāo)簽聲明一個(gè)安全權(quán)限,該權(quán)限可用于限制對(duì)特定組件或功能的訪問(wèn)。Android:exported屬性是四大組件中都會(huì)有的一個(gè)屬性,該屬性用來(lái)標(biāo)示當(dāng)前組件是否能被另一個(gè)應(yīng)用組件啟動(dòng):true為允許啟動(dòng),false為不允許啟動(dòng),如果沒(méi)有設(shè)置該屬性該根據(jù)標(biāo)簽來(lái)決定,如果該組件包含則默認(rèn)為true,否則默認(rèn)為false。標(biāo)簽主要用來(lái)過(guò)濾隱式意圖,當(dāng)用戶(hù)進(jìn)行一項(xiàng)操作的時(shí)候,Android系統(tǒng)會(huì)根據(jù)配置的intent-filter來(lái)尋找可以相應(yīng)該操作的組件。本系統(tǒng)通過(guò)解析Manifest來(lái)初步分析應(yīng)用中是否存在能力泄露的行為,下面通過(guò)圖5來(lái)展示分析方法。

    圖5 解析Manifest文件

    2. 2 apk逆向生成Jimple中間碼

    一般情況下,應(yīng)用程序值提供apk文件給用戶(hù),并不會(huì)直接提供源代碼,這就需要將apk反編譯成Jimple可讀語(yǔ)言,可以通過(guò)調(diào)用開(kāi)源靜態(tài)分析工具Soot完成。首先使用Soot內(nèi)嵌的Android分析插件Dexpler[12]讀取dex格式的文件,生成一種類(lèi)似jasmin的偽代碼,再使用soot的Jimple組件對(duì)jasmin偽代碼進(jìn)行轉(zhuǎn)換為Jimple中間語(yǔ)言,為后面的使用Jimple中間代碼來(lái)構(gòu)建控制流圖奠下基礎(chǔ)。

    2. 3 構(gòu)造偽入口函數(shù)

    Android應(yīng)用不像Java程序一樣有統(tǒng)一的main函數(shù),它是事件驅(qū)動(dòng)的系統(tǒng),由組件的周期函數(shù)以及回調(diào)函數(shù)來(lái)控制應(yīng)用程序的運(yùn)行過(guò)程,包含多個(gè)Android分析入口點(diǎn),因此我們需要生成一個(gè)虛擬main方法來(lái)模擬各個(gè)組件的生命周期[13]以及被重寫(xiě)的回調(diào)函數(shù)之間的控制流轉(zhuǎn)移關(guān)系,以dummyMain函數(shù)為程序的控制流追蹤起點(diǎn),在dummyMain中順序調(diào)用使控制流分析進(jìn)入所有的子入口函數(shù),即可實(shí)現(xiàn)對(duì)Android程序多入口遍歷。如圖6所示[9],展示了通過(guò)dummyMain方法構(gòu)造為入口的Activity生命周期以及sendMessage回調(diào)的控制流圖。

    圖6 dummyMain方法的流程圖

    2. 4 控制流分析的實(shí)現(xiàn)

    控制流[14]是在解析Manifest.xml文件的基礎(chǔ)上,結(jié)合敏感API函數(shù)和系統(tǒng)回調(diào)函數(shù)對(duì)apk文件進(jìn)行構(gòu)造程序控制流圖,該階段采用Soot靜態(tài)分析框架來(lái)生成函數(shù)間控制流圖ICFG。函數(shù)間控制流圖ICFG是遍歷一個(gè)程序所有語(yǔ)句的地圖,通過(guò)一個(gè)接口InterproceduralCFG進(jìn)行定義,Soot自帶的JimpleBasedInterproceduralCFG類(lèi)對(duì)InterproceduralCFG進(jìn)行了多層實(shí)現(xiàn),JimpleBasedInterproceduralCFG 中的CallGraph,Unit-Graph兩種數(shù)據(jù)結(jié)構(gòu)以及一些映射關(guān)系完成控制流ICFG的實(shí)現(xiàn),并保存在靜態(tài)的全局環(huán)境變量Scene中。

    2. 5 數(shù)據(jù)流的實(shí)現(xiàn)

    數(shù)據(jù)流分析[15]是建立在控制流分析之上的,根據(jù)控制流分析提供的語(yǔ)句執(zhí)行順序,數(shù)據(jù)流分析遍歷程序語(yǔ)句,提取并記錄語(yǔ)句中的數(shù)據(jù)依賴(lài)關(guān)系,形成數(shù)據(jù)路徑。在該框架中我們使用了以流函數(shù)flowfunction的形式提供服務(wù)的污染規(guī)則來(lái)提取程序語(yǔ)句中的數(shù)據(jù)流。步驟如下:

    (1)normalFlowFunction():當(dāng)分析到語(yǔ)句是一條沒(méi)有跳轉(zhuǎn)的順序執(zhí)行語(yǔ)句時(shí)進(jìn)行處理,提取語(yǔ)句之間的復(fù)制關(guān)系。

    (2)callFlowFunction():當(dāng)分析到的語(yǔ)句是一條函數(shù)調(diào)用語(yǔ)句時(shí)進(jìn)行處理,主要是對(duì)參數(shù)調(diào)用的映射。

    (3)returnFlowFunction():當(dāng)分析的語(yǔ)句是一條函數(shù)返回語(yǔ)句時(shí)進(jìn)行處理,主要對(duì)返回值進(jìn)行映射。

    (4)callToReturnFlowFunction():當(dāng)分析的語(yǔ)句是函數(shù)調(diào)用語(yǔ)句時(shí)進(jìn)行處理,主要是對(duì)與函數(shù)無(wú)關(guān)的數(shù)據(jù)的提取依賴(lài)關(guān)系或者特殊函數(shù)處理。

    靜態(tài)污點(diǎn)分析過(guò)程通過(guò)類(lèi)InfoflowProblem來(lái)定義,該類(lèi)實(shí)現(xiàn)了Heros的分析接口IFDSTabulationProblem,而IFDSTabulationProblem是IFDS的程序化描述,接口中按照IFDS理論定義了數(shù)據(jù)流分析的所有要素,接口中四個(gè)關(guān)鍵的函數(shù),其中flowFunction是流函數(shù);interprocedualCFG是控制流圖ICFG的接口;initial-Seeds是數(shù)據(jù)流分析在控制流中的起點(diǎn),一般是source函數(shù)的位置,在數(shù)據(jù)流分析前,我們需要根據(jù)檢測(cè)不同類(lèi)型的漏洞而配置不同的SourceAndSink.txt配置文件,下面表1和表2分別列出了與能力泄露相關(guān)的一些權(quán)限特征和行動(dòng)特征;zeroValue用來(lái)標(biāo)志污染值。

    表1 權(quán)限特征

    表2 行為特征

    3 實(shí)驗(yàn)結(jié)果

    我們從國(guó)內(nèi)的五大Android應(yīng)用市場(chǎng)上面下載了105個(gè)應(yīng)用進(jìn)行分析測(cè)試,囊括了金融理財(cái)、音樂(lè)視頻、社交通訊、旅游消費(fèi)、氣象交通、購(gòu)物支付、新聞閱讀等幾類(lèi)。

    3. 1 測(cè)試環(huán)境

    系統(tǒng)配置及測(cè)試環(huán)境如表3所示。

    表3 系統(tǒng)配置及測(cè)試環(huán)境

    3. 2 實(shí)驗(yàn)結(jié)果

    該框架通過(guò)靜態(tài)污點(diǎn)分析技術(shù)分析完這105個(gè)應(yīng)用程序,總耗時(shí)為320分鐘,在這次分析當(dāng)中發(fā)現(xiàn)了有6項(xiàng)應(yīng)用程序包含有能力泄露漏洞,它們分別是com.madgag.agit, com.matburt.mobileorg, com.robert.maps,com.jadn.cc,com.cradle.iitc.mobile.IITC,com.voidcode.diasporawebclient,其中泄露的權(quán)限如表4所示。

    表4 App的權(quán)限泄露

    4 結(jié)語(yǔ)

    本節(jié)主要對(duì)論文所做的研究工作進(jìn)行總結(jié),以及分析工作中存在的問(wèn)題和不足,并對(duì)未來(lái)的研究方向和發(fā)展趨勢(shì)進(jìn)行展望。本文首先研究了Android系統(tǒng)的框架結(jié)構(gòu)、四大組件、組件通信機(jī)制以及Android安全機(jī)制等,其次分析了能力泄露漏洞繞過(guò)Android系統(tǒng)安全機(jī)制的原理,最后通過(guò)污點(diǎn)分析技術(shù),自動(dòng)化實(shí)現(xiàn)過(guò)程間控制流圖的繪制,以及靜態(tài)污點(diǎn)跟蹤技術(shù)來(lái)檢測(cè)可利用數(shù)據(jù)路徑,從而達(dá)到能力泄露漏洞的檢測(cè)。該框架還存在很多不足的地方,其一是在污點(diǎn)傳播分析當(dāng)中只能進(jìn)行顯式流分析,不能進(jìn)行隱式流分析,有些數(shù)據(jù)可以通過(guò)隱式流方式傳遞給其他數(shù)據(jù),這樣就造成了沒(méi)有標(biāo)記隱式流傳播的數(shù)據(jù)為污點(diǎn)數(shù)據(jù),導(dǎo)致了欠污染情況;其二是效率問(wèn)題,面對(duì)分析大型的應(yīng)用,分析的效率會(huì)降低;其三是未對(duì)fragment組件的生命周期考慮在內(nèi),從而導(dǎo)致漏報(bào),這個(gè)可能是未來(lái)的一個(gè)研究方向。隨著計(jì)算機(jī)系統(tǒng)的發(fā)展以及軟件規(guī)模的擴(kuò)大,污點(diǎn)分析技術(shù)將在應(yīng)用中發(fā)揮更大的作用,筆者認(rèn)為在未來(lái)研究能力泄露漏洞檢測(cè)會(huì)采用靜態(tài)污點(diǎn)分析和動(dòng)態(tài)污點(diǎn)分析結(jié)合的方式來(lái)獲取更高的精確度。

    猜你喜歡
    控制流污點(diǎn)語(yǔ)句
    基于代碼重寫(xiě)的動(dòng)態(tài)污點(diǎn)分析
    抵御控制流分析的Python 程序混淆算法
    工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
    電子科技(2021年2期)2021-01-08 02:25:58
    抵御控制流分析的程序混淆算法
    重點(diǎn):語(yǔ)句銜接
    精彩語(yǔ)句
    使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
    我國(guó)“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
    基于控制流隱藏的代碼迷惑
    如何搞定語(yǔ)句銜接題
    文安县| 抚顺市| 万年县| 财经| 黔东| 临夏市| 武清区| 淮安市| 齐河县| 泰顺县| 内黄县| 珠海市| 汝城县| 商河县| 井研县| 郎溪县| 平阳县| 饶阳县| 八宿县| 荣昌县| 兴山县| 绥棱县| 都安| 桂东县| 曲阳县| 六盘水市| 揭西县| 磐安县| 保靖县| 辽宁省| 玉山县| 南充市| 阳高县| 长寿区| 松江区| 昂仁县| 南汇区| 洪雅县| 乌拉特中旗| 陇西县| 乌兰察布市|