SQLite敏感信息

0x01 漏洞描述

ndroid中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容。

0x02 漏洞危害

SQLite不支持加密,应用中重要的数据、账号密码等容易被泄露。

0x03 修复意见

3.1 加密数据库内容

在存储数据时加密内容,在查询时进行解密。但是这种方式不能彻底加密,数据库的表结构等信息还是能被查看到,另外检索数据也是一个问题。

3.2 加密数据库文件

借助SQLCipher。SQLCipher是一个在SQLite基础之上进行扩展的开源数据库,它主要是在SQLite的基础之上增加了数据加密功能。

  • 加密性能高、开销小,只要5-15%的开销用于加密
  • 完全做到数据库100%加密
  • 采用良好的加密方式(CBC加密模式)
  • 使用方便,做到应用级别加密
  • 采用OpenSSL加密库提供的算法

LogCat敏感信息

0x01 漏洞描述

在 Android 中有一种名为 LogCat 的日志机制,不仅系统日志信息,还有应用日志信息也会输出到LogCat。

开发人员通常会通过打印出的日志信息来分析、定位问题。如果对外发布版本的时候,忘记关闭相关的日志打印。LogCat 中的日志信息可以从同一设备中的其他应用中读出,敏感信息不应输出到LogCat,因此向Logcat输出敏感信息的应用,被认为具有信息泄露的漏洞。

0x02 漏洞危害

攻击者通过调试可获取到logcat输出的敏感信息,造成敏感信息泄漏

0x03 修复意见

  • 在发行版应用中,最好不要输出任何日志。
  • 为了APP的错误采集,异常反馈,必要的日志如要被输出,需遵循安全编码规范将风险控制在最小范围内

具体代码及实现请参考:

硬编码敏感信息

0x01 漏洞描述

信息安全的基础在于密码学,而常用的密码学算法都是公开的,加密内容的保密依靠的是密钥的保密,密钥如果泄露,对于对称密码算法,根据用到的密钥算法和加密后的密文,很容易得到加密前的明文;对于非对称密码算法或者签名算法,根据密钥和要加密的明文,很容易获得计算出签名值,从而伪造签名。

若将加密密钥、数据库连接信息、后台信息等敏感信息硬编码在Java代码、文件中,将导致敏感信息泄漏,造成更大危害。

0x02 漏洞危害

硬编码敏感信息泄漏,造成的安全问题一般无法被轻易修正。例如:

  • 在代码中泄露利用未指定账户的硬编码密码,这样远程攻击者获取到敏感信息,可以通过访问数据库获得管理控制权限;
  • 本地用户可以通过读取配置文件中的硬编码用户名和密码来执行任意代码;

0x03 修复意见

  • 使用市面上安卓加固的厂商对安卓APP进行加固,比如360、梆梆等。
  • 使用DexGuard
  • 对敏感信息进行伪装或者加密
  • 敏感信息隐藏在原生函数库中(.so文件)

可参考下列文章:

Android安全开发之浅谈密钥硬编码

关于Android敏感信息

最后修改:2021 年 06 月 23 日 11 : 48 PM
如果觉得我的文章对你有用,请随意赞赏