Android安全问题笔记

作者: Mark_Liu | 来源:发表于2017-04-18 20:21 被阅读258次

    开发的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”,如下示例:

          <activity android:name="XXXActivity"
                    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安全问题笔记

        本文链接:https://www.haomeiwen.com/subject/fruqzttx.html