文章目录
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等工具加密数据库
- 避免在数据库中存储明文和敏感信息