Android安全问题笔记

开发的App在安全检测工具上监测到一些问题,故特开security栏研究android app 安全问题,此文为检测到的一些安全问题

  • AllowBackup 配置

    • Android API Level 8 及其以上 Android 系统提供了为应用程序数据的备份和恢复功能

    • 此功能的开关决定于该应用程序中 AndroidManifest.xml 文件中的Application节点 allowBackup 属性值,其属性值默认是 True。当 allowBackup 标志为 true 时,用户即可通过 adb backup 和 adb restore 来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。

  • WebView JS交互问题

    • 调用了高危API addJavascriptInterface,Android系统版本4.2以下可以导致远程命令执行

    • 安全检测给出的修复建议:不使用addJavascriptInterface进行javascript层与java层的通信,可以使用shouldOverrideUrlLoading或着onConsoleMessage等函数进行通信

  • 第三方平台授权信息写在了本地

    • 微信登陆授权信息secret与appid写在了本地

    • 检测平台修复建议:将信息放在服务器端,由服务器端来中转接口调用请求

  • BroadCastReceiver组件的数据接受

    • 使用registerReceiver(mReceiver,intentFilter)的方式动态注册的BroadCastReceiver是公开的组件,外部应用可以给该动态注册的BroadCastReceiver发送恶意数据

    • 检测平台修复建议:建议使用registerReceiver(BroadCastReceiver receiver,IntentFilter filter,String broadcastPermission,Handler scheduler)增加权限或使用LocalBroadCastManger

  • Intent劫持风险安全

    • 使用隐式Intent来发送广播,恶意程序可以通过注册收听同样的action的broadcastreceiver来劫持Intent,如果Intent中有敏感信息,会造成敏感信息泄露

    • 检测平台修复建议:如果Intent中包含敏感信息,那么在sendBoadcast之前需要显式指定component

  • Intent附带数据漏洞

    • 如果getIntent()的intent附带空数据、异常或畸形数据,在处理getXXXExtra()获取数据时没进行异常捕获,会出现ClassNotFoundException异常导致应用Crash

    • 阿里聚安全建议

      • 将不必要的导出的组件设置为不导出,防止引起拒绝服务,尤其是杀毒、安全防护、锁屏防盗等安全应用; 在AndroidMenifest.xml文件中,将相应组件的“android:exported”属性设置为“false”,如下示例:

         
        
      • Intent处理数据时进行捕获异常通过Intent.getXXXExtra()获取的数据时进行以下判断,以及用try catch方式进行捕获所有异常,以防止应用出现拒绝服务漏洞:空指针异常 类型转换异常 数组越界访问异常 类未定义异常 其他异常

    • Android应用本地拒绝服务漏洞浅析

  • 数据存储安全问题

    • 存在安全问题的数据存储 Shared Preferences、Intentnal Storage、Android Database

    • 风险条件

      • 使用MODE_WORLD_READABLE模式创建存储文件或使用MODE_WORLD_WRITEABLE模式创建存储文件并含有"android:shareUserId" 属性值和测试签名
    • 风险原理

      • 使用MODE_WORLD_READABLE模式创建Shared Preferences文件,使得其他应用对该Shared Preferences文件具备可读的权限;
      • 使用MODE_WORLD_WRITEABLE模式创建Shared Preferences文件并含有“android:sharedUserId”属性值,使得其他应用对该应用的Shared Preferences文件具备可写的权限。
      • 在具备root权限的程序或用户对任何应用程序通过任意模式创建的的Shared Preferences文件都具有可读可写的权限
    • 修复建议

      • 避免使用MODE_WORLD_WRITEABLE和MODE_WORLD_READABLE模式创建进程间通信的文件
      • 避免将密码等敏感数据信息明文存储在Shared Preferences中
      • 避免滥用“Android:sharedUserId”属性
  • Content Provider 文件目录遍历漏洞

    • 风险触发条件
      • 对外暴露的Content Provider组件实现了opneFile()的接口
      • 且没有对文件的Uri进行有效的判断和过滤
    • 漏洞原理
      • 对外暴露的Content Provider实现了openFile()接口,其它应用可以调用该Content Provider 并调用它的openFile()方法进行数据访问,如果没有对访问权限和目标文件Uri进行有效的判断,就可以遍历访问任意可读文件
    • 修复建议
      • 将不必要导出的Content Provider设置为不导出
      • 去除没有必要的OpenFile()接口
      • 对openFile访问的文件路径进行有效判断
      • 使用签名验证来控制Content
      • Provider共享数据的访问权限:设置protectionLevel=”signature”

你可能感兴趣的:(Android安全问题笔记)