# ADR-122: OWASP Agentic AI Top 10 & ISO 42001 Alignment **狀態**:Accepted **日期**:2026-05-03(台北) **決策者**:統帥 **範圍**:行業標準映射到 AwoooP 控制項、合規差距識別 **關聯**:ADR-116(security hardening)、ADR-117(Confused Deputy)、ADR-120(budget) --- ## 背景 2025 年起,OWASP 發布了 **Agentic AI Top 10**(OAI-01 到 OAI-10),定義了 AI Agent 系統的十大安全風險。同期 ISO/IEC 42001(AI Management System Standard)也開始被企業採納。 AwoooP 作為 AI Agent 平台,需要對應這兩個標準,確保架構設計符合行業期望。本 ADR 記錄每個風險點的控制狀態。 --- ## OWASP Agentic AI Top 10 映射 ### OAI-01:Prompt Injection(提示注入) **風險**:攻擊者透過惡意 prompt 操控 Agent 行為。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Input sanitization | ⚠️ Partial | `decision_manager.py`(需加強)| | System prompt isolation | ⚠️ Partial | Agent contract `system_prompt` 欄位(Phase 3)| | Output validation | ✅ | `requires_approval` 改 policy-derived(ADR-116 D3)| | Injection detection pattern | ❌ TODO | Phase 5:injection pattern 規則庫 | **差距**:需要在 LLM input 加 injection pattern 偵測層。 --- ### OAI-02:Insecure Output Handling(不安全輸出處理) **風險**:Agent 輸出被用於執行命令而不驗證。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Tool call parameter validation | ⚠️ Partial | `mcp_bridge.py`(需加 schema 驗證)| | Output schema enforcement | ❌ TODO | Phase 3:Agent contract output_schema | | Structured output only(no free-form exec)| ✅ | MCP Gateway 強制 tool_id + params 結構 | --- ### OAI-03:Excessive Agency(過度授權) **風險**:Agent 被賦予超出必要的工具和資源存取權限。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Per-run allowed_tools allowlist | ✅ | ADR-117 D2 | | Agent contract tool restriction | ✅ | ADR-106(allowed_tools 欄位)| | HIGH risk tool requires approval | ✅ | ADR-116 D4 + ADR-117 | | Namespace restriction in K8s ops | ✅ | ADR-117 D2(contract-derived)| **狀態:COMPLIANT**(Phase 3 實作後) --- ### OAI-04:Resource Exhaustion(資源耗盡) **風險**:Agent 呼叫無限 LLM 或工具,耗盡計算/費用資源。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Token budget hard kill | ✅ | ADR-120 D2 | | LLM call count limit per run | ✅ | ADR-120 D6(llm_call_limit_per_run)| | Tenant budget isolation | ✅ | ADR-120 D1 | | Emergency kill switch | ✅ | ADR-120 D2 防線 3 | **狀態:COMPLIANT**(Phase 2 實作後) --- ### OAI-05:Supply Chain Vulnerabilities(供應鏈漏洞) **風險**:使用的 AI 模型、工具或 SDK 有未修補的漏洞。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Model version tracking | ✅ | `ai_provider_version_history` 表 | | Dependency scanning(pip-audit)| ⚠️ Partial | CI/CD 需要加入 pip-audit | | Container image scanning | ⚠️ Partial | Harbor 有 Trivy,但未開啟 | | SBOM generation | ❌ TODO | Phase 5 | **差距**:CI/CD 需要加入 pip-audit + Harbor Trivy 掃描啟用。 --- ### OAI-06:Data Privacy Violation(資料隱私違規) **風險**:Agent 處理或洩漏敏感使用者資料。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Tenant data isolation(RLS)| ✅ | ADR-118 | | PII detection before LLM | ❌ TODO | Phase 5:PII filter middleware | | Audit log for sensitive operations | ✅ | ADR-112 D7 | | K8s Secret 不進 DB | ✅ | INV-4 已確認 | **差距**:PII filter 在 Phase 5 實作,Phase 1~4 期間靠 RLS 隔離。 --- ### OAI-07:Memory Poisoning(記憶體污染) **風險**:攻擊者透過操控 Agent 記憶(KM)影響未來決策。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | KM write requires approval (HIGH risk) | ⚠️ Partial | `knowledge_write` 已在 approval gate(ADR-116 D3)| | KM entry source tracking | ✅ | `knowledge_entries.source` 欄位 | | KM poisoning detection | ❌ TODO | Phase 5:KM 異常寫入頻率監控 | | Human review for critical KM | ⚠️ Partial | 目前只有 approval,沒有 review UI | --- ### OAI-08:Unauthorized Actions(未授權操作) **風險**:Agent 在沒有授權的情況下執行影響系統的操作。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Principal mapping(who sent this run?)| ✅ | ADR-115(platform_subjects 表)| | Approval workflow | ✅ | ADR-114 + ADR-116 | | requires_approval not from LLM | ✅ | ADR-116 D3(P0-04 修補)| | SAGA compensation on rejection | ✅ | ADR-119 | **狀態:COMPLIANT**(Phase 2 實作後) --- ### OAI-09:Access Control Bypass(存取控制繞過) **風險**:攻擊者繞過 Agent 的存取控制機制。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | Callback nonce HMAC(防偽造)| ✅ | ADR-116 D1(P0-05 修補)| | Webhook replay 防護 | ✅ | ADR-116 D2(P0-06 修補)| | JWT / approval_token HS256 | ✅ | ADR-116 D4 | | RLS 防 cross-tenant | ✅ | ADR-118 | | Confused Deputy prevention | ✅ | ADR-117 D2 | **狀態:COMPLIANT**(Phase 2 實作後) --- ### OAI-10:Observability Deficiency(可觀測性不足) **風險**:AI Agent 的行為無法被審計和追蹤。 | 控制項 | 狀態 | 實作位置 | |--------|------|---------| | OTel GenAI spans | ✅ | ADR-121 | | run_id / trace_id 全鏈路 | ✅ | ADR-111(contextvars)| | Audit log for all contract ops | ✅ | ADR-112 D7 | | Token usage telemetry | ✅ | ADR-120 D2 + ADR-121 D2 | | Background loop 31 個 tagging | ⚠️ Partial | PR-10(Phase 2)| --- ## ISO 42001 映射 | 條款 | 要求 | AwoooP 控制項 | |------|------|-------------| | 6.1 風險評估 | AI 系統風險識別 | ADR 系列(111~124)= 正式風險評估文件 | | 6.2 目標與計畫 | AI 目標量化 | DETAILED-IMPLEMENTATION-PLAN Phase DoD | | 8.4 AI 系統生命週期 | 版本管理、審批流程 | ADR-112(contract governance)| | 9.1 監控與量測 | 效能指標追蹤 | ADR-121(OTel)+ SignOz dashboard | | 10.1 不符合項與矯正 | 問題追蹤與改善 | ADR + INV 系統 | --- ## 差距摘要(需後續 Phase 解決) | OWASP Item | 差距項目 | 目標 Phase | |-----------|---------|-----------| | OAI-01 | Injection detection pattern 規則庫 | Phase 5 | | OAI-02 | Agent contract output_schema 驗證 | Phase 3 | | OAI-05 | pip-audit CI + Harbor Trivy | Phase 4 | | OAI-06 | PII filter middleware | Phase 5 | | OAI-07 | KM 異常寫入頻率監控 | Phase 5 | | OAI-10 | 31 個 background loop tagging(PR-10)| Phase 2 | --- ## 驗收標準 - [ ] OWASP OAI-03/04/08/09:Phase 2 實作後 vuln-verifier PoC 全過 - [ ] OWASP OAI-10:31 個 background loop 全部 tagged(PR-10 完成) - [ ] ISO 42001 映射表展示給統帥確認(Phase 2 收尾) - [ ] 差距清單進入 Phase 4/5 backlog ## 關聯 - ADR-116(security hardening,P0-04/05/06) - ADR-117(Confused Deputy,OAI-03/09) - ADR-118(RLS,OAI-06/09) - ADR-119(SAGA,OAI-08) - ADR-120(budget hard kill,OAI-04) - ADR-121(OTel,OAI-10)