強制類型轉換本地拒絕服務漏洞 - Intent.getXXXExtra()
一、API
1. 繼承關係
【1】java.lang.Object
【2】android.content.Intent
2. 主要方法
【1】getSerializableExtra(String name) 返回Serializable
【2】getStringExtra(String name) 返回String
【4】參考鏈接
https://developer.android.com/reference/android/content/Intent.html
二、觸發條件
1. 定位強制類型轉換的位置【check-cast】
2. 定位Intent.getXXXExtra方法的位置
【1】對應到smali語句中的特徵
r'Landroid/content/Intent;->get.+Extra\('
3. 判斷是否爲導出的組件【exported屬性爲true】
三、漏洞原理
【1】導出的組件沒有對getSerializableExtra()等獲取到的數據進行類型判斷而進行強制類型轉換,從而導致類型轉換異常而導致應用崩潰
【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】在做強制類型轉換時,要先進行類型判斷並使用try catch,防止異常數據導致強制轉換拋出異常