# 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）
