系統組件本地拒絕服務檢測 - Intent.getXXX()
一、API
1. 繼承關係
【1】java.lang.Object
【2】android.content.Intent
2. 主要方法
【1】getAction() 返回String
【2】getSerializableExtra(String name) 返回Serializable
【3】getStringExtra(String name) 返回String
【4】參考鏈接
https://developer.android.com/reference/android/content/Intent.html
二、觸發條件
1. 定位Intent.getXXX方法的位置
【1】對應到smali語句中的特徵
r'Landroid/content/Intent;->get(?:Action|.+Extra)\('
2. 判斷是否爲導出的組件【exported屬性爲true】
3. 判斷是否進行異常捕獲【try...catch】
三、漏洞原理
【1】導出的組件在處理Intent附加數據的時候,沒有進行異常捕獲,攻擊者可通過嚮應用發送空數據、異常或畸形數據等,導致應用程序崩潰
【2】更多內容
http://wolfeye.baidu.com/blog/local-dos/
https://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.22.IAgwPP&articleid=55
http://www.droidsec.cn/阿里聚安全掃描器之本地拒絕服務檢測詳解/
四、修復建議
【1】不必要導出的組件,建議顯示設置組件的“android:exported”屬性爲false
【2】在使用Intent獲取附加數據時,使用try catch進行異常捕獲和處理,防止拋出異常引發崩潰