Android静态安全检测 -> Content Provider组件暴露
2017-12-21 18:09
363 查看
Content Provider组件暴露 - exported属性
一、android:exported
该属性指示了content provider是否可以被其他应用程序使用
1. true
代表该content provider可以被其他应用程序使用,其他所有的应用程序都可以通过该content provider提供的URI访问由该content provider提供的数据,在访问的时候,只需要遵循相应的权限就行
2. false
代表该content provider对其他应用程序来说是不可见的,将android:exported设置为false,用于限制其他应用程序来访问由该content provider提供的数据,只有当应用程序的UID和该content provider的UID相同时,才可以访问
3. 默认值
当minSdkVersion或者targetSdkVersion小于16时该属性的默认值是true;当大于17时,该属性默认值为false
4. 权限控制
【1】可以通过设置该属性的值为false或者通过访问权限来控制该content provider是否可以被其他应用程序使用
【2】android:permission 指定读写该content provider数据的权限名称
5. 参考链接
http://blog.csdn.net/peng_cao/article/details/50747694#androidexported
二、触发条件
1. 定位AndroidManifest.xml文件中的content provider组件
【1】对应的特征:<provider
2. exported属性的判断
【1】android:permission 如果设置权限控制,就认为不存在安全风险
【2】android:exported="true" 未设置权限控制的情况下,exported属性设置为true (默认也是true)
三、漏洞原理
【1】导出的Content Provider组件可以被第三方app任意调用,导致敏感信息泄露,并可能受到目录遍历、SQL注入等***风险
【2】详细的原理&POC
http://www.droidsec.cn/android-content-provider-security/
四、修复建议
【1】如果应用的Content Provider组件不必要导出,建议显式设置组件的“android:exported”属性为false
【2】如果必须要有数据提供给外部应用使用,建议对组件进行权限控制
转自: http://blog.csdn.net/u013107656/article/details/51862737相关文章推荐
- Android静态安全检测 -> Activity组件暴露
- Android静态安全检测 -> Activity组件暴露
- Android静态安全检测 -> Service组件暴露
- Android静态安全检测 -> Broadcast Receiver组件暴露
- Android静态安全检测 -> Broadcast Receiver组件暴露
- Android静态安全检测 -> Content Provider组件暴露
- Android静态安全检测 -> 系统组件本地拒绝服务检测
- Android静态安全检测 -> WebView组件远程代码执行漏洞检测
- Android静态安全检测 -> Content Provider组件本地SQL注入漏洞
- Android静态安全检测 -> 日志泄漏风险
- Android静态安全检测 -> 主机名弱校验
- Android静态安全检测 -> Hash算法不安全
- Android静态安全检测 -> 数据库文件任意读写
- Android静态安全检测 -> Zip文件目录遍历漏洞
- Android静态安全检测 -> Intent隐式调用
- Android静态安全检测 -> Service组件暴露
- Android静态安全检测 -> 代码混淆检测
- Android静态安全检测 -> Intent Scheme URL 漏洞
- android静态安全检测_四大组件activity
- Android静态安全检测 -> allowBackup标志位