Android靜態安全檢測 -> Activity組件暴露

Activity組件暴露 - exported屬性


一、android:exported


該屬性用來標示,當前Activity是否可以被另一個Application的組件啓動


1. true

表示允許被啓動


2. false


【1】表示不允許被啓動,這個Activity只會被當前Application或者擁有同樣user ID的Application的組件調用


【2】關於user ID的參考鏈接


http://yelinsen.iteye.com/blog/977683


3. 默認值


【1】根據Activity中是否有intent filter標籤來定

  -  沒有intent filter - 默認值爲false

     沒有任何的filter意味着這個Activity只有在詳細的描述了它的class name後才能被喚醒,這意味着這個Activity只能在應用內部使用,因爲其它應用程序並不知道這個class的存在,所以在這種情況下,它的默認值是false


  -  有intent filter - 默認值爲true

     如果Activity裏面至少有一個filter的話,意味着這個Activity可以被其它應用從外部喚起,這個時候它的默認值是true


4. 權限控制


【1】不只有exported這個屬性可以指定Activity是否暴露給其它應用,也可以使用permission來限制外部實體喚醒當前Activity


【2】android:permission  指定啓動該Activity所需要的權限名稱


5. 參考鏈接


http://blog.csdn.net/watermusicyes/article/details/46460347


二、觸發條件


1. 定位AndroidManifest.xml文件中的Activity組件


【1】對應的特徵:<activity


2. exported屬性的判斷


【1】android:permission 如果設置權限控制,就認爲不存在安全風險


【2】exported屬性設置爲true

  顯示設置android:exported="true"

  默認值爲true,也就是具有intent filter標籤,對應的特徵:<intent-filter


3.主Activity(MainActivity)


【1】應用程序需要包含至少一個Activity組件來支持MAIN操作和LAUNCHER種類,即爲主Activity

  對應的特徵


【2】暴露的Activity組件不包括主Activity


三、漏洞原理


【1】導出的Activity組件可以被第三方APP任意調用,導致敏感信息泄露,並可能受到繞過認證、惡意代碼注入等***風險


【2】詳細的原理&POC


http://www.droidsec.cn/android-activtity-security/


http://drops.wooyun.org/tips/3936


四、修復建議


【1】如果應用的Activity組件不必要導出,或者組件配置了intent filter標籤,建議顯示設置組件的“android:exported”屬性爲false


【2】如果組件必須要提供給外部應用使用,建議對組件進行權限控制

轉自:

http://blog.csdn.net/u013107656/article/details/51889227

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章