3.7SQLite安全

文章目录
  1. 1. 1 SQLite数据库加密(SQLCipher)检测 # 07001
  2. 2. 2 SQLite数据库(SQLite Encryption Extension - SEE) 检测 # 07002
  3. 3. 3 SQLite数据库的对称密钥(PRAGMA key) 检测 # 07003
  4. 4. 4 SQLite sql注入漏洞检测 # 07004
  5. 5. 5 Databases任意读写漏洞检测 # 07005

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注入语句检测逻辑

查阅更多:

5 Databases任意读写漏洞检测 # 07005

APP在使用openOrCreateDatabase创建数据库时,将数据库设置了全局的可读权限,攻击者恶意读取数据库内容,获取敏感信息。在设置数据库属性时如果设置全局可写,攻击者可能会篡改、伪造内容,可以能会进行诈骗等行为,造成用户财产损失。

风险等级:中危

建议:

  • 用MODE_PRIVATE模式创建数据库
  • 使用sqlcipher等工具加密数据库
  • 避免在数据库中存储明文和敏感信息