Agent 安全性的致命盲點:當單回合檢查遇上跨週期攻擊

現行的 Agent 安全框架將安全檢查視為一次性的無狀態評估,這使其無法偵測被拆解成多個無害步驟的「碎片化攻擊」。當 Agent 變得更長壽、更自主,我們必須將安全狀態視為一個會隨時間累積、貫穿整個生命週期的核心元件,而非單次互動的附屬品。

Agent 安全性的致命盲點:當單回合檢查遇上跨週期攻擊

長週期 Agent 的安全不能由每一回合各自判定;攻擊者可把有害意圖拆成多個看似無害的步驟。安全狀態必須跨迭代保存、累積風險並影響下一步授權,才能讓監控從一次性檢查變成真正能組合的系統約束。

Agent 的安全檢查為何會「失憶」?

目前主流的 LLM Agent 安全機制,無論是輸入/輸出過濾器、或是像 Constitutional AI 這類更複雜的框架,其作用範圍大多侷限在單一的「回合」(turn)或「軌跡」(trajectory)上 [1]。系統會評估當前的提示、模型的回應、或是 Agent 預計執行的單一動作,然後判斷其是否安全。一旦評估通過,這個安全檢查的上下文基本上就被拋棄了,系統不會記得上一個動作的意圖,也不會將其與下一個動作關聯起來。

這種設計在處理單次、明顯的惡意請求時相當有效。例如,當用戶直接要求 Agent 提供製造武器的方法時,系統可以輕易攔截。然而,對於能夠自主規劃、執行多步驟任務的長週期 Agent 來說,這種無狀態的檢查就暴露了嚴重的弱點。

攻擊者不再需要一次性提出惡意請求,他們可以將一個有害的總體目標,分解成一連串看似無害的子任務,在數十甚至數百個循環中逐步執行 [1]。每一個獨立的步驟都可能通過安全檢查,但它們組合起來的最終結果卻是危險的。這就像一個只檢查單一畫素的影像審查系統,它永遠無法辨識出由無數個正常畫素構成的有害圖像。

為什麼單次軌跡監控無法偵測碎片化攻擊?

一份近期的研究報告《Safety Does Not Compose: Non-Decaying Loop State for Autonomous LLM Agents》精準地指出了這個問題的核心:單點的安全屬性是無法自然「組合」(compose)成長期安全保證的。報告中提出了一個名為 LoopHarness 的測試框架,專門用來評估 Agent 在長週期任務中應對碎片化攻擊的能力。

實驗證明,傳統的安全機制在這種情境下極為脆弱。一個典型的攻擊場景可能是:

  • 第 1-5 迭代:Agent 奉命蒐集某個開源軟體的公開資訊,包括其使用的程式語言、相依套件版本等。每個動作都是良性的資訊查詢。
  • 第 6-10 迭代:Agent 開始搜尋這些特定版本相依套件的已知漏洞(CVEs)。這本身也是合法的安全研究行為。
  • 第 11-15 迭代:Agent 接著尋找利用這些漏洞的公開 PoC(概念驗證)程式碼,並逐一分析其功能。
  • 第 16 迭代後:Agent 將蒐集到的程式碼片段加以組合、修改,最終生成一個可用於攻擊目標軟體的完整惡意腳本。

在這個過程中,沒有任何一個單獨的步驟會觸發高風險警報。傳統的安全模型在第 15 次迭代時,早已忘記了 Agent 在第 1 次迭代時的初始目標。它無法將「蒐集軟體資訊」和「組合攻擊程式碼」這兩個跨越了十幾個週期的行為連結起來,看穿其背後的整體意圖。根據該研究,即使是頂尖的模型,在面對超過 5 個迭代週期的碎片化攻擊時,偵測成功率也下降了超過 70% [1]。

當安全狀態無法持久化,Agent 就患上了「安全失憶症」。它能記住任務的上下文,卻記不住風險的上下文。

如何建立貫穿生命週期的安全狀態?

要解決這個問題,我們需要重新思考 Agent 的核心架構。安全不應該是一個外掛的檢查站,而是一個內建的、有記憶的狀態機器。前述的 LoopHarness 論文提出了一個關鍵概念:「非衰減的循環狀態」(Non-Decaying Loop State)[1]。這意味著我們需要設計一個機制,讓安全相關的狀態能夠在 Agent 的每一次迭代中被持續追蹤、更新與累積。

這套機制的設計應包含幾個核心要素:

  1. 政策狀態(Policy State):這不僅僅是紀錄 Agent 的行為歷史,更是對其當前意圖、潛在風險和合規狀態的抽象表示。例如,當 Agent 開始頻繁查詢關於網路安全漏洞的資訊時,其政策狀態就應該從「一般資訊蒐集」轉變為「潛在安全研究」,並提高監控的敏感度。
  2. 風險累積(Risk Accumulation):系統需要一個量化模型來累積風險。單一低風險行為(例如,風險值 0.1)不應觸發警報,但連續 10 次這樣的行為可能會讓累積風險值超過預設的 0.8 閾值,從而觸發更深入的審查或人工介入 [1]。
  3. 狀態持久化(State Persistence):這個安全狀態必須與 Agent 的核心記憶體(如 LLM-powered Autonomous Agents 中探討的長期記憶)一樣持久。無論 Agent 休眠、重啟,或是任務切換,它的安全上下文都必須被完整保存和恢復。

將安全狀態提升為 Agent loop 的第一級設計,意味著每一次的行動決策,都不再是 is_safe(current_action) 這樣一個簡單的無狀態函數,而是 new_safety_state = update(previous_safety_state, current_action) 這樣一個有狀態的轉換。這種架構上的轉變,是我們從打造「工具型」AI 邁向建構可信任的「自主系統」所必須跨越的門檻。在一個 Agent 可以自主運作數天、數週甚至數月的未來,沒有持久化的安全記憶,任何防護都只是聊勝於無的安慰劑。

延伸閱讀

我是江中喬,專注於 AI Agent Architecture、Memory Governance 與 Cognitive Diversity,持續研究如何打造能夠長期協作、可信任且可治理的 AI 系統。