2、Android安全機制分析(2011《第26次全國計算機安全學術交流會論文集》)數據庫
1.綜述編程
2007年11月5日,Google牽頭的開放手機聯盟(Open Handset Alliance)發佈第一款徹底開源的移動設備綜合平臺——Android。數組
2008年9月22日,T-Mobile USA發佈第一款基於Android平臺的智能手機——T-Mobile G1。瀏覽器
2010年11月,業界首次公開了一種針對Android自帶瀏覽器的攻擊代碼。安全
2.Android系統架構cookie
(1)Android爲移動設備而生,基於Linux內核,由操做系統、中間件、應用程序運行時和核心應用程序組成。網絡
(2)Android系統架構圖以下:架構
圖中看出Android分爲4層,從高到低分別爲應用程序層、應用程序框架層、Android本地庫及運行環境層和Linux內核層。框架
3.Android安全機制編程語言
在Android安全機制中,既有傳統的Linux安全機制,也有Delvik虛擬機的相關安全機制。同時,Google還設計了Android特有的安全機制。以下圖:
(1)POSIX User
每一個應用程序(.apk)安裝時,Android會賦予該應用程序惟一的ID。所以,每一個應用程序都運行於不一樣的進程。這樣,系統爲每一個程序創建一個沙箱,無論應用程序是被激發或調用,它始終運行在屬於本身的進程中,擁有固定的權限。
(2)文件訪問控制
Android中的文件訪問控制來源於Linux權限控制機制。每一個文件訪問權限都與其擁有者、所屬組號和讀寫執行三個向量組共同控制。文件在建立時將被賦予不一樣應用程序ID,從而不能被其餘應用程序訪問,除非它們擁有相同ID或文件被設置爲全局可讀寫。
另外一個加強安全的設計——將系統鏡像掛載爲只讀。全部重要的可執行程序和配置文件位於固件(Firmware),只有在系統初始化中加載。全部的用戶和程序數據都存儲在數據分區。數據分區有別於系統分區,是在系統運行中有效的存儲和加載用戶數據。並且,黨Android系統處於「安全模式」時,數據分區的數據不會加載,從而能夠對系統進行有效的恢復管理。
(3)內存管理單元
一個現代操做系統的必要條件,是內存管理單元——對進程分配不一樣的虛擬內存空間的硬件設備。進程只能訪問自身分配的內存空間,而不能訪問其餘進程所佔用的內存空間。所以,進程的權限提高的可能性受到限制,由於其不能運行在系統特權級內存空間。
(4)強制類型安全
類型安全是編程語言的一個特性,它強制變量在賦值時必須符合其聲明的類型,從而阻止變量被錯誤或不恰當地使用。
緩衝區溢出攻擊一般由類型轉化錯誤或缺乏邊界檢查而形成。
Android使用強制類型Java語言,Java語言依靠三種機制達到類型安全:編譯期間的類型檢查、自動的存儲管理和數組的邊界檢查。
(5)移動設備安全
Android安全機制中引用AAA原則——認證(Authentication)、受權(Authorization)和審計(Accounting)。
Android借鑑智能手機典型安全特性,認證和受權過程由SIM卡及其協議完成,SIM卡中一般保存使用者的密鑰。
(6)應用程序權限控制
Android應用程序安全的核心機制是權限控制。應用程序必須在系統給予的權限中運行,不得訪問未被賦予權限的其餘任何內容。
程序安裝時由包管理器賦予權限,運行時由應用程序框架層執行權限控制。Android大約有一百多種行爲或服務的權限控制(打電話、發短信、訪問互聯網等)。
(7)組件封裝
經過組件封裝,應用程序的內容能被其餘程序訪問。
(8)簽名機制
Android中每一個程序都被打包成apk格式以便安裝。Android要求全部應用程序都通過數字簽名認證。簽名文件一般是Android確認不一樣應用程序是否來自同源開發者的依據。
4.Android安全隱患分析
對Android移動設備的攻擊進行分類:基於硬件的攻擊、基於Linux內核的攻擊、基於系統核心程序的攻擊和基於應用程序的攻擊。
(1)基於硬件的攻擊
因爲硬件的通用性和擁有系統最高權限,且在使用過程當中難以被升級和維護,是的基於硬件的攻擊危害更大。
移動設備中,SD卡和SIM卡均能脫離移動設備而單獨使用。在安全機制設計中,辨識這些卡的正常使用和丟失狀態下的惡意使用,從而不致使隱私泄露。
(2)基於Linux內核的攻擊
Linux每一年都有近百個漏洞被CVE收錄。網絡攻擊中利用內核漏洞,將得到系統最高權限。因爲Linux內核是高可配置性,而移動設備資源有限,每每會禁用一些內核選項用以下降內存資源消耗,這其中就包括了安全配置選項。如G1手機中禁用審計模塊支持、禁用SYN cookie支持(可下降SYN洪泛攻擊)等。在不一樣的移動設備上使用的內核配置能夠定製,如爲了加強安全性可使用SELinux模塊。
(3)基於系統核心程序的攻擊
系統核心程序包括系統本地庫、Dalvik Java虛擬機和基礎的Java類庫。系統庫主要包括各類底層函數和複雜計算函數等,被系統進程或Dalvik經過JNI(Java Native Interface)調用。這些函數用C/C++編寫,而缺乏強制類型安全機制。同時,Dalvik進程在經過JNI調用系統函數發生錯誤時會致使Dalvik進程的崩潰,從而可致使內存空間唄侵佔或惡意代碼被執行。Dalvik是全部應用程序的運行環境,其安全性將影響全部應用程序。
現金被發現的Android系統庫的漏洞主要集中於定製的SQLight、WebKit和新加入的庫。因爲能獲取較高權限,且核心程序爲開源代碼,這將使得該類攻擊得到更多攻擊者的青睞。
(4)基於應用程序的攻擊
應用程序包括Android系統自帶和用戶自行安裝的應用程序。用戶自行安裝的應用程序來源多樣,沒法驗證可靠性,使得針對應用程序的攻擊時最容易的攻擊手段。惡意程序經過僞造簽名,得到更高的權限。如今互聯網中流行的針對瀏覽器的攻擊,如跨站腳本、URL編碼、社會工程等,還有針對SQLight數據庫的SQL注入攻擊,必將在移動互聯網中被利用。該類方法的多樣性和簡易性,使應用程序成爲黑客光顧的重災區。同時,因爲黑色產業鏈的存在,也使得基於應用程序的攻擊更具備商業價值,如惡意扣費、流量訪問等。
5.總結
曾經流行的Windows Mobile、Symbian等都在應用中爆發大量的安全漏洞和被發現衆多惡意軟件。攻防演繹是個呈雙螺旋增加的過程,Android在快速發展中,也將不可避免出現大量針對其的攻擊行爲和惡意軟件。