摘 要: 智能手機用戶的隱私泄露問題日趨嚴重。為此研究了Android的系統框架及安全機制,包括沙盒、應用簽名、權限機制。著重研究了Android系統中間件層的安全增強方法,列舉了系統易受攻擊的種類,總結了現有的隱私保護技術,包括應用程序安裝時權限機制的擴展,運行時的動態權限監測以及隱私數據的保護。
關鍵詞: Android系統; 隱私泄露; 安全機制; 隱私保護
中圖分類號:TP309.1 文獻標志碼:A 文章編號:1006-8228(2013)12-07-05
Survey of privacy protection techniques based on Android
Bao Tongtong, Zhang Kun, Chen Xuan, Gao Fei
(College of Computer Science and Engineering in Nanjing University of Science and Technology, Nanjing, Jiangsu 210094, China)
Abstract: In recent years, the problem of privacy leak of the smart phone users is getting worse and worse. For this, the system framework of Android and its security mechanisms are introduced, including the sandboxing, application signing, and permission mechanism. Security enhancement in the Android system’s middleware layer is researched. The types of system that is vulnerable are listed and the existing privacy protection techniques are summed up, including the extension of permissions mechanism during the installation process of an application, run-time monitoring of the dynamic permissions and the protection of privacy data.
Key words: Android system; privacy leak; security mechanisms; privacy protection
0 引言
智能手機得到廣泛使用以來,Android系統就備受用戶和開發者的喜愛,一是因為其有種類繁多的應用程序支持,二是因為其開放式系統的開發門檻低。然而也正是低開發門檻使得Android系統的應用程序良莠不齊,其中不乏一些惡意應用程序。
網秦發布的《2013上半年全球手機安全報告》[1]顯示:2013年上半年查殺到的手機惡意軟件共51084款,同比2012年上半年增長189%。其中,Android平臺仍是惡意軟件感染的重點平臺,感染比例為95%。隱私竊取類病毒也呈上升趨勢,占總比的19%。針對層出不窮的病毒,Android本身提供了沙盒、權限、應用簽名等安全機制,但這類粗粒度的安全機制仍存在諸多漏洞,尤其是容易遭到應用層權限提升攻擊[2]。
為了提高Android系統的可用性,近幾年針對其安全機制的研究逐步深入,并已取得一些成果。本文在研究Android系統框架,組件模型及其原生安全機制基礎上,著重研究Android中間件層的隱私保護技術,按照應用程序安裝時權限機制的擴展,運行時動態權限監測,以及隱私數據保護的順序對其進行歸納與總結。
1 Android系統架構及安全機制
1.1 系統框架
Android是基于Linux內核的操作系統,大致可分為四個主要層面,自底向上分別為硬件層,Linux內核層,中間件層和應用程序層。這四層結構還可細分為五部分,如圖1所示。
圖1 Android系統框架圖
Linux內核——這部分是Android系統的基礎核心,包括了各種硬件組件的所有設備驅動程序。
庫——提供Android操作系統主要功能的全部代碼。例如,SQLite庫提供了支持應用進行數據存儲的數據庫。
Android運行環境——與庫同處一個層面,包括了Dalvik虛擬機和一組核心庫。其中,核心庫可使開發人員用Java語言來編寫Android程序,Dalvik虛擬機則使得每個應用程序都在自己的進程中運行。
應用框架層——是向開發人員公開Android操作系統各種功能的層面,使他們可以在應用程序中調用這些功能。
應用程序層——這一層有Android設備自帶的許多應用,例如電話、聯系人、瀏覽器等,以及可以從Android應用程序商店下載安裝的任何應用。通常Android應用由Activity,Service, Broadcast Receiver及Content Provider組成。其中,Activity負責用戶接口,Service實現后臺進程功能,Broadcast Receiver負責接收來自系統的廣播通知,Content Provider主要負責管理應用間的數據分享。
1.2 Android應用間的通信機制
Android應用間通信通常是通過中間件層提供的標準機制完成的,即基于Binder的輕量型進程間通信(Inter-Process Communication,IPC)。IPC根據應用組件的顆粒度粗細以不同形式發生,由此產生的應用間通信通常被稱為組件間通信(Inter-Component Communication,ICC),用來在內核層與IPC區別開來。創建一個ICC通道,應用組件需發送一個特殊的消息——Intent消息。Intent消息包含了兩個重要內容,一是消息目的地,二是消息所攜帶的數據內容。除了ICC,應用還能繞過中間件層通過其他管道進行通信,但由基層的Linux內核控制。比如,可以通過Linux的標準IPC機制來建立通信(如Unix sockets)或通過Internet sockets通信。
1.3 Android安全機制
1.3.1 沙盒
Android基層的Linux內核執行進程隔離以及對用戶資源的自主型訪問控制,應用層的沙盒模式則是一種將設備上的應用彼此隔離,以及和系統資源隔離的安全機制。應用間的彼此隔離是通過給每個應用分配一個惟一的用戶ID(UID)來實現的。同時,系統資源歸system用戶或root用戶所有,應用程序只能獲取自己的文件或明確定義為全局可讀的文件。
1.3.2 應用簽名
Android實行的應用簽名機制只是開發人員給應用代碼加上自認證密鑰,因此并不能抵御惡意軟件,但卻可以在同一個開發者開發的多個應用程序間建立信任關系。簽名密鑰相同的應用可以共享UID,會被放入同一沙盒內。
1.3.3 權限機制
Android系統中,細粒度的安全特征是通過權限機制來實現的。權限機制由中間件層來提供。安全敏感的接口通過標準權限控制來保護,例如PHONE_CALLS,INTERNET等權限。這意味著應用必須先具有這些權限才能發起通話、訪問網絡等。應用默認是不具備任何權限的。當它想要訪問數據或使用資源時,必須在自身的AndroidManifest.xml文件中聲明所具有的權限。這些權限將會在用戶安裝該程序時呈現給用戶,如果被用戶拒絕則不能完成安裝。
Android系統中的權限分為四個保護級別:“normal”、“dangerous”、“signature”和“signatureOrSystem”。其中,“normal”是默認級別,即最低級別,一般自動授予應用程序該不會造成太大危害的權限。“dangerous”級別比“normal”級別要高一等級,可能會賦予應用程序訪問敏感數據或控制設備等功能,一般所指的需要聲明權限就是該級別權限。“dangerous”級別的權限必須聲明且在安裝時通過用戶認證才能夠被應用程序使用。“signature”和“signatureOrSystem”級別的權限一般只被原始設備制造商所使用。
2 研究現狀
如1.3節中介紹,Android自身雖然已提供了幾項安全機制,但在受到不同類型的攻擊時,依然顯露出許多問題和漏洞。比較常見的攻擊是權限提升攻擊[2],進一步還可細分為混淆代理攻擊[2]和共謀攻擊[2]等。針對這類問題,已有的研究主要集中在以下三個方面。
2.1 安裝時權限機制擴展
安裝時權限機制的擴展主要針對的是安裝應用時的授權機制,目的是使用戶在只授予應用部分權限的情況下也能安裝程序并使用其部分功能,而非一旦拒絕就無法正常安裝程序,或可以根據用戶自身情況(如時間、地理位置等)動態地授予或撤銷部分權限,從而增強用戶對權限授予的可控性。
William Enck等人提出的Kirin[3]服務主要針對應用程序的配置文件AndroidManifest.xml進行分析。他們實施了以下五個步驟:第一步,識別資源;第二步,識別資源的功能性需求;第三步,確定資源的安全目標與威脅;第四步,擴展資源安全需求;第五步,確定將要實施的安全機制本身的局限性所在。
其中步驟4和步驟5需多次迭代,并將某些安全規則逐漸的細化,由此逐漸總結出了Kirin安全規則,詳見表1。
從表1中我們可以看出,在Kirin的安全服務規則中有出現對單個權限的限制,也出現對兩個或三個權限的限制以及權限和接口組合的限制。總結出安全規則后,就可以根據上述規則對應用程序進行評估和分析。圖2是加入Kirin后的應用程序的安裝過程。
圖2 加入Kirin后的應用安裝過程
安全應用程序交互設施(Secure Application INTeraction, Saint)[4]是由Machigar Ongtang等人提出的一種改進的基礎設施,用來管理安裝時間內的權限分配以及運行時的用法。它分析了三種基礎應用策略:權限分配策略、接口曝光策略和接口運用策略,這三種策略在Android安全框架中不可用。Saint針對這些應用需求策略,進行了如下改進:允許聲明權限P的應用根據應用簽名、配置等條件,依據開發者定義的安全策略,對應用的接口實施保護,從而抵抗“混淆代理人攻擊”。
圖3為Saint的框架圖。其中,Saint的安裝時間策略規定了應用權限的授予。具體為:一個聲明P權限的應用定義了在何種情形下權限P會被授予給其他的應用;運行時的策略執行則規定了軟件組件和中間件框架交互的方式;管理策略指示了策略本身可以如何改變;操作策略負責在應用程序出錯時進行檢查。其結果,Saint策略通過基于運行狀態的限制訪問超越了Android系統上現有的靜態權限檢查。
圖3 Saint框架圖
Mohammad Nauman等在2010年提出了Apex[5],即一個Android的策略實施框架,通過對包管理器的修改,使用戶可有選擇性地給應用授予權限并限制資源的運用。實施過程中,用戶可以先授予部分權限并拒絕其他訪問權限,這使得用戶可以使用應用的部分功能同時限制了對某些重要或代價高的資源的訪問。其次,用戶可根據特定的時間、地點等授予或撤銷應用申請的權限。Apex還在安裝界面加入了“有條件允許”按鈕以實現上文所述的部分授予應用權限的功能。
2.2 運行時權限動態權限
如1.2節所述,Android應用間使用ICC機制通過封裝成Intent消息來調用和交互數據。Intent消息會被傳送給Context.startActivity()、Context.startService()等方法。這些方法都是通過ApplicationContext類實現的,它將控制信息傳遞給Activity-ManagerService類,然后UID和訪問組件要求的權限作為checkComponentPermission()的參數,這個過程就是基于權限的強制訪問控制機制。而Android系統尤其容易受權限提升攻擊并且對上下文不敏感,這些問題都容易造成系統漏洞從而導致用戶隱私信息的泄露。
2.2.1 防止權限提升攻擊方面的研究
在防止權限提升攻擊方面,Sven Bugiel等提出了Android擴展監測安全框架(eXtended Monitoring on Android, XManDroid)[2],XManDroid拓展了Android的監測機制,通過系統策略監測來檢查和預防應用級的權限提升攻擊。該框架擴展了Android的應用框架,由三個模塊組成:①運行環境監控器;②應用安裝程序;③系統決策安裝程序。圖4為XManDroid框架圖,其中灰色部分是XmanDroid修改或創建的新部分。
圖4 XManDroid框架圖
運行環境監測器提供了XManDroid的核心功能。應用安裝程序加強了標準Android應用程序安裝過程的安全性,主要負責應用程序的安裝和卸載。系統決策安裝程序提供了將系統策略安裝在Android中間件的機制,包括PolicyInstaller, SystemPolicy,Decisions和SystemView四個組件。由于系統決策決定了框架能否成功檢測惡意軟件,為了讓XManDroid框架的策略粒度更細,不同于以往基于權限的方法,它能夠檢查ICC傳送的數據并做出基于Intents消息內容的決策。
由Adrienne Porter Felt等提出的IPC Inspection機制[6],是一種新的操作系統機制,用來防止受到“權限再授權”(permission re-deligation)的威脅。IPC Inspection將被調用者的有效權限減少為調用與被調用者權限的交集。觸發減少權限行為的事件有:啟動服務,綁定服務,收到廣播的Intent等。IPC檢查分為三個步驟:首先,必須持有一份每個應用程序當前權限的列表;其次,在系統應用間的通信機制里執行權限降低的策略,啟動一個應用并發送一個明確的IPC消息;最后,允許接收方的應用程序接收或拒絕消息。應用程序可通過接收請求方的列表來限制它們從何處接收消息。
智能手機應用通常都擁有訪問網絡及本地敏感資源的權限。這使得遠程終端很難在用戶設備的網絡起源處建立信任。針對該問題,由Michael Dietz等人研究提出的Quire[7]則在Android系統中建立了兩個新的安全機制。其一,Quire追蹤設備中IPC的調用鏈。該做法給予應用程序兩種選擇,一是執行比調用者少的權限,二是代表自身執行全部權限。其二,輕量級簽名方案使得任何應用可以創建一個簽名語句,使得在同一手機上的任何應用都通過驗證。
2.2.2 感知上下文方面的研究
由Mauro Conti等人提出的Android系統基于上下文的策略執行系統(Context-Related Policy Enforcement for Android,CRePE)[8]是一個實施細粒度策略的系統,策略可以在應用運行時依賴于手機的上下文。上下文可以根據某些變量的狀態(例如位置、時間、溫度等),其他設備的存在或用戶與設備的特殊交互與結合等來定義。另外,CRePE允許用戶或受信第三方來定義上下文相關策略。
CRePE的基本思想是將策略執行插入到Android權限檢查之前。被截取的權限請求要經過CRePE架構中六個組件的處理:CRePE權限檢查器,策略管理器,策略提供商,用戶交互器,上下文交互器和行動執行器。當一個應用程序向另一個程序發出請求或應用了一個系統服務時,這個請求就會被CRePE的權限檢查器截下。該組件會與策略管理器交互來檢查權限是否被現有策略所允許。策略管理器是惟一有權限訪問策略提供商的組件。若該請求與這些策略不符,調用者的請求將被駁回;若相符,則該請求會被繼續傳遞給Android權限檢查組模塊。用戶可以與CRePE交互來創建、更新或刪除上下文策略。完成交互工作的是前文提到的用戶交互器,這是一個Android自身的應用程序,當一個用戶創建、刪除或修改上下文信息時,用戶交互器需要獲得信息并存儲在策略管理器內,策略管理器則在必要時更新該上下文信息。上下文交互器作用是當上下文狀態變為有效或無效時通知CRePE的組件。最后,CRePE的行動執行器是處理運行時有效策略改變的組件。
2.3 隱私數據動態保護
在平臺安全增強工作上,還有些研究將重點放在數據本身。包括敏感數據偽造及動態數據流追蹤。
2.3.1 敏感數據偽造
在敏感數據偽造方面,由Yajin Zhou等人開發的Android環境下抑制智能手機應用程序盜取信息的系統(Taming Information-Stealing Smartphone Applications on Android, TISSA)[9]在Android上實現了隱私模式,可以賦予用戶以細粒度的方式靈活控制哪些個人隱私信息可以由應用獲得;而且,訪問方法在運行過程中可以動態地調整,以適應用戶在不同場景下的需求,并根據對應用程序的隱私設置來提供匿名、信任或虛假數據。
圖5是TISSA的架構圖,TISSA共由三個組件組成。
圖5 TISSA架構圖
第一個組件是隱私設置內容提供者,這是一個有權限組件,用來處理不受信應用的隱私設置問題。同時,它提供向已安裝應用查詢現有隱私設置的功能。如果我們將TISSA看成是一個參考監測器,那么這部分組件就是一個策略決策點。
第二個組件是隱私設置管理者。這是一個有權限的應用程序,被用戶用來管理或升級已安裝應用的隱私設置。在TISSA中它充當策略管理點的角色。
第三個組件是一個有隱私意識的組件,該組件需要與第一個組件相互合作,一旦當它收到一個應用程序企圖訪問隱私數據的請求時,它會咨詢隱私設置并作出回應。它扮演了TISSA中的策略執行點的角色。
另外,由Alastair R. Beresford等設計的MockDroid[10]系統則可以實現虛假位置信息、空的電話簿、虛假設備ID等功能以掩蓋真實敏感數據信息。
2.3.2 動態數據流跟蹤
由William Enck提出的TaintDroid[11]是一個有效的動態污點追蹤和分析的系統,其主要目的是檢測隱私數據是否通過不可信應用程序的通道離開系統。TaintDroid自動為來自敏感數據源的數據打上污點標記,在敏感數據通過程序變量、文件及進程間消息傳播時為其維護污點標記。當污點數據通過網絡或其他途徑試圖離開系統時,TaintDroid的日志會記錄數據標記,傳輸敏感數據的應用程序以及數據的目的地。
TaintDroid在Android原有的架構基礎上進行修改,實現了四種粒度的著色追蹤,分別為:變量級別、方法級別、消息級別和文件級別。圖6展示了TaintDroid在系統中如何實現多層次追蹤。
圖6 TaintDroid多層次追蹤的系統架構圖
首先,利用虛擬機解釋器向不受信應用程序代碼提供變量級別的追蹤,通過解釋器提供的變量語義可得到程序的上下文,從而避免了著色爆炸現象[11];同時,變量級別的跟蹤可實現只對數據而非代碼進行著色。然后,在應用程序之間采取消息級別的追蹤,只追蹤消息而非數據,可減少進程間通信開銷。緊接著,對于系統提供的本地庫,TaintDroid采取了方法級別的追蹤。最后,通過文件級別的追蹤確保相關信息能夠持續保持它的著色標記。
圖7是TaintDroid框架圖。
圖7 TaintDroid框架圖
如圖7所示,根據充足的上下文資源,可信應用程序的信息先被著色(1)。被著色的接口則調用一個Dalvik虛擬機解釋器接口的本地方法(2),該解釋器在虛擬著色地圖里存儲著具體的著色標記。Dalvik虛擬機根據數據流規則傳播著色標簽(3)。每一個解釋器實例都同時傳播著色標簽。當受信應用程序在IPC通信機制中動用了已著色信息時,改進后的Binder庫則確保該數據包含有一個著色標簽(4),且這個標簽映射著所有被包含數據的聯合著色標記。數據包在Binder內核中透明地傳送且被遠程不受信應用程序接收(5)。值得注意的是只有被解析的代碼是不受信的。改進后的Binder庫從數據包中檢索出著色標簽且將它賦給所有從中讀出的值(6)。遠程的Dalvik虛擬機以相同的方式在不受信應用程序上進行著色傳播(7)。當不受信應用程序調用一個已被標記為泄露點的特定庫函數時(8),庫函數就會檢索對應的著色標記并生成一個針對該事件的報告(9)。
3 結束語
移動設備用戶隱私泄露問題突出,包括用戶極多的Android系統。針對此方面的研究逐漸成熟。本文介紹了現有的Android系統中間件層的安全增強研究成果,從應用程序安裝時權限機制的擴展、運行時的動態權限監測和隱私數據保護三個方面層層展開,詳述了各個安全框架、安全模型,以及進行安全擴展后系統的運作方式與流程。
但是現有的研究成果仍存在諸多不足,如安全策略間的兼容性差,依賴用戶完成的授權機制使策略安全性降低,移動設備資源受限的特點使得安全策略只能使用粗粒度的控制方法來降低系統損耗等。針對這些問題,今后的工作將著重于以下幾個方面:①構建統一的安全增強框架;②為系統引入智能決策引擎,將決策權交給系統;③在對系統可用性影響盡可能小的前提下,進一步細化策略控制粒度。
參考文獻:
[1] 北京網秦天下有限公司.2013上半年全球手機安全報告[Z].北京網
秦天下有限公司,2013.
[2] Bugiel, Sven, et al. \"Xmandroid: A new android evolution to mitigate
privilege escalation attacks.\" Technische Universit?t Darmstadt, Technical Report TR-2011-04 (2011).
[3] Enck, William, Machigar Ongtang, and Patrick McDaniel. \"On
lightweight mobile phone application certification.\" Proceedings of the 16th ACM conference on Computer and communications security. ACM,2009:235-245
[4] Ongtang, Machigar, et al. \"Semantically rich application-centric
security in Android.\" Security and Communication Networks 5.6(2012):658-673
[5] Nauman, Mohammad, Sohail Khan, and Xinwen Zhang. \"Apex:
extending android permission model and enforcement with user-defined runtime constraints.\" Proceedings of the 5th ACM Symposium on Information, Computer and Communications Security. ACM,2010:328-332
[6] Felt, Adrienne Porter, et al. \"Permission Re-Delegation: Attacks
and Defenses.\" USENIX Security Symposium,2011.
[7] Dietz, Michael, et al. \"QUIRE: Lightweight Provenance for Smart
Phone Operating Systems.\" USENIX Security Symposium,2011.
[8] Conti, Mauro, Vu Thien Nga Nguyen, and Bruno Crispo. \"CRePE:
Context-related policy enforcement for Android.\" Information Security. Springer Berlin Heidelberg,2011:331-345
[9] Zhou, Yajin, et al. \"Taming information-stealing smartphone
applications (on android).\" Trust and Trustworthy Computing. Springer Berlin Heidelberg,2011:93-107
[10] Beresford, Alastair R., et al. \"MockDroid: trading privacy for
application functionality on smartphones.\" Proceedings of the 12th workshop on mobile computing systems and applications. ACM,2011:49-54
[11] Enck, William, et al. \"TaintDroid: An Information-Flow Tracking
System for Realtime Privacy Monitoring on Smartphones.\" OSDI,2010.10.