Android静态安全检测 -> 自定义权限的保护级别

来源:互联网 发布:品茗网络图软件春节 编辑:程序博客网 时间:2024/04/29 17:15

自定义权限的保护级别 - 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

0 0
原创粉丝点击