Android静态安全检测 -> Fragment注入攻击漏洞
2016-11-22 18:10
627 查看
Fragment注入攻击漏洞 - PreferenceActivity类
一、API
1. 继承关系
【1】java.lang.Object
【2】android.content.Context
【3】android.content.ContextWrapper
【4】android.view.ContextThemeWrapper
【5】android.app.Activity
【6】android.app.ListActivity
【7】android.preference.PreferenceActivity
2. 主要方法
【1】isValidFragment(String fragmentName)
返回Boolean(子类应当重写这个方法,并对fragment进行校验判断)
【2】onCreate(Bundle savedInstanceState),onDestroy(),onStop()
【3】参考链接
https://developer.android.com/reference/android/preference/PreferenceActivity.html#isValidFragment(java.lang.String)
3. PreferenceActivity两个重要的Intent Extra
【1】
【2】
PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS(’:android:show_fragment_arguments’)
4. Fragment与Activity的关系
【1】一个Activity提供了一个单一的屏幕和一些功能(例如,浏览器的书签管理器)
一个Fragment可以被认为是sub-activity,这是应用程序UI的一个小部分
【2】Fragments能够灵活的允许在不同的activities重用,当一个Fragment实例在Activity里面驻留耦合时,不同实例可以嵌入到不同的Activity中
【3】Fragment和Activity的关系图
【4】参考链接
http://wolfeye.baidu.com/blog/android-fragment-injection/
http://bbs.pediy.com/showthread.php?t=183459&highlight=fragment
二、触发条件
1. 继承自PreferenceActivity类
【1】对应到smali语句中的特征
2. 判断子类中是否重写isValidFragment方法
【1】对应到smali语句中的特征
3. 判断Activity是否对外暴露(exported属性为true)
三、漏洞原理
【1】导出的PreferenceActivity的子类中,没有加入isValidFragment方法,进行fragment名的合法性校验,攻击者可能会绕过限制,访问未授权的界面
【2】更多内容
http://drops.xmd5.com/static/drops/mobile-8165.html
四、修复建议
【1】如果应用的Activity组件不必要导出,或者组件配置了intent filter标签,建议显示设置组件的“android:exported”属性为false
【2】重写isValidFragment方法,验证fragment来源的正确性
一、API
1. 继承关系
【1】java.lang.Object
【2】android.content.Context
【3】android.content.ContextWrapper
【4】android.view.ContextThemeWrapper
【5】android.app.Activity
【6】android.app.ListActivity
【7】android.preference.PreferenceActivity
2. 主要方法
【1】isValidFragment(String fragmentName)
返回Boolean(子类应当重写这个方法,并对fragment进行校验判断)
【2】onCreate(Bundle savedInstanceState),onDestroy(),onStop()
【3】参考链接
https://developer.android.com/reference/android/preference/PreferenceActivity.html#isValidFragment(java.lang.String)
3. PreferenceActivity两个重要的Intent Extra
【1】
extra域包含
PreferenceActivity要动态加载的
Fragment
PreferenceActivity.EXTRA_SHOW_FRAGMENT (’:android:show_fragment’)
【2】
extra域包含传给该
Fragment的参数
PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS(’:android:show_fragment_arguments’)
4. Fragment与Activity的关系
【1】一个Activity提供了一个单一的屏幕和一些功能(例如,浏览器的书签管理器)
一个Fragment可以被认为是sub-activity,这是应用程序UI的一个小部分
【2】Fragments能够灵活的允许在不同的activities重用,当一个Fragment实例在Activity里面驻留耦合时,不同实例可以嵌入到不同的Activity中
【3】Fragment和Activity的关系图
【4】参考链接
http://wolfeye.baidu.com/blog/android-fragment-injection/
http://bbs.pediy.com/showthread.php?t=183459&highlight=fragment
二、触发条件
1. 继承自PreferenceActivity类
【1】对应到smali语句中的特征
.super Landroid/preference/PreferenceActivity;
2. 判断子类中是否重写isValidFragment方法
【1】对应到smali语句中的特征
r'\.method.+isValidFragment\(Ljava/lang/String;\)Z'
3. 判断Activity是否对外暴露(exported属性为true)
三、漏洞原理
【1】导出的PreferenceActivity的子类中,没有加入isValidFragment方法,进行fragment名的合法性校验,攻击者可能会绕过限制,访问未授权的界面
【2】更多内容
http://drops.xmd5.com/static/drops/mobile-8165.html
四、修复建议
【1】如果应用的Activity组件不必要导出,或者组件配置了intent filter标签,建议显示设置组件的“android:exported”属性为false
【2】重写isValidFragment方法,验证fragment来源的正确性
相关文章推荐
- Android静态安全检测 -> HTTPS敏感数据劫持漏洞
- Android静态安全检测 -> Intent Scheme URL 漏洞
- Android静态安全检测 -> WebView系统隐藏接口漏洞检测
- Android静态安全检测 -> WebView组件远程代码执行漏洞检测
- Android静态安全检测 -> 内网测试信息残留漏洞
- Android静态安全检测 -> WebView File域同源策略绕过漏洞
- Android静态安全检测 -> Content Provider文件目录遍历漏洞
- Android静态安全检测 -> Content Provider组件本地SQL注入漏洞
- Android静态安全检测 -> 强制类型转换本地拒绝服务漏洞
- Android静态安全检测 -> Zip文件目录遍历漏洞
- Android静态安全检测 -> 数据库文件任意读写
- Android静态安全检测 -> PendingIntent误用风险
- Android静态安全检测 -> Intent隐式调用
- Android静态安全检测 -> logcat可能泄露隐私敏感信息
- Android静态安全检测 -> 代码混淆检测
- Android静态安全检测 -> Service组件暴露
- Android静态安全检测 -> allowBackup标志位
- Android静态安全检测 -> 升级包数据篡改
- Android静态安全检测 -> 随机数使用不安全
- Android静态安全检测 -> WebView忽略SSL证书错误检测