趙 兆
(江蘇省電子產(chǎn)品質(zhì)量監(jiān)督檢驗研究院(江蘇省信息安全測評中心),江蘇 無錫 214073)
移動通信越來越受到重視,可以認(rèn)為是繼互聯(lián)網(wǎng)之后最重要的技術(shù)發(fā)展之一。不幸的是,和互聯(lián)網(wǎng)一樣,安全性似乎是事后才想起來的事。近幾年CVE,OSVDB,SecFocus公布的Andriod主要漏洞如圖1所示[1]。
圖1 andriod主要漏洞
針對漏洞,Andriod應(yīng)用主要存在如下威脅:
(1)惡意代碼數(shù)量呈倍數(shù)增長,并且出現(xiàn)了對抗分析、查殺、檢測的技術(shù)。
(2)數(shù)字內(nèi)容和應(yīng)用軟件的版權(quán)不斷遭到侵害,軟件破解、應(yīng)用內(nèi)付費(fèi)破解、廣告庫修改和植入、軟件篡改、惡意代碼植入等現(xiàn)象普遍存在。
(3)官方系統(tǒng)、第三方定制系統(tǒng)和預(yù)裝軟件的漏洞不斷被挖掘,對系統(tǒng)穩(wěn)定與安全產(chǎn)生很大的威脅。
(4)應(yīng)用軟件本身的安全漏洞頻繁出現(xiàn)在國內(nèi)外互聯(lián)網(wǎng)企業(yè)的產(chǎn)品中。
(5)移動設(shè)備正融入辦公環(huán)境,但針對移動平臺的攻擊趨勢日益明顯。
(6)移動支付從概念逐步轉(zhuǎn)為實踐,而對算法和協(xié)議的攻擊和通信技術(shù)的攻擊時常發(fā)生。
應(yīng)用程序是移動客戶端上的最主要的攻擊面[2]。畢竟,應(yīng)用程序和移動操作系統(tǒng)是終端用戶和其他軟件的基本接觸點(diǎn),所以這也是所有問題發(fā)生的地方。應(yīng)用程序可能造受如下攻擊。
一個Android應(yīng)用所能訪問的資源是受到Android安全模型的限制的,它只能訪問它自己擁有的文件,并且它只能訪問在安裝應(yīng)用時它的mainfest文件中所申請的設(shè)備資源和功能。安全模型防止惡意應(yīng)用執(zhí)行非法操作和訪問敏感數(shù)據(jù)。
但是如果一個應(yīng)用能在root用戶權(quán)限下運(yùn)行的話,這套安全模型就失效了。運(yùn)行在root用戶權(quán)限下的應(yīng)用能直接訪問設(shè)備資源,繞過了通常要求的權(quán)限檢查限制,這就給了該應(yīng)用完全控制設(shè)備和設(shè)備上安裝的所有其他應(yīng)用的潛在能力。惡意應(yīng)用使用此技術(shù)獲得設(shè)備的控制權(quán)。如:GingreBreak(CVE-2011-1823),Ice Cream Sandwich觸發(fā)chmod/chown漏洞
攻擊者可能通過人工靜態(tài)分析查找移動應(yīng)用漏洞。一般攻擊者不可能訪問你的源代碼,除非他碰巧破了你的源代碼池,他們一般會通過逆向工程,反編譯或反匯編將你的源代碼轉(zhuǎn)成smali匯編代碼或者從字節(jié)碼轉(zhuǎn)化成Java代碼。
在挖掘漏洞時,例如SQL注入或繞過Android應(yīng)用與網(wǎng)絡(luò)服務(wù)的后臺交互認(rèn)證,人們首先需要觀察和操縱網(wǎng)絡(luò)流??梢酝ㄟ^使用網(wǎng)絡(luò)嗅探器(如tcpdump或wireshark)進(jìn)行截獲分析,操縱Android應(yīng)用和它的終端之間的Http請求和響應(yīng)。例如:利用burpsuite來截取Android應(yīng)用和一個基于XML的Web服務(wù)器之間的網(wǎng)絡(luò)流量。這項技術(shù)可以讓你繞過那些可能阻止你繞過客戶端驗證,這類驗證本來可以對通用Web服務(wù)漏洞的利用代碼和客戶端信任問題進(jìn)行有效防護(hù)。
Intents是Android應(yīng)用使用的主要的進(jìn)程間通信(IPC)方法,應(yīng)用可以發(fā)送Intents以啟動力傳遞數(shù)據(jù)給內(nèi)部部件,或發(fā)送Intents給其他的應(yīng)用。
惡意應(yīng)用可以使用Intents來激活其他應(yīng)用(在一些情況下是獲取惡意應(yīng)用沒有權(quán)限訪問的功能),或者注入數(shù)據(jù)給其他應(yīng)用。根據(jù)應(yīng)用在接收Intents數(shù)據(jù)后的操作,惡意應(yīng)用可能造成應(yīng)用崩潰或執(zhí)行無法預(yù)期的動作。如:命令注入。
NFC是Near Field Communication縮寫,即近距離無線通信技術(shù)。NFC手機(jī)是指帶有NFC模塊的手機(jī),可以應(yīng)用在生活的很多方面,比如快速獲取公交車站站點(diǎn)信息、公園地圖等信息、門禁控制、本地支付等。NFC手機(jī)提供了一種簡單觸控式的解決方案,可以讓用戶簡單直觀地交換信息、訪問內(nèi)容和接受服務(wù)。
如果一個NFC標(biāo)簽包含一個指向惡意站點(diǎn)的URL,那么掃描了此標(biāo)簽的用戶會發(fā)現(xiàn)他的設(shè)備將受到攻擊。攻擊者可以通過以下兩種方法使用惡意NFC標(biāo)簽:攻擊者可能制作外表具有說服力的海報并將惡意NFC標(biāo)簽附在上面;如果標(biāo)簽沒有相應(yīng)的寫保護(hù),攻擊者可以重寫標(biāo)簽。
Android應(yīng)用可能無意中泄露敏感數(shù)據(jù)給攻擊者,包括用戶機(jī)密、個人信息或者詳細(xì)的配置信息,之后,攻擊者可以利用這些信息進(jìn)行額外的攻擊[3]。
通過內(nèi)部文件泄露:系統(tǒng)通過分配每個應(yīng)用程序獨(dú)立的UID和GID,來限制一個應(yīng)用訪問其他應(yīng)用的文件。但是一個應(yīng)用可以通過MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE標(biāo)志來創(chuàng)建全局可讀或全局可寫的文件。
通過外部存儲泄露:任何文件若存儲在可移動存儲器之類的外部存儲上,如SD卡,那么該文件相對同一移動設(shè)備上所有應(yīng)用來說是全局可讀和可寫的。
針對上節(jié)提出的6類常見攻擊,提出下安全防范措施:
(1)使用靜態(tài)代碼分析可以在不運(yùn)行程序的前期下對程序存在的潛在問題進(jìn)行分析,利用CheckStyle,F(xiàn)indbugs,PMD,Android Lint分析工具進(jìn)行分析。靜態(tài)代碼分析可以避免一些低級的問題,與此同時可以規(guī)范代碼書寫、提高代碼質(zhì)量。
(2)如果應(yīng)用的Service組件不必要導(dǎo)出,或者組件配置了intent filter標(biāo)簽,建議顯示設(shè)置組件的“android:exported”屬性為false。
(3)檢查App所在的目錄,其權(quán)限必須為不允許其他組成員讀寫。
(4)重要信息進(jìn)行加密存儲,由于加密算法加密后的數(shù)據(jù)為二進(jìn)制數(shù)據(jù),因此在保存時,為了防止出錯,可以將數(shù)據(jù)轉(zhuǎn)換成ASCII字符的形式。一般推薦使用Base 64;密鑰由用戶輸入或程序隨機(jī)產(chǎn)生,不能寫在代碼中。
(5)Apk簽名校驗,在應(yīng)用內(nèi)的關(guān)鍵功能入口增加校驗簽名的檢測,如果發(fā)現(xiàn)應(yīng)用簽名非正版,則強(qiáng)制關(guān)閉應(yīng)用或者限制用戶使用。
(6)加殼保護(hù),將核心業(yè)務(wù)邏輯代碼放入加密的.jar或者.apk文件中,在需要調(diào)用時使用Native C/C++代碼進(jìn)行解密,同時完成對解密后文件的完整性校驗。
隨著Android應(yīng)用在日常生活中越來越廣泛,從日常娛樂、辦公到日常消費(fèi)。Android應(yīng)用安全也更多地受到攻擊者關(guān)注。建議應(yīng)用開發(fā)者建立安全風(fēng)險模型,在系統(tǒng)正式上線運(yùn)行前進(jìn)行代碼審查和滲透測試。手機(jī)用戶在上載Android應(yīng)用,應(yīng)選擇正規(guī)的可靠的下載途徑。