Android APP安全测试Checklist

前言

此文档旨在大家提供Android平台APP安全风险与漏洞相关的一般性Checklist,保障安全评估测试的基础质量与效率。

配置安全

发布状态检查

该类漏洞的审查场景:发布的代码未启用代码混淆、未关闭调试模式、未关闭不必要的日志输出、或者含有内网IP地址等信息

漏洞类型说明:
发布状态检查:如果APP未启用代码混淆或者其他抵抗分析的机制,或者在AndroidManifest.xml中定义了android:debuggable为true,或者没有限制日志输出的级别可能导致攻击者更容易地分析APP的运行机制,更方便地发现其中潜在的安全漏洞,以及信息泄露的风险。如果APP发布时未移除代码中保存的公司内部IP地址或域名信息,也将导致公司内网信息泄露。
审核点及方法:综合分析判断APP是否在发布前进行了充分的检查。
黑盒方法:利用dex2jar等工具对apk文件进行逆向,观察代码是否被混淆。分析AndroidManifest.xml文件,检查android:debuggable是否设置为true(缺省为false),通过logcat观察日志输出,在源码与xml文件中查找是否泄露公司敏感信息。

权限申请

该类漏洞的审查场景:APP权限申请

漏洞类型说明:
关于权限申请问题,其实不能算作是漏洞,而是一个安全设计原则,即权限分配最小化原则,APP申请权限应当遵循最小化原则,禁止申请不必要的冗余权限。

自定义权限

该类漏洞的审查场景:APP自定义权限

漏洞类型说明:
根据官方建议[1],尽量避免自定义权限。如果必须自定义权限,建议保护级别设定为"Signature"。原因是保护级别为"Dangerous"的权限,其他APP可能也会申请该权限,而这些特定权限的说明可能会让用户困惑,而用户感到困惑时,通常忽视权限申请直接批准。
审核点及方法:检查AndroidManifest.xml文件中是否通过permission定义了权限,检查这些权限的protectionLevel是否为signature,若否,那么这些权限很可能被第三方申请。可进一步考察这些权限用于保护的功能,评估权限被第三方APP获取后可能造成的危害。

签名有效性校验

该类漏洞的审查场景:对APK文件进行反编译之后重新打包签名安装

漏洞类型说明:
签名有效性校验:如果APP在实现逻辑中缺乏对签名文件合法性的校验,黑客可以对APK文件反编译(可利用apktool工具d选项),并按照自己的意图对APK代码进行篡改,然后将篡改后的文件重新编译打包(可利用apktool工具的b选项),最后使用自定义的签名文件对打包APK文件签名(可利用keytool,jarsigner,zipalign工具)。这样,黑客可以向APP中植入恶意代码,并将重新编译打包的APK文件分发出去。
审核点及方法:判断APP的实现逻辑中是否对签名文件的合法性进行校验。
黑盒方法:将原始APK反编译,篡改其中的代码,重新编译打包APK,并用自定义生成的签名文件对其签名,安装APK,验证其是否能正常运行,若APP能正常运行,说明其实现中缺乏对签名有效的校验。

数据安全

存储安全

该类漏洞的审查场景:APP数据本地存储方式

漏洞类型说明:
数据存储安全:分析APP本地数据存储的安全,主要从三个方面考虑:① 高度敏感数据禁止存储在客户端(比如用户密码);② 敏感数据必须设置为私有访问权限(禁止使用Context.MODE_WORLD_READABLE、Context.MODE_WORLD_WRITEABLE模式创建私有文件);③ 禁止向外部存储设备(SD卡)写入敏感信息,对来自外部存储设备的数据,处理前必须校验数据的完整性、合法性。

  1. 场景:/data/data/<package_name>目录

审核点及方法:/data/data/<package_name>是Android系统分配给APP的默认私有存储目录,典型结构如下:

/data/data/<package_name>目录中的文件只属于对应的APP,只允许所属APP访问该目录的文件,如果开发者将文件的访问模式设置为Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,将导致文件全局可读/写,造成文件可被任意APP访问。如下:

可以看到loginshare.json的访问权限是第三方可读的,这样系统中已安装的任意APP都可以访问到loginshare.json中的内容,导致敏感信息泄露。
黑盒方法:通过adb shell连接Android模拟器或者测试机(要求拥具备root访问权限),进入对应的/data/data/<package_name>目录,查看各个文件的访问权限和存储内容,确保两个方面:1. 无论文件权限如何设置,文件都不能存储高敏感信息,比如密码;2. 所有文件的权限都应当设置为禁止第三方APP读/写。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拥春飞翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值