很多 Check Point研究人員最近透露 在DEF會議上,並附上詳細信息 被發現的新技術,這用於p攻擊使用易受攻擊的SQLite版本的應用程序。
方法 Check Point認為數據庫文件是集成漏洞利用方案的機會 在各種內部SQLite子系統中,這些子系統不可用於額頭開發。 研究人員還開發了一種技術,利用SQLite數據庫中SELECT查詢字符串形式的漏洞利用代碼來利用漏洞,從而避免了ASLR。
關於漏洞
Check Point研究人員詳細說明了 為了成功進行攻擊,攻擊者必須能夠修改被攻擊應用程序的數據庫文件,它限制了攻擊將SQLite數據庫用作傳輸和輸入數據格式的應用程序的方法。
雖然 他們還透露,該方法還可用於擴展已經獲得的本地訪問權限, 例如,將隱藏的後門集成到所使用的應用程序中,並避免安全研究人員在分析惡意軟件時使用。
在應用程序對修改後的數據庫中的表執行第一個SELECT請求時,將執行文件模擬後的操作。
例如,展示了打開通訊錄時可以在iOS上運行代碼的功能, 文件與數據庫«地址簿.sqlitedb»使用建議的方法對其進行了修改。
對於攻擊, fts3_tokenizer函數中使用了一個漏洞 (CVE-2019-8602,具有取消引用指針的功能)已在2.28月的SQLite XNUMX更新中修復,以及在實現窗口功能時遇到的另一個漏洞。
另外, 演示了該方法用於遠程控制從PHP攻擊者手中奪取後端服務器的方法,它會在惡意代碼操作期間累積被攔截的密碼(被攔截的密碼以SQLite數據庫的形式傳輸)。
攻擊方法基於兩種技術的使用,即查詢劫持和麵向查詢的編程,這兩種技術都可以利用導致SQLite引擎中的內存損壞的任意問題。
“查詢劫持”的實質是替換sqlite_master服務表中定義數據庫結構的“ sql”字段的內容。 指定的字段包含用於描述數據庫中對象結構的DDL(數據定義語言)塊。
使用常規SQL語法(即)設置描述。 在數據庫初始化期間(在第一次執行sqlite3LocateTable函數期間)執行的“ CREATE TABLE”構造用於在內存中創建與該表關聯的內部結構。
這個想法是由於替換了“ CREATE TABLE”和“ CREATE VIEW”,則可以通過其視圖的定義來控制對數據庫的任何訪問。
另一方面,使用“ CREATE VIEW”命令,將在表上附加“ SELECT”操作,而不是“ CREATE TABLE”將被調用,並允許攻擊者訪問SQLite解釋器的各個部分。
除此之外,最簡單的攻擊方法是調用“ load_extension”功能,該功能使攻擊者能夠加載具有擴展名的任意庫,但是默認情況下此功能處於禁用狀態。
為了在能夠執行SELECT操作的條件下進行攻擊,提出了面向查詢的編程技術,該技術允許利用SQLite中導致內存損壞的問題。
該技術使人聯想到面向返回的編程(ROP),但是使用了不存在的機器代碼片段,但是被插入到SELECT內的一組子查詢中以構建調用鏈(“小工具”)。