Android静态安全检测 -> 强制类型转换本地拒绝服务漏洞

来源:互联网 发布:飞利浦呼吸机读卡软件 编辑:程序博客网 时间:2024/04/30 20:58

强制类型转换本地拒绝服务漏洞 - 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,防止异常数据导致强制转换抛出异常


0 0