频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android安全问题笔记
2017-04-19 10:46:43         来源:Mark__Liu的博客  
收藏   我要投稿

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写在了本地

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

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

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

Intent劫持风险安全

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

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

如果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 Https相关解析与okhttp
下一篇:java.lang.NoSuchMethodError: android.graphics.Canvas.drawRoundRect java.lang.NoSuchMethodError: andr
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站