?

Android組件的權限泄露檢測方法研究

2017-01-13 20:49趙淑賢
現代商貿工業 2016年24期

趙淑賢

摘要:Android系統上的應用程序主要是由各個組件組成的,而組件的公開使用又會造成組件的權限泄露。針對這種危險提出了一種靜態檢測方法。重點研究權限泄露的檢測,運用靜態代碼的分析技術,建立API特征庫,其次遍歷AndroidManifest.xml文件中的組件聲明設置,檢測該組件的公開性,再跟蹤公開組件的函數入口以及函數的調用流程,從而檢測出權限泄露問題。

關鍵詞:Android組件;權限泄露;API特征庫

中圖分類號:TB文獻標識碼:Adoi:10.19311/j.cnki.16723198.2016.24.093

1緒論

在現今的社會中,我們的生活中存在了一個不可或缺的東西—手機,利用手機我們可以QQ、微信聊天、看視頻、打游戲,似乎連著網就可以做很多事情,包括不用拿著錢就可以買任何東西,因為有電子錢包。它讓我們的日常變得更加便利,可是在享受這些方便的時候也承擔著更多的隱私泄露風險。在智能終端系統上,Android操作系統占據著很大的比重,并有日趨加重的勢頭。因此,關于Android系統的應用程序的漏洞數目也是層出不窮。

由于眾多Android安全漏洞的產生,Android平臺的威脅也越來越大。眾所周知,Android應用框架是基于組件的方式來實現代碼重用,因此應用程序在進行程序設計時都是以組件為基本模塊,在組件內存在許多對敏感資源訪問的功能。如果編程人員對組件使用不夠熟練就會造成組件漏洞。因此本文主要針對組件漏洞展開研究,對該漏洞的原理、應用場景做了深入的分析,并對漏洞的檢測技術進行研究。

2Android系統概述

2.1Android體系結構

Android的架構采取堆棧式,層次之間分工明確又協同工作。整個系統的結構分為5個層次,從上向下依次為:應用程序層、應用程序框架層、系統運行時庫以及Linux內核層。

2.2Android系統的安全機制

Android系統設定了權限分離的安全機制,將安全設計體現在各個結構層次上。盡管如此,Android系統仍然存在諸多安全威脅。

沙盒技術、簽名技術、權限的設置等都是Android的自我保護機制。每一個Android應用在底層都會對應一個獨立的Dalvik虛擬機實例,其代碼在虛擬機的解釋下得以執行,這就使得程序之間的代碼和數據分開,不可以互相訪問。一個應用程序在沒有別的應用程序允許的時候只能訪問自己的數據。Android程序是需要簽名的,而且是通過驗證證書來簽名的。若是Android的應用程序需要調用私有權限譬如拍照、打電話、讀取聯系人信息,是利用系統的API申請相應的權限。

Android系統在AndroidManifest.xml中必須設置所需的訪問權限,也必須聲明組件訪問的許可。在一個應用程序的內部,各個組件之間允許互相訪問;在不同的應用程序之間則必須設定訪問權限,只有申請權限才可調用該組件,以防惡意利用。

3Android系統組件間的安全缺陷

Android系統主要有四大組件:Activity,Service,Broadcast Receiver和Content Provider。組件間的通信有三種:Intent、IPC Binding 和ContentResolver。其中大多數是通過Intent通信。當不同的應用程序或者同一個應用程序的不同組件之間需要傳輸數據就需要Intent的幫助。Intent能夠實現組件間的異步并且保存相應的“意圖”。Intent也實現了通用組件的多次利用,減輕了編碼的成本。但是方便的同時,組件的權限泄露就產生了。

權限泄露也即權限提升。它是組件的重用帶來的威脅。如圖1,程序M是惡意程序,希望獲得私密信息而又沒有得到權限許可,程序N得到了訪問該私密信息的權限,M與N存在某個組件n1的重用,那么M就會通過調用N程序中該組件盜取私密信息,從而造成私有信息的泄露,造成安全隱患。

Android漏洞的挖掘技術大體分為靜態分析和動態分析。

4.1靜態分析技術

靜態分析技術是指不運行代碼,分析反編譯生成的源碼,從而找到漏洞的方法。靜態分析的步驟:(1)反編譯生成源碼,對源碼通過詞法、語法分析,將其轉化為映射關系的表現形式。(2)再在(1)中間表現形式上進行分析。中間形式通常是使用抽象語法樹(AST),此方式是能夠比較直接明了的展現出源碼,是一種存儲效果很好的語法表現形式,AST在查詢的速度、操作、遍歷等方面有很高的效率。

靜態分析技術的優點是:查詢代碼的范圍廣、分析速率快,漏報率低。但是也有不足之處:查詢的同時不能實際運行代碼,因此會有大量的誤報。

4.2動態分析技術

動態分析是不用源代碼,但是要通過實際運行代碼觀測運行結果以此來分析漏洞的具體位置。動態分析有兩大技術:(1)數據流分析:利用半有效的數據去誘發軟件中隱藏的漏洞,通過對運行結果分析來發掘漏洞。(2)動態跟蹤技術:在運行代碼中設置多個斷點,對調用函數的正確性及數據流實行追蹤,挖掘潛在的漏洞。

動態分析技術有漏洞率低、精確率高、不用反編譯生成源代碼等優點,通常情況下是不會有誤報??墒窃跀帱c的確定上、技術人員以及檢測框架上有局限性。Fuzzing技術(模糊測試技術)是主要的動態分析技術。

4.3動靜結合的安全漏洞分析技術

目前,軟件漏洞挖掘技術大多不是單純的靜態或動態技術,而是結合多種挖掘方法的優點,從而得到高效、快速、準確的混合型漏洞發掘技術。

Android的靜態和動態相結合的挖掘技術有許多的優點。在靜態分析技術上采取類型推斷與約束分析相結合的方式獲得漏洞點,這種方式綜合分析了漏洞點處各信息間的約束關系。再運用漏洞約束算法得到漏洞點處的測試用例,減少了測試用例的個數,并提升了精確度。結合Android漏洞庫對測試用例實行變異處理,最后運用Fuzzing技術,從而得到漏洞。

這類漏洞挖掘技術一般是動態分析對靜態分析結果進行更深入的解析,靜態分析為動態分析生成需要的測試用例,大大減少了測試用例,也降低了Fuzzing的漏報率。

5解決方案

通常,Android應用程序的組件若是想調用某項與隱私權限有關的組件,是必須在AndroidManifest.xml文件中進行聲明設置,而且在被調用組件的設置里增加permission屬性用來操縱自身被調用時,調用者同樣具備相有該權限。研究前文的漏洞檢測技術,本文就權限泄露提出解決方案,主要包括四個部分:

(1)Android API(應用程序接口)與permission映射集合。首先需要建立特征庫。通過Android API的文檔,創建系統權限與調用方法的映射關系。一個權限對應了多個方法,可以運用對應的方法去調用相應的系統權限資源。這個特征庫一旦建立后,只需要在表項有遺漏或者錯誤的時候對其做微調,不需要太多的維護。

(2)暴露組件的檢測。組件權限漏洞產生的首要條件是:存在公開的組件。所以檢測首先必須排查公開的組件,如果有就繼續檢查,若沒有就不需要繼續。

組件是否公開進行重用,是由AndroidManifest.xml文件中每個組件的exported屬性和標簽協同決定的,因此在檢測有無暴露組件時,首先必須對AndroidManifest.xml文件進行分析,然后按照各個組件中對應的值進行判定。

(3)在檢測有無權限泄露時,必須著重考慮公開暴露的組件。在(2)的基礎上,需要對暴露的組件的權限泄漏進行檢測。首先按照函數調用圖(FCG)分析組件入口點和存在危險API的路徑,采集這個組件相關的權限表;然后通過組件調用圖(CCG),解析該組件調用其他組件的路徑,收集該組件與其他組件相聯系的權限表。

(4)當檢測到暴露組件并且發現可疑的路徑后,比對(1)所建立的特征庫,以此來檢測該組件有無權限泄露的問題。

6結論

Android系統的開源特性深受大家喜愛,但也因為該特性使得越來越多的危險愈發嚴重,因此引發的組件間的漏洞數目和種類也層出不窮。通過漏洞檢測技術可以檢查出程序安全漏洞,防止造成用戶的信息泄露。

參考文獻

[1]Mariantonietta La Polla,Febio Martinelli,Daniele Sgandurra.A Survey on Security for Mobile Devices[J].IEEE Communications Surveys & Tutorials,2013,15(1):446471.

[2]Nwokedi Idika,Aditya P,Mathur.A Survey of Malware Detection Techniques[DB/OL].http://www.serc.net,2012,(11).

[3]William Enck,Machigar Ongtang,Patrick McDaniel.Understanding Android Security[J].IEEE Security and Privacy,2009,7(1):5057.

[4]張文,嚴寒冰,文偉平.一種Android惡意程序檢測工具的實現[J].信息網絡安全,2013,(1):2732.

[5]楊珉,王曉陽,張濤等.國內Android應用商城中程序隱私泄露分析[J].清華大學學報(自然科學版),2012,52(10):14201426.

[6]于鵬洋,黃俊飛,宮云戰.Android應用隱私泄露靜態代碼分析[J].軟件,2012,33(10):15.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合