當我們在開發 AI Agent(人工智慧代理)時,通常會使用像 LangGraph 這樣的框架來管理複雜的狀態與多代理協作。LangGraph 允許開發者建立具有狀態的應用,這意味著它需要將對話歷史或執行進度儲存在資料庫中,這種機制被稱為 Checkpoint(檢查點)。然而,近期發現的漏洞顯示,如果檢查點的儲存與讀取機制缺乏嚴格的安全驗證,傳統的資安漏洞將會演變成極其危險的遠端代碼執行攻擊。
漏洞的核心背景與組成
這次的安全事件涉及三個獨立的漏洞,但最危險的地方在於它們可以被串聯成一個漏洞鏈。首先是 CVE-2025-67644,這是一個發生在 SQLite 檢查點實作中的 SQL Injection(SQL 注入)。簡單來說,當程式在處理元數據過濾鍵(Metadata filter keys)時,沒有對使用者輸入進行適當的清理,導致攻擊者可以透過精心設計的輸入來操縱資料庫查詢。
其次是 CVE-2026-28277,這涉及不安全的 Msgpack 反序列化(Deserialization)。Msgpack 是一種高效的二進位序列化格式,用於將物件轉換為可儲存的位元組流。反序列化則是將這些位元組還原回記憶體物件的過程。如果系統在還原物件時沒有檢查內容的合法性,攻擊者就可以在序列化數據中植入惡意指令,讓伺服器在讀取數據的瞬間執行該指令。
最後是 CVE-2026-27022,這是一個發生在 Redis 檢查點實作中的查詢注入漏洞,主要影響存取控制的繞過。
漏洞鏈的攻擊路徑:如何達成 RCE
對於 Junior 工程師來說,最需要理解的是這兩個漏洞如何協作達成 RCE(Remote Code Execution,遠端代碼執行),讓攻擊者完全控制伺服器。
攻擊過程分為三個步驟。第一步,攻擊者準備一個包含惡意指令的 Msgpack 載荷(Payload)。第二步,攻擊者利用 SQL 注入漏洞,在呼叫 get_state_history 接口時,傳入惡意的過濾參數。這個操作會導致資料庫回傳一個偽造的檢查點列,而這個列中的內容正是攻擊者控制的惡意序列化數據。第三步,當 LangGraph 嘗試處理這個查詢結果並將該檢查點反序列化回物件時,觸發了不安全的反序列化漏洞,導致惡意代碼在伺服器運行環境中被執行。
這意味著攻擊者不需要直接擁有資料庫的寫入權限,只要能透過 API 觸發 SQL 注入,就能誘導系統讀取並執行偽造的惡意數據。
實務影響與防禦建議
這次漏洞主要影響自行託管(Self-hosted)的部署環境,而 LangChain 官方提供的託管平台 LangSmith 則不受影響。這提醒我們,當我們將 AI 框架部署在自己的基礎設施上時,必須承擔完整的安全責任。
AI Agent 通常被賦予較高的權限,例如讀取內部文件、呼叫 API 或操作資料庫。如果 Agent 的框架被攻破,攻擊者將繼承這些高權限,導致敏感數據外洩或內部系統被入侵。
針對此類風險,工程實務上應採取以下措施。首先,立即更新 LangGraph 及相關檢查點套件至最新版本。其次,嚴格實施最小權限原則(Principle of Least Privilege),不要讓 AI Agent 使用具有管理員權限的帳號執行。第三,為自行託管的伺服器加上強大的身份驗證機制,不要將內部 API 直接暴露在公網。最後,實施網路分段(Network Segmentation),將 AI 運行環境與核心敏感數據庫隔離,確保即便單一節點被攻破,攻擊者也無法輕易橫向移動到其他系統。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。