您所在的位置: 首頁 >
安全研究 >
安全通告 >
一個隱藏SQLite數(shù)據(jù)庫長達22年的漏洞
安全專家Andreas Kellas詳細介紹了2000年10月推出的SQLite數(shù)據(jù)庫中的一個高嚴重性漏洞,被追蹤為CVE-2022-35737(CVSS評分:7.5)。
CVE-2022-35737漏洞是一個整數(shù)溢出問題,影響到SQLite 1.0.12至3.39.1版本。該漏洞已在2022年7月21日發(fā)布的3.39.2版本中得到解決。此前,如果在C API的字符串參數(shù)中使用了數(shù)十億字節(jié),則有時會允許數(shù)組邊界溢出。攻擊者可以觸發(fā)這個問題,在受影響的系統(tǒng)上執(zhí)行任意代碼。
CVE-2022-35737在64位系統(tǒng)上可被利用,可利用性取決于程序的編譯方式。在沒有堆棧金絲雀的情況下編譯庫時確認任意代碼執(zhí)行,存在堆棧金絲雀時未確認,并且在所有情況下都確認拒絕服務。
所以,為了利用CVE-2022-35737漏洞,攻擊者必須將大字符串輸入傳遞給printf函數(shù)的 SQLite 實現(xiàn),并且格式字符串包含 %Q、%q 或 %w 格式替換類型。該漏洞與printf調(diào)用的名為“ sqlite3_str_vappendf ”的函數(shù)處理字符串格式的方式有關。
當sqlite3_str_vappendf函數(shù)收到一個大字符串,并且格式替換類型為%q、%Q或%w時,就會觸發(fā)有符號的整數(shù)溢出。
研究人員還發(fā)現(xiàn),如果啟用 unicode 字符掃描的特殊字符,那么在最壞的情況下有可能實現(xiàn)任意代碼執(zhí)行,或者導致 DoSS 條件。
最后,安全專家Andreas Kellas總結(jié)說道:"這是一個在編寫時可能并不像錯誤的錯誤”。因為追溯到2000年的SQLite源代碼,當時系統(tǒng)主要是32位架構(gòu)"。
參考來源:https://securityaffairs.co/wordpress/137629/hacking/cve-2022-35737-sqlite-bug.html
來源:FreeBuf