引進了一種利用 SQLite 漏洞的新技術。

Check Point 的研究人員 裸露 在 DEF CON 會議上,詳細介紹了使用易受攻擊的 SQLite 版本攻擊應用程式的新技術。 檢查點方法將資料庫檔案視為整合利用各種內部 SQLite 子系統中不可直接利用的漏洞的場景的機會。 研究人員還準備了一種利用漏洞的技術,透過在 SQLite 資料庫中以 SELECT 查詢鏈的形式對漏洞進行編碼,從而允許您繞過 ASLR。

為了成功進行攻擊,必須能夠修改被攻擊應用程式的資料庫文件,這限制了攻擊使用 SQLite 資料庫作為傳輸和輸入資料格式的應用程式的方法。 該方法還可用於擴展現有的本地訪問,例如,將隱藏的後門整合到使用的應用程式中,以及在安全研究人員分析惡意軟體時繞過安全機制。 檔案替換後的操作是在應用程式對修改後的資料庫中的表執行第一個 SELECT 查詢時執行的。

作為範例,我們示範了在開啟通訊錄時在 iOS 中執行程式碼的能力,並使用所提出的方法修改了包含「AddressBook.sqlitedb」資料庫的檔案。 該攻擊利用了 fts3_tokenizer 函數中的漏洞(CVE-2019-8602,指針取消引用功能),該漏洞已在 2.28 月份的 SQLite XNUMX 更新中修復,此外還有另一個漏洞 脆弱性 在視窗函數的實作中。 此外,也示範了使用PHP編寫的遠端奪取攻擊者後端伺服器控制權的方法,該方法會累積惡意程式碼運行過程中截獲的密碼(截獲的密碼以SQLite資料庫的形式傳輸)。

此攻擊方法基於「查詢劫持」和「面向查詢程式設計」兩種技術的使用,允許利用導致 SQLite 引擎記憶體損壞的任意問題。 「查詢劫持」的本質是取代sqlite_master服務表中「sql」欄位的內容,該欄位決定了資料庫的結構。 指定欄位包含一個DDL(資料定義語言)區塊,用於描述資料庫中物件的結構。 描述是使用標準 SQL 語法指定的,即使用“CREATE TABLE”結構,
它在資料庫初始化過程中執行(在第一次啟動期間)
sqlite3LocateTable 函數在記憶體中建立與表格相關的內部結構。

這個想法是,由於將“CREATE TABLE”替換為“CREATE VIEW”,因此可以透過定義自己的視圖來控制對資料庫的任何存取。 使用“CREATE VIEW”將“SELECT”操作綁定到表,該操作將取代“CREATE TABLE”被調用,並允許您存取 SQLite 解釋器的不同部分。 接下來,最簡單的攻擊方法是呼叫「load_extension」函數,該函數允許您載入帶有副檔名的任意函式庫,但預設情況下該函數是停用的。

為了在可以執行「SELECT」操作時進行攻擊,提出了「以查詢程式設計」技術,該技術使得利用 SQLite 中導致記憶體損壞的問題成為可能。 該技術讓人聯想到面向返回的程式設計(ROP,面向返回的程式設計),但不使用現有的機器程式碼片段來建立呼叫鏈(「小工具」),而是插入 SELECT 內的一組子查詢。

引進了一種利用 SQLite 漏洞的新技術。

引進了一種利用 SQLite 漏洞的新技術。

來源: opennet.ru

添加評論