[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等工具加密數據庫
* 避免在數據庫中存儲明文和敏感信息