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