
谷歌BigSleepLLM代理在SQLite中發現未知漏洞
谷歌宣布,其首次利用名為“Big Sleep”的大型語言模型(LLM)代理,在廣泛使用的軟件中發現了一個此前未知的、可利用的內存缺陷。
Big Sleep是谷歌Project Zero與谷歌DeepMind合作的產物,它通過變異分析,在流行的開源數據庫引擎SQLite的一個開發版本中發現了棧緩沖區下溢漏洞。
Big Sleep是Project Zero的Naptime項目的升級版,后者是今年6月宣布的一個框架,它使LLM能夠自主進行基本的漏洞研究。該框架為LLM提供了用于測試軟件潛在缺陷的工具,這些工具以類似人類的工作流程運行,包括代碼瀏覽器、調試器、報告工具和用于運行Python腳本并記錄輸出的沙盒環境。
研究人員為Gemini 1.5 Pro驅動的AI代理提供了之前SQLite漏洞的起點,為Big Sleep在新版本軟件中搜索潛在類似漏洞提供了上下文。代理被提供了最近的提交信息和差異更改,并被要求審查SQLite存儲庫中的未解決問題。最終,谷歌的Big Sleep識別出了一個涉及“seriesBestIndex”函數錯誤處理iColumn字段中特殊哨兵值-1的漏洞。由于該字段通常應為非負值,因此與該字段交互的所有代碼都必須設計為正確處理這一特殊情況,而seriesBestIndex未能做到這一點,從而導致了棧緩沖區下溢。
Project Zero的博客進一步揭示了Big Sleep如何使用提供的上下文和工具,通過多個步驟搜索和測試漏洞,并通過自然語言輸出記錄其過程。LLM代理自主地將之前的漏洞與代碼的其他部分聯系起來,開發了一個在沙盒中運行的測試用例,然后在觸發崩潰后生成了根本原因分析和完整的崩潰報告。
谷歌Project Zero和谷歌DeepMind的研究人員寫道,Big Sleep最終生成的發現摘要“幾乎可以直接報告”,它清楚地解釋了由于seriesBestIndex未能處理iColumn字段中的負值,某個輸入如何觸發了崩潰。
谷歌研究人員于2024年10月9日向SQLite報告了此問題,SQLite當天就修復了該問題。研究人員指出,由于漏洞存在于數據庫引擎的開發版本中,因此它從未進入正式版本或影響SQLite用戶。
“我們認為這項工作具有巨大的防御潛力。在軟件發布之前就發現漏洞,意味著攻擊者沒有可乘之機:漏洞在攻擊者有機會利用之前就已經被修復,”研究人員表示。
Big Sleep團隊還指出,該代理有潛力發現使用典型模糊測試技術難以發現的漏洞。他們表示,嘗試使用模糊測試重新發現SQLite漏洞,在150個CPU小時的測試后仍未發現漏洞。他們指出,這很可能是由于SQLite可用的模糊測試框架的配置限制,以及傳統上用于SQLite模糊測試的工具——American Fuzzy Lop(AFL)——在長期使用后“已達到自然飽和點”。
然而,團隊強調,Big Sleep仍處于“高度實驗性”階段,他們認為,針對特定目標的模糊測試器“在檢測漏洞方面至少與當前狀態的AI代理一樣有效”。