Android移動APP 安全形勢分析
1. 概述
1.1 背景
Android是基於Linux而開發的具有開放性、自由性的一種作業系統,現主要應用於移動裝置,如手機、平板電腦和車載系統等。從2007年Google推出第一代Android作業系統至今已有10年的時間,移動行業的市場份額與規模也在急速增長,現在幾乎每人都在用或曾用過接觸過Android智慧手機。
Android智慧手機普及率的提高,隨之開發上線的移動APP(應用程式)也越來越多,越來越廣泛,現在人們日常用到的,幾乎都能找到適合的APP來完成我們目前的需要。
但隨著Android智慧手機及移動APP越來越普及,帶來的安全隱患也越來越突出,越來越被人們所關注。
在《中華人民共和國網路安全法》於2017年6月1日開始正式施行的當下,移動APP開發與安全的企業組織及個人都有義務保護移動APP的安全,確保使用者的個人資料及隱私不被不法分子竊取盜用。
因此無論從安全問題造成使用者和企業的直接損失,還是挽回企業信譽,按照相關APP開發規範,遵守《網路安全法》的角度來看,移動APP的安全問題都應成為重視物件。
2. Android移動APP安全問題現狀
2.1 移動APP發展現狀
移動技術的發展主要由消費使用者決定。消費使用者對於安全級別的要求較低,決定了移動技術在大規模應用於企業市場前期時就已經存在了大量的安全風險問題。
在面對已經存在的移動APP的安全威脅時,我們往往無法將日常桌面級平臺的經驗搬過來使用,主要是由於惡意攻擊在最近幾年越來越多,但相較其它安全威脅型別佔比不大。主要根源在於移動APP的本質,移動APP通過網路與移動裝置之間進行傳播,遭遇攻擊的可能性多種多樣。
另外,大量的Android移動APP釋出到網際網路或應用商城中,其間缺乏相應的安全檢測環節,導致使用者直接下載存在安全問題的移動APP並將其安裝至自己的Android智慧手機中。
2.2 使用者眼中移動APP的安全現狀
普通消費使用者及企業使用者看來,移動APP的安全似乎跟自己的關係不大,或者說即使存在安全隱患也不會給自己帶來比較大的影響和損失。他們往往不清楚由於移動APP的安全問題可能導致自己的個人資訊洩露及財產的損失等其他安全威脅。
即使使用者明確或懷疑某個APP存在安全問題,也不會當機立斷的將其解除安裝棄用,而是會視相應的情況而定。
但隨著移動APP安全問題越來越突出,使用者也漸漸關注並重視起來。在不久的將來,移動APP更出色的安全性可能會漸漸成為吸引使用者的關鍵因素。
2.3 Android移動APP安全問題的現狀與危害
根據某相關機構的資料統計結果來看,65%的移動APP至少存在一個高危漏洞,88%的移動APP至少存在一箇中危漏洞,平均每一個移動APP存在7.32個漏洞。而在其中,安全漏洞佔據了幾乎三分之二。
目前移動APP主要存在安全問題包括:Activity公開元件暴露、Broadcast Receiver元件呼叫漏洞、Service元件任意呼叫漏洞、Pending Intent包含隱式Intent資訊洩露漏洞、Android APP allowBackup安全漏洞、應用反編譯、外部儲存裝置敏感資訊洩漏等。
以下為近期對Android移動APP安全檢測發現的若干問題的簡要概述。
2.3.1 Activity公開元件暴露
在對移動APP的安裝包進行解析時,檢視其Manifest配置檔案。在其中檢視Activity的android:exported屬性引數,該屬性用來標示當前Activity是否可以被另一個APP的元件啟動。如果Activity裡面至少有一個filter的話,意味著這個Activity可以被其它應用從外部喚起,此時其預設值為true。
不只有exported這個屬性可以指定Activity是否暴露給其它應用,也可以使用permission來限制外部實體喚醒當前Activity。故檢視android:permission是否指定啟用該Activity所需要的許可權名稱。
通過測試工具對Activity元件進行測試。
通過測試工具發現其APP存在四個可被匯出的Activity。
通過工具自帶的Activity呼叫模組嘗試啟動上述Activity,在手機端可見APP程式被啟動。
利用Activity介面劫持工具對APP的登入等截面進行攻擊劫持。
攻擊者可將正常的Activity介面替換成仿冒的惡意Activity介面,也可通過第三方APP任意呼叫可被匯出的Activity元件,導致敏感資訊洩露,並可能受到繞過認證、惡意程式碼注入等攻擊的風險。
2.3.2 外部儲存裝置敏感資訊洩漏
在對APP的安全檢測中,檢視APP在Android裝置中的安裝目錄,發現其中xml、log檔案及資料庫檔案中通過明文儲存了使用者姓名,手機號,身份證號等敏感資訊。
攻擊者可通過洩露的使用者敏感資訊進行盜取賬號,個人資訊買賣等非法行為。
2.3.3 應用反編譯
通過工具將移動APP的安裝包apk檔案進行反編譯,檢視原始碼,若已加殼的APP只能看到很少的smali檔案。若APP未進行過加殼,則會顯示很多smali檔案,並可將smali轉換,程式原始碼就會展現出來。
已經過加殼處理的APP安裝包通過反編譯後,只能看到少量與加殼相關的smali檔案,無APP相關smali。
檢視其原始碼也只有若干加殼類顯示出來,無法真正獲取到APP的原始碼。
未經過加殼處理的APP安裝包可通過反編譯工具檢視其詳細的smali檔案。
檢視其原始碼如下:
對於未經過加殼處理的移動APP安裝包,可通過反編譯檢視其詳細的原始碼、配置檔案等。攻擊者可對獲取到的APP原始碼、配置檔案進行分析,還可以通過程式碼審計等方式深入挖掘APP存在的安全漏洞,並對發現的漏洞進行利用,對APP及其使用者造成極大的安全隱患。
2.3.4 Android APP allowBackup安全漏洞
在AndroidManifest.xml檔案中allowBackup屬性值被設定為true時(預設值為true)。
使用adb backup命令對APP資料進行備份。
允許備份資料。
使用adb restore命令對APP資料進行恢復。
允許恢復資料。
攻擊者可通過adb backup對APP資料備份,匯出APP中儲存的資料,造成使用者資料的洩露。
3. 導致Android移動APP安全問題的追溯
Android移動APP安全問題產生主要是開發者對於開發的不嚴謹,不規範造成的。
首先,開發者第一要務是保證APP的正常執行及功能完善,在保證了此前提下而容易忽略原始碼的嚴謹性及規範性,往往由於某些細小的環節沒有把控,導致安全問題的產生。
其次,開發者可能並不能夠知曉常見的APP安全問題,不知道如何規避此類問題的繁盛,安全意識不健全。在不久的將來,這將可能是區分開發者水平的決定性因素之一。
4. 安全建議與總結
移動APP安全越來越被重視,將安全融入到APP的開發週期中,檢視解決開發和安全分割的現狀。
對於缺少開發週期周缺少安全檢測的公司或個人,可通過第三方安全檢測機構或平臺,對其APP進行安全檢測,加固APP的安全性,為推向市場後用戶的安全使用保駕護航。
《網路安全法》的頒佈從大眾視角來看,標誌著中國網際網路安全正式告別蠻荒時代。對於開發企業及個人而言,貫徹落實網路安全法合規性刻不容緩。在APP開發過程中做到嚴謹規範,這是移動APP安全乃至整個資訊保安領域的第一步。
關注我們
對安全有興趣的小夥伴可以關注或加入我們,TideSec安全團隊: