android应用层常见安全漏洞

前言

总结下android应用开发中常出现的依靠第三方加固无法解决的代码漏洞问题。这些代码漏洞通常可用自动化检测工具检验。搭建行为检测检验环境也是十分有效的做法。

https://www.zhihu.com/question/22933619/answer/392842386
https://blog.csdn.net/whklhhhh/article/details/79116894

正文

Android Manifest配置相关

1.组件导出
android:exported,若为ture则导出该组件。不声明时包含则可导出。
风险:导出的组件可被其它应用使用(intent),使其它应用有超出其权限的行为

2.敏感权限申请
android:name=”xxx”
api23以后权限写在清单里是没有效果的(如sd卡读写权,只是能开启但不会自动开启),开启需要写代码询问或者手动去设置中开启清单申请的。没有权限会直接抛出一般错误
风险:该应用可能有不良行为

3.备份权限
allowbackup为ture可导出,不写可能导出。可导出的数据为data/data部分的私有数据
风险:可通过adb backup对应用数据进行备份,该命令不需要root权限即可获得应用数据。对不开放root的系统造成安全隐患,可能造成数据泄露。一些应用还可能有登录他人账号的可能。

4.调试权限
Debuggable为ture时,可以被调试。
风险:被调试意味着完全控制该程序进程。非root下暴露该应用可能造成信息泄露

5.消息推送劫持
消息的apikey被暴露在xml或代码中。
风险:key暴露引起该sdk的流量被解密。从而泄露隐私或恶意推送。

公共组件

1.SQLite
openOrCreateDatabase访问权限为MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE
风险:其它进程任意访问应用私有数据库

2.SharedPreference
getSharedPreferences访问权限设置为MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE
风险:其它进程任意访问应用私有数据库

3.WebView证书
WebViewClient类的onReceivedSslError方法中错误不应该忽略。
风险:无证书校验可能受到中间人攻击。

4.WebView远程代码执行
SDK版本小于17时addJavascriptInterface接口函数使用未限制。
风险:风及一时的webview远程代码执行漏洞。

5.WebView明文存储
setSavePassword(true)或者不设置默认为ture
风险:webview保存的账户与密码将明文保存在data/data/WebView.db

6.WebView跨域访问
CNVD-2017-36682:
手动调用getSettings().setAllowFileAccessFromFileURLs(true)或getSettings().setAllowUniversalAccessFromFileURLs(true)
风险:由于Android应用WebView开启了file域访问,且允许file域访问http域,未对file域的路径做严格限制,可构造js代码实现以目标APP的权限访问文件系统。

7.unzip解压缩漏洞
解压zip文件,使用getName()获取压缩文件名后未对名称进行校验。
风险:通过构造压缩包内路径造成文件任意写

私有组件

1.Intent
Intent的flag为FLAG_ACTIVITY_NEW_TASK时,该标志新启动一个活动堆栈。
风险:如果创建的Activity不是在同一个Task中打开,就很可能被其他的Activity劫持读取到Intent内容

2.Intent Scheme URL
Intent intent = Intent.parseUri(uri)应进行过滤uri,若该uri来自外部的话
风险:该url可以通过web页面启动已安装应用的Activity组件,可能发生基于intent的攻击。

3.本地SQL注入
Content Provider时,将组件导出,提供了query接口。输入未有完备的检查。contentResolver.query();
风险:使应用私有数据泄露

4.本地拒绝服务
组件响应Intent时未对数据异常处理
风险:造成组件崩溃。或其它应用漏洞

5.Content Provide
contentprovider中的openfile接口并未校验输入
风险:应用数据泄露

6.文件权限
android.content.Context.openFileOutput()方法来创建文件时MODE_WORLD_XXXXX会使权限为-rw-rw-rxx。
风险:造成私有数据泄露,私有目录其它进程也是可以查看的,只不过对应文件需要权限。

系统无关

1.协议安全性
协议加密是否安全,证书检查是否完备

2.密匙安全性
密匙硬编码,加密算法弱

3.随机数算法弱等密码学安全问题

4.含有敏感信息未删除