Microsoft Defender 研究團隊在 2026 年 5 月公開一個很有警示性的案例:Semantic Kernel 裡的漏洞,能讓 prompt injection 從「內容被誘導」變成「主機層級執行風險」。
這個案例應該放進所有 AI agent 團隊的 threat model。
因為 agent 不只是回文字。它會讀檔、查資料庫、跑程式、呼叫 plugin、存取內部系統。當模型輸出的工具參數被框架信任,prompt injection 就可能變成真正的 execution primitive。
發生了什麼事?
Microsoft 研究聚焦 Semantic Kernel,公開兩個已修補漏洞:
| 漏洞 | 風險重點 |
|---|---|
| CVE-2026-26030 | In-Memory Vector Store 搜尋外掛的預設 filter 設計可能讓 prompt-controlled input 進入可執行路徑 |
| CVE-2026-25592 | SessionsPythonPlugin 中特定檔案處理函式可能讓模型控制 host 端檔案路徑 |
第一個案例裡,攻擊者需要能影響 prompt,而且 agent 使用 Python semantic-kernel 低於 1.39.4,並搭配 In-Memory Vector Store 的 Search Plugin 預設設定。
在這些條件同時成立時,模型控制的參數可能進入動態 filter,最後造成 RCE。
第二個案例更像 sandbox 邊界問題。原本 agent 可以在隔離環境跑 Python,但檔案下載函式被暴露成模型可呼叫工具後,local file path 變成模型可控,進而造成任意檔案寫入風險。
為什麼這不是「模型問題」?
這裡真正的問題不是 LLM 想攻擊你。
問題在架構:
- 外部內容影響 prompt。
- 模型把自然語言解析成工具呼叫。
- Framework 把模型輸出的參數傳給 plugin。
- Plugin 或框架沒有把參數視為不可信輸入。
- 參數碰到 eval、檔案路徑、shell、SQL、瀏覽器、內部 API 等危險 sink。
只要 agent 能碰工具,prompt injection 就不能只用「內容安全」處理。
它必須被當成 software supply chain、input validation、sandbox escape、least privilege 的綜合問題。
受影響團隊該做什麼?
如果你使用 Semantic Kernel,第一步是盤點版本與用法。
Microsoft 提到 CVE-2026-26030 的修補方式是升級 Python semantic-kernel 到 1.39.4 或更高版本。
但長期來看,不能只靠升級。
你需要檢查:
- Agent 是否有 Search Plugin、code execution、file operation、browser action。
- Tool schema 是否允許過寬參數。
- 是否有 eval、dynamic code、shell command、任意 path。
- 工具輸入是否做 allowlist。
- Agent host 是否有過大權限。
- 是否有 endpoint telemetry、process tree、outbound connection log。
- Prompt injection 測試是否進 CI。
工具參數要當成不可信輸入
很多團隊現在還把 agent tool call 當成「模型懂了我的意思,所以可以照做」。
這是危險假設。
比較正確的做法是:
| 類型 | 建議 |
|---|---|
| 檔案路徑 | 限制在工作目錄,禁止絕對路徑與上層路徑 |
| 搜尋 filter | 用結構化查詢 builder,不拼字串,不 eval |
| shell 指令 | 能不用就不用,必要時只允許固定命令與固定參數 |
| API 操作 | 按任務拆最小權限 token |
| 高風險動作 | 加人工確認、審計與回滾 |
Agent 的工具層要像傳統後端 API 一樣嚴格,不是像 prompt 補充說明一樣寬鬆。
這和 RAMPART、Clarity 的關係
Microsoft 同月也開源 RAMPART 與 Clarity,方向其實一致。
Semantic Kernel RCE 案例告訴我們:agent framework 會出現新型漏洞。
RAMPART 和 Clarity 則回答另一個問題:這些漏洞不能只靠一次性修補,應該變成可重複測試、可記錄、可審查的工程流程。
例如一次 red-team 發現「外部文件能誘導 agent 寫檔」,修完後就該把這個情境變成 regression test。
結論
Prompt injection 已經不是「使用者騙模型講錯話」。
在 agent framework 裡,它可能變成工具參數注入、檔案操作、sandbox escape,甚至 host-level RCE。
所有把 LLM 接到工具的團隊,都要把模型輸出視為不可信輸入。這不是保守,是 2026 年 agent 開發的基本線。