Android静态安全检测 -> Fragment注入攻击漏洞
Fragment注入攻击漏洞 -PreferenceActivity类一、API1. 继承关系【1】java.lang.Object【2】android.content.Context【3】android.content.ContextWrapper【4】android.view.ContextThemeWrapper【5】android.a
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】参考链接
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来源的正确性
更多推荐
所有评论(0)