[TOC]
## 1 SQLite数据库加密(SQLCipher)检测 # 07001
检查SQLite是否使用了SQLCipher开源库。SQLCipher是对整个数据库文件进行加密。注意,该该检测项不是警告用户有风险,而是提醒用户采用了SQLite对数据库进行了加密。
等级:`提醒`
检测方法:
使用了SQLCipher开源库会产生`Lnet/sqlcipher/database/SQLiteDatabase`的包路径,只需在包路径中查找是否存在该路径的包名即可。
## 2 SQLite数据库(SQLite Encryption Extension - SEE) 检测 # 07002
检查SQLite是否使用了SQLite Encryption Extension插件
SEE是一个数据库加密扩展插件,允许app读取和写入加密的数据库文件,是SQLite的加密版本(收费版),提供以下的加密方式:RC4、AES-128 in OFB mode、AES-128 in CCM mode、AES-256 in OFB mode
等级:`提醒`
检测方法:
使用了SEE拓展插件会产生`Lorg/sqlite/database/sqlite/SQLiteDatabase`的包路径,只需在包路径中查找是否存在该路径的包名即可。
## 3 SQLite数据库的对称密钥(PRAGMA key) 检测 # 07003
检测SQLite是否使用对称密钥(PRAGMA key)加密数据库。
等级:`提示`
## 4 SQLite sql注入漏洞检测 # 07004
SQLite做为android平台的数据库,对于数据库查询,如果开发者采用字符串链接方式构造sql语句,就会产生sql注入。
风险等级:`高危`或`中危`或`低危`
建议:
* Provider不需要导出,请将export属性设置为false
* 若导出仅为内部通信使用,则设置protectionLevel=signature
* 不直接使用传入的查询语句用于projection和selection,使用由query绑定的参数selectionArgs
* 完备的SQL注入语句检测逻辑
查阅更多:
* 关于SQL注入的实验(http://www.yelbee.top/index.php/archives/84/)
## 5 Databases任意读写漏洞检测 # 07005
APP在使用openOrCreateDatabase创建数据库时,将数据库设置了全局的可读权限,攻击者恶意读取数据库内容,获取敏感信息。在设置数据库属性时如果设置全局可写,攻击者可能会篡改、伪造内容,可以能会进行诈骗等行为,造成用户财产损失。
风险等级:`中危`
建议:
* 用MODE_PRIVATE模式创建数据库
* 使用sqlcipher等工具加密数据库
* 避免在数据库中存储明文和敏感信息