代理框架安全
主流 AI 代理框架的安全分析,涵蓋 LangChain、CrewAI、AutoGen、Semantic Kernel 與 OpenAI Assistants,包括預設組態、常見漏洞與框架特有攻擊面。
代理框架安全
代理框架把打造 AI 代理的複雜度抽象化——工具註冊、記憶體管理、對話流程、多步推理。此抽象是雙面刃:框架讓打造強大代理變得容易,但也讓打造不安全代理變得容易。預設組態以開發者體驗優先於安全;社群貢獻的元件鮮少被稽核;框架本身的漏洞會傳播至每個建構於其上的應用。
框架地景
截至 2026 年初主要的代理框架:
| 框架 | 維護方 | 主要用途 | 代理模式 |
|---|---|---|---|
| LangChain / LangGraph | LangChain Inc. | 通用代理開發 | Chain、graph、ReAct 代理 |
| CrewAI | CrewAI Inc. | 多代理協作 | 以角色為本、可委派任務的 crew |
| AutoGen | Microsoft | 多代理對話 | 可交談代理 + 群組聊天 |
| Semantic Kernel | Microsoft | 企業 AI 整合 | 以外掛為本 + planner |
| OpenAI Assistants | OpenAI | 託管代理部署 | 具託管狀態的 assistants |
各框架共通的安全問題
儘管架構不同,所有主要框架皆具備相近的安全問題:
1. 危險的預設值
框架出貨時的預設值以「快速上手」為目標,而非安全:
| 框架 | 危險預設 | 影響 |
|---|---|---|
| LangChain | PythonREPLTool 可用但無沙箱 | 於主機上任意執行程式 |
| CrewAI | 代理可將任務委派給任何其他代理 | 代理間不可控的橫向移動 |
| AutoGen | code_execution_config 啟用本地程式執行 | 若未正確沙箱化可容器逃逸 |
| Semantic Kernel | Auto-invoke 模式不需確認即呼叫函式 | 敏感操作無人員環節 |
| OpenAI Assistants | Code Interpreter 預設具網路存取 | 經由程式執行外洩資料 |
2. 隱含信任工具輸出
沒有任一主流框架預設將工具輸出視為不可信。當工具回傳資料時,該資料以與系統指令相同的優先度進入代理上下文。這是每個框架中 confused deputy 漏洞的根源。
3. 未稽核的社群元件
LangChain 有 800+ 社群整合。CrewAI 有成長中的工具市集。這些元件鮮少經安全稽核:
- 社群工具可能執行任意程式、發出網路請求或存取檔案系統
- 工具描述(模型會將其視為指令讀取)可能含無意或惡意的注入內容
- 社群工具的相依可能引入供應鏈漏洞
4. 無存取控管的記憶體
所有支援記憶體的框架(LangChain、CrewAI、AutoGen、Semantic Kernel)皆將對話歷史與學到的偏好儲存起來,卻無細膩存取控管。沒有標準機制能:
- 區分系統層級與使用者層級記憶
- 防止工具輸出被儲存為記憶
- 加密敏感記憶內容
- 於多租戶部署中強制記憶隔離
各框架特有漏洞
LangChain / LangGraph
LangChain 龐大的抽象層製造大攻擊面。主要疑慮:
- Chain 組合攻擊 —— 元件間直接傳遞輸出而未消毒的 chain
- Callback 利用 —— 會於每次代理行動(含工具呼叫)時執行的自製 callback
- Hub 提示風險 —— LangChain Hub 提示為社群貢獻,可能含注入
- Agent executor 迴圈 —— 預設
max_iterations過寬,易導致資源耗盡
詳見 LangChain 安全深入解析。
CrewAI 與 AutoGen
多代理框架引入代理間攻擊面:
- 角色操弄 —— 具定義角色的代理可被說服越出其角色
- 代理間注入 —— 代理 A 的輸出是代理 B 的輸入,形成注入鏈
- 委派濫用 —— 階層式委派可被利用以提權
OpenAI Assistants
託管平台有其獨有疑慮:
- 檔案搜尋利用 —— 上傳檔案可能含注入 payload
- Code interpreter 濫用 —— 雖沙箱化,仍可進行資料處理與外洩
- Thread 注入 —— 加入 thread 的訊息可汙染上下文
Semantic Kernel
以企業為焦點,但並非免疫:
- 外掛信任模型 —— 所有已註冊外掛同等受信任
- Planner 操弄 —— AI planner 可被引導以非預期順序呼叫外掛
- Connector 利用 —— 資料庫與 API connector 會傳入由模型產生的查詢
評估方法論
辨識框架與版本
判定使用何種框架及其確切版本。檢查該版本的已知 CVE 與資安公告。
稽核預設組態
將代理組態與框架預設對照。辨識任何未被覆蓋的危險預設(程式執行、不受限工具存取、開放委派)。
列舉已註冊工具與元件
列出代理註冊的所有工具、外掛、chain 或整合。辨識社群貢獻與原廠元件。稽核工具描述是否含注入內容。
測試工具輸出處理
經由工具結果注入對抗內容,觀察代理是否遵循被注入之指令。此測試框架的(缺乏)輸出消毒。
測試記憶隔離
若應用為多租戶,測試某使用者的記憶是否可被另一使用者存取。測試工具輸出是否未消毒即存入記憶。
測試框架特有攻擊面
套用框架特有測試:LangChain 的 chain 組合、CrewAI/AutoGen 的代理間注入、OpenAI Assistants 的檔案搜尋投毒。
依安全需求選擇框架
關於跨框架安全特性的詳盡比較,請見安全比較矩陣。
相關主題
- LangChain 安全深入解析 -- 詳細 LangChain 漏洞分析
- CrewAI 與 AutoGen 安全 -- 多代理框架安全
- OpenAI Assistants API 安全 -- 託管平台安全
- 安全比較矩陣 -- 並列框架比較
- 函式呼叫攻擊 -- 適用所有框架的工具呼叫攻擊
跨多個代理框架共通、最危險的預設組態模式為何?
參考資料
- LangChain Security Documentation(2025)
- Microsoft AutoGen Security Considerations(2024)
- OpenAI Assistants API Documentation(2025)
- OWASP Top 10 for LLM Applications v2.0
- CrewAI Documentation(2025)