SQLite 漏洞于 2018 年由騰訊的安全研究人員(隸屬于 Blade Team)首次發現,它繼續使數百萬應用程序、軟件、物聯網設備等面臨 SQLite 注入攻擊的更高風險。盡管是一個中等影響的漏洞,但SQLite 漏洞是一個嚴重的安全漏洞。讓我們進一步研究這個漏洞。
SQLite 漏洞:簡介
什么是 SQLite?
SQLite 是一個開源、零配置、自包含且功能齊全的關系數據庫管理系統,包含在一個 C 編程庫中。它是一個嵌入式 SQL 數據庫引擎,沒有客戶端-服務器關系。它根據需要動態或靜態地與應用程序鏈接。與其他 SQL 數據庫不同,它是無服務器的,不需要單獨的服務器進程。
SQLite 注入攻擊如何工作?
SQLite 注入背后的基本思想是從數據庫中獲取機密信息并執行易受攻擊的操作,例如更新、修改或刪除記錄、添加新記錄等。
通常,要使 SQLite 注入攻擊成功,必須滿足以下先決條件之一:
- 應用程序存在 SQLi 漏洞或運行 SQLite 的過時版本。
- 應用程序必須允許未經過濾和未經驗證的用戶輸入。
- 應用程序必須允許攻擊者提交惡意制作的數據庫文件,應用程序將打開和查詢這些文件。
假設您的網站上有一個注冊頁面,用戶必須在其中輸入他們的用戶名。如果用戶輸入的是 SQLite 語句而不是他們的名字怎么辦?查詢將直接進入數據庫并獲取查詢語句中請求的數據。這就是大多數SQLite 注入攻擊發生的方式。
讓我們再舉一個例子。您的應用程序允許第三方應用程序從 SQLite 數據庫讀取數據或提交惡意制作的數據庫文件。利用此漏洞,攻擊者可以在數據庫中存儲惡意代碼,前提是他們具有相關的文件系統訪問權限。當應用程序從數據庫訪問數據時,就會執行惡意代碼。
基于 Chromium 的瀏覽器,如 Google Chrome、Brave、Vivaldi 等,實現了 JavaScript 的 Web SQL 特性。這使攻擊者能夠創建將 SQL 命令發送到應用程序的嵌入式 SQLite 代碼的網頁。利用此 SQLite 漏洞,攻擊者可以運行任意 SQL 文本。在支持 SQLite 的瀏覽器中訪問網頁這樣簡單的事情就足以讓攻擊者利用該漏洞并觸發遠程代碼執行。Web SQL API 將惡意代碼轉換為常規 SQL 語法。
為什么 SQLite 安全漏洞很危險?
發現較新的缺陷
騰訊安全團隊于2018年首次在SQLite中發現遠程代碼執行漏洞。此后其他SQL安全漏洞如Integer Flow、Use-after-free、NULL pointer deference、Input Validation errors、SELECT query functionality缺陷等使得攻擊者執行他們的命令。研究人員不斷在不同的操作系統、軟件、應用程序、平臺、程序和設備中尋找漏洞和利用 SQLite 引擎的方法。它可能是大量新漏洞的起點。
影響
攻擊者利用 SQLite 漏洞進行范圍廣泛的惡意活動,從遠程代碼執行、泄漏內存程序和崩潰程序到編排DDoS 攻擊。
它的廣泛使用增加了相關風險
鑒于其兼容性、輕量級特性(在設置復雜性、資源使用和管理開銷方面)和其他優勢,SQLite 通常用于計算領域,包括應用程序、軟件和物聯網設備(包括語音助手、智能電視等)。
它還用于運行這些應用程序的底層操作系統,例如 Android、Unix flavors、MacOS 等。它也是基于 Chromium 的瀏覽器的一部分,例如 Google Chrome、Brave、Vivaldi、Opera 等。因此,SQLite 被嵌入到數十億的應用程序、智能手機和設備中。甚至已知某些版本的 Safari 和 Firefox 也存在此漏洞。考慮到它的使用范圍,您的應用程序面臨風險的可能性很高。即使您使用的第三方應用程序存在 SQLite 安全漏洞,您的應用程序也可能存在風險。
巨大的攻擊面
由于這些被歸類為中等影響漏洞,開發人員/供應商可能會產生一種錯誤的安全感,并且可能不會修復漏洞。這最終可能會創建一個廣泛的攻擊面,攻擊者可能會在未來利用它來編排未打補丁系統的鏈式攻擊。
即使發布了補丁,應用程序也可能存在風險
Google 等使用 SQLite 引擎的應用程序已經發布了補丁。將嵌入式數據庫引擎更新到應用程序可能是一個危險的過程,會導致數據損壞。因此,開發人員傾向于避免長期修復這些缺陷。應用程序的庫和組件很少更新,這增加了 SQLite 漏洞的風險。
結論
修補 SQLite 漏洞以及清理和驗證用戶輸入是防止 SQLite 注入的必要步驟。您必須有一個托管的智能安全解決方案來解決這些漏洞并加強應用程序的安全狀況。