硬编码敏感信息

0x01 漏洞描述

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

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

0x02 漏洞危害

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

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

0x03 修复意见

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

可参考下列文章:

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

关于Android敏感信息