存储安全(三)

本文主要介绍日志安全相关知识,所用到的漏洞应用和代码可以在https://github.com/AndroidAppSec/vuls/releases/tag/v1.1下载

三、日志安全

1、日志基本介绍

为了便于开发调试, Android 提供了用于日志打印输出的工具类: android.util.Log。日志输出分为不同的等级:VERBOSE(全部信息)、DEBUG(调试信息)、INFO(一般信息)、WARN(警告信息)、ERROR(错误信息)、ASSERT(断言信息)。对应的方法如下:

以上的日志级别从上到下依次升高,例如,当查看日志时,DEBUG 级别会输出 VERBOSE 级别的信息,而 VERBOSE 级别不会输出 DEBUG 级别的信息。

2、日志查看方法

比较简单方便的就是使用 Android Studio 自带的 Logcat 工具来查看日志,如下图:

当然,你也可以使用adb logcat命令来查看。

3、常见安全问题

程序员在使用日志的过程中,常常在打包 release 版本的 apk 文件时,忘记去掉相关日志代码,会造成安全隐患。

1)、被恶意程序读取敏感信息

要读取系统日志,需要申请 android.permission.READ_LOGS 权限。这个权限在 Android 4.1 版本之前是所有应用都可以申请的,也就意味着在 Android 4.1 版本之前,普通应用能够轻易获取任意应用的日志信息。在 Android 4.1 版本之后,只有系统应用才能够申请这个权限,也就是说虽然普通应用无法获取其他应用日志信息,但是在 ROOT 的手机上,恶意应用还是可以获取其他应用日志信息的。

2)、泄漏程序逻辑

其实更多的场景是,日志信息可能会泄漏整个应用的逻辑,为逆向分析提供便利。

一种常见的日志使用错误就是配置日志开关,在 release 版本中,只是把开关关掉。这种做法虽然正常情况下不会打印输出日志,但是所有日志记录的代码还都在。攻击者只要去重新打包 apk或者采用 hook 方式,将日志开关打开,就可以看见日志输出了。比如以下代码,只要修改getDecideResult()的返回值为 true 即可。

4、缓解措施

可以通过在 ProGuard 中配置规则来删除对应的日志代码。

可以通过添加以下 ProGuard 的规则来删除相应的代码:

反编译之后,发现日志对应代码已经被不见了:

参考:

https://sushi2k.gitbooks.io/the-owasp-mobile-security-testing-guide/content/0x05d-Testing-Data-Storage.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180728G1OA1N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券