自定义权限的保护级别 - protectionLevel属性 一、Manifest文件中权限相关的知识 1. <uses-permission>标签 【1】语法定义 【2】属性 android:name 可以是系统的权限名称,也可以是其他APP通过<permission>标签声明的权限名称(用于两个应用之间的交互) android:maxSdkVersion 标注该权限所支持的最大API版本号 2. <permission>标签 【1】语法定义 【2】属性 android:name 自定义的权限名称 android:label 对权限的简短描述 android:icon 用来标识权限的图标 android:description 对权限的更加详细的描述 android:permissionGroup 权限所属权限组的名称 android:protectionLevel 权限的保护等级 - normal 属性的默认值,代表低风险权限,只要申请了就可以使用(在AndroidManifest.xml中添加<uses-permission>标签),安装时不需要用户确认 - dangerous 高风险权限,安装时需要用户的确认才可使用 - signature 只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时(如果是申请系统权限,则需要与系统签名相同),才能将权限授给它 - signatureOrSystem 签名相同,或者申请权限的应用为系统应用(在system image中),与signature类似,只是增加了rom中自带的app的声明 ,尽量不要使用该选项,因为signature已经适合绝大部分的情况 【3】参考链接 http://blog.csdn.net/self_study/article/details/50074781 3. <uses-permission>与<permission>的区别 【1】<uses-permission> 系统权限或者其他APP通过<permission>声明的权限 调用别人东西的时候,自己需要声明的权限 【2】<permission> 自定义权限 别人调用这个程序时,需要用<uses-permission>来声明 【3】示例 应用A的Manifest文件中声明权限,并注册Broadcast Receiver 应用B发送消息给A,需要在B的Manifest文件中声明使用相应的权限,A才能收到 【4】参考链接 http://blog.csdn.net/lilu_leo/article/details/6940941 http://www.cnblogs.com/lwbqqyumidi/p/3793440.html 4. <permission-tree>标签 【1】语法定义 5. <permission-group>标签 【1】语法定义 6. 参考链接 https://developer.android.com/guide/topics/manifest/permission-element.html http://blog.csdn.net/self_study/article/details/50074781 二、触发条件 1. 定位AndroidManifest.xml文件中的自定义权限 【1】对应的特征:<permission 2. protectionLevel属性设置为normal 【1】显示设置android:protectionLevel="normal" 【2】默认情况下,属性的值也为normal 三、漏洞原理 【1】自定义权限的保护等级(android:protectionLevel属性)设置为normal,或没有显示设置(默认情况也为normal),可能会导致敏感信息泄露 四、修复建议 【1】建议将自定义权限的保护级别设置为signature或者signatureOrSystem