Skip to content

Commit a07d692

Browse files
kevinondanetclaude
andcommitted
docs(compliance): correct stale evidence and ratings in OWASP ASI mapping
A source-level sweep of the ASI01-ASI10 mapping found the compliance doc had drifted from the code in both directions: - ASI06 understated: cited agent_os/audit/hash_chain.py (does not exist) and claimed no dedicated module, while MemoryGuard, agent-rag-governance, and the TypeScript ContextPoisoningDetector ship today. Evidence and mitigation text now reference the real modules. - ASI05 overstated: no lint rule blocks eval()/exec() (the reviewer's 18 rules cover unsafe pickle, and the sandbox scanner targets process spawning only). Downgraded to Partial with an accurate Known Gap. - ASI07 cited agent_os/trust/gate.py (does not exist); now points at the agent-mesh DID handshake and the A2A trust gate. - ASI04 claimed no SBOM generation exists, but .github/workflows/sbom.yml covers AGT's own releases (as the physical profile already noted); the Known Gap now scopes it to governed-application runtime SBOMs. - AGT traceability extension cited the same dead hash_chain.py path; now points at the chained audit loggers in the agentmesh integrations. Coverage summary updated to 6/10 Full, 4/10 Partial. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RZS152tpaHAhzA2BpAdyN
1 parent b570558 commit a07d692

1 file changed

Lines changed: 59 additions & 26 deletions

File tree

docs/compliance/owasp-agentic-top10-architecture.md

Lines changed: 59 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: OWASP Agentic Security Initiative Reference Architecture
3-
last_reviewed: 2026-07-11
3+
last_reviewed: 2026-08-25
44
owner: agt-maintainers
55
---
66

@@ -12,7 +12,7 @@ owner: agt-maintainers
1212
> **Disclaimer**: This document is an internal self-assessment mapping, NOT a validated certification or third-party audit. It documents how the toolkit's capabilities align with the referenced standard. Organizations must perform their own compliance assessments with qualified auditors.
1313
1414

15-
> **Version:** 1.1 · **Taxonomy:** OWASP Top 10 for Agentic Applications 2026 (ASI01–ASI10), plus an AGT traceability extension
15+
> **Version:** 1.2 · **Taxonomy:** OWASP Top 10 for Agentic Applications 2026 (ASI01–ASI10), plus an AGT traceability extension
1616
> **Scope:** Agent Governance Toolkit (AGT) mitigation patterns, code evidence, and gap analysis.
1717
1818
---
@@ -33,16 +33,16 @@ it is not an eleventh entry in the official OWASP list.
3333
| ASI01 | Agent Goal Hijack | ✅ Full | ACS input annotators and policy bindings |
3434
| ASI02 | Tool Misuse and Exploitation | ✅ Full | ACS tool catalog and `AgentControl.runTool` |
3535
| ASI03 | Identity and Privilege Abuse | ✅ Full | ACS labels, identity binding, and host RBAC |
36-
| ASI04 | Agentic Supply Chain | ⚠️ Partial | Policy YAML tool pinning; no SBOM |
37-
| ASI05 | Unexpected Code Execution | ✅ Full | Static reviewer detects pickle/eval |
38-
| ASI06 | Memory and Context Poisoning | ⚠️ Partial | Audit hash-chain; no memory sandbox |
36+
| ASI04 | Agentic Supply Chain | ⚠️ Partial | Tool pinning, marketplace signing; release SBOM only |
37+
| ASI05 | Unexpected Code Execution | ⚠️ Partial | Reviewer detects unsafe pickle; sandbox scanner blocks subprocess |
38+
| ASI06 | Memory and Context Poisoning | ⚠️ Partial | `MemoryGuard`, RAG governor, context-poisoning detector |
3939
| ASI07 | Insecure Inter-Agent Communication | ✅ Full | Trust-gate with DID verification |
4040
| ASI08 | Cascading Agent Failures | ✅ Full | Circuit breaker, rate limiter |
4141
| ASI09 | Human-Agent Trust Exploitation | ⚠️ Partial | Audit trail; no UI-level guardrails |
4242
| ASI10 | Rogue Agents | ✅ Full | `AgentBehaviorMonitor`, quarantine |
4343
| AGT extension | Agent Traceability | ✅ Full | Tamper-evident audit log (hash chain) |
4444

45-
**Official ASI coverage: 7/10 Full, 3/10 Partial, 0 Gaps.**
45+
**Official ASI coverage: 6/10 Full, 4/10 Partial, 0 Gaps.**
4646

4747
---
4848

@@ -130,14 +130,24 @@ hosts can audit transforms and approval decisions.
130130
**Risk:** Compromised plugins or sub-agents inject malicious behaviour.
131131

132132
**AGT Mitigation:** Policy YAML `allowed_tools` pins the exact set of
133-
permitted tool IDs. The static reviewer detects hardcoded deny-lists (which
134-
attackers can reverse-engineer) and recommends externalised config.
135-
136-
**Known Gap:** No SBOM generation or dependency vulnerability scanning is
137-
built into AGT. Recommend integrating with GitHub Advanced Security /
138-
Dependabot for dependency-level supply-chain coverage.
133+
permitted tool IDs. The marketplace installer verifies Ed25519 signatures
134+
against a trusted-key registry before installing plugins, and
135+
`MCPSecurityScanner` fingerprints MCP tool definitions to detect
136+
post-registration mutation. The static reviewer detects hardcoded deny-lists
137+
(which attackers can reverse-engineer) and recommends externalised config.
138+
AGT's own release pipeline generates SBOMs for toolkit artifacts.
139+
140+
**Known Gap:** SBOM generation covers only AGT's own releases; nothing in the
141+
SDKs generates an SBOM/AIBOM for a governed application's runtime component
142+
set. Dependency vulnerability scanning is delegated to GitHub Advanced
143+
Security / Dependabot. Marketplace signing uses a local trusted-key
144+
dictionary with no revocation or transparency-log integration, and MCP tool
145+
fingerprints are trust-on-first-use.
139146

140147
**Evidence:**
148+
- `agent-governance-python/agent-marketplace/src/agent_marketplace/installer.py` — Ed25519 signature verification
149+
- `agent-governance-python/agent-os/src/agent_os/mcp_security.py` — MCP tool fingerprinting
150+
- `.github/workflows/sbom.yml` — release SBOM generation
141151
- `agent-governance-python/agentmesh-integrations/copilot-governance/src/reviewer.ts` — rule `hardcoded-security-denylist`
142152
- Policy YAML schema: `allowed_tools`, `blocked_tools`
143153

@@ -150,29 +160,49 @@ Dependabot for dependency-level supply-chain coverage.
150160
**Risk:** Agent-driven code paths achieve arbitrary code execution.
151161

152162
**AGT Mitigation:** The static reviewer detects `pickle.loads()` without HMAC
153-
verification and flags it as critical. The governance policy blocks `eval()`
154-
and `exec()` in agent code via lint rules.
163+
verification and flags it as critical. The agent-sandbox static scanner
164+
blocks `subprocess`, `os.exec*`, and `pty.spawn` patterns before sandboxed
165+
code runs, and a hardened sandbox container image provides
166+
defense-in-depth when policy requires command-denylist enforcement.
167+
168+
**Known Gap:** No shipped rule detects Python's `eval()`, `exec()`, or
169+
`compile()` builtins — the reviewer's rules cover unsafe deserialization
170+
but not eval/exec, and the sandbox scanner targets process-spawning
171+
patterns only. Text-pattern command blocking at the CLI-hook layer is a
172+
guardrail, not a security boundary; the hardened sandbox image closes this
173+
but is opt-in.
155174

156175
**Evidence:**
157176
- `agent-governance-python/agentmesh-integrations/copilot-governance/src/reviewer.ts` — rule `unsafe-deserialization`
177+
- `agent-governance-python/agent-sandbox/src/agent_sandbox/code_scanner.py` — pre-execution subprocess denial
178+
- `agent-governance-python/agent-sandbox/docker/Dockerfile.sandbox` — hardened sandbox image
158179

159-
**Coverage:** ✅ Full
180+
**Coverage:** ⚠️ Partial
160181

161182
---
162183

163184
### ASI06 — Memory and Context Poisoning
164185

165186
**Risk:** Persistent memory stores are manipulated to corrupt future decisions.
166187

167-
**AGT Mitigation:** The audit hash-chain provides tamper detection for any
168-
persisted state. However, AGT does not yet sandbox agent memory stores or
169-
provide memory integrity checksums at the application layer.
188+
**AGT Mitigation:** `MemoryGuard` validates agent memory writes and flags
189+
tampering and dangerous content, including mixed-script (homoglyph-style)
190+
injection. The agent-rag-governance package screens retrieved content
191+
(`ContentScanner`) and governs retrieval with provenance labels
192+
(`RAGGovernor`). The TypeScript SDK ships a `ContextPoisoningDetector` for
193+
accumulated-context screening.
170194

171-
**Known Gap:** No dedicated memory-sandbox or context-integrity module.
172-
Consider adding a `ContextValidator` that hashes memory snapshots.
195+
**Known Gap:** The policy-engine spec defines no memory-write or retrieval
196+
intervention points, so these controls live in SDK code and cannot be
197+
expressed as policy manifests. Go, Rust, and .NET SDKs have no
198+
MemoryGuard/ContextPoisoningDetector equivalent, and detection is
199+
regex/heuristic with caller-asserted (not cryptographically attested)
200+
provenance labels.
173201

174202
**Evidence:**
175-
- `agent-governance-python/agent-os/src/agent_os/audit/hash_chain.py`
203+
- `agent-governance-python/agent-os/src/agent_os/memory_guard.py`
204+
- `agent-governance-python/agent-rag-governance/src/agent_rag_governance/content_scanner.py`
205+
- `agent-governance-typescript/src/context-poisoning.ts`
176206

177207
**Coverage:** ⚠️ Partial
178208

@@ -187,7 +217,8 @@ before any agent-to-agent handoff. The static reviewer detects missing trust
187217
verification in multi-agent orchestration code.
188218

189219
**Evidence:**
190-
- `agent-governance-python/agent-os/src/agent_os/trust/gate.py`
220+
- `agent-governance-python/agent-mesh/src/agentmesh/trust/handshake.py` — DID-based challenge-response handshake
221+
- `agent-governance-python/agentmesh-integrations/a2a-protocol/a2a_agentmesh/trust_gate.py` — A2A handoff trust gate
191222
- `agent-governance-python/agentmesh-integrations/copilot-governance/src/reviewer.ts` — rule `missing-trust-verification`
192223

193224
**Coverage:** ✅ Full
@@ -248,16 +279,18 @@ exceed thresholds.
248279

249280
**Risk:** Agent actions lack logging, provenance, or audit trails.
250281

251-
**AGT Mitigation:** The audit middleware produces a hash-chain log where each
252-
entry contains the SHA-256 of the previous entry, making tampering detectable.
253-
The static reviewer flags code without audit logging.
282+
**AGT Mitigation:** The agentmesh integration audit loggers (Haystack,
283+
Flowise, Langflow, OpenAI Agents) produce hash-chain logs where each entry
284+
contains the SHA-256 of the previous entry, making tampering detectable and
285+
verifiable. The static reviewer flags code without audit logging.
254286

255287
**Taxonomy note:** Traceability supports mitigation across the official ASI
256288
risks, especially ASI02, ASI08, ASI09, and ASI10. It is an AGT control
257289
objective, not an official `ASI11` entry in the 2026 OWASP Top 10.
258290

259291
**Evidence:**
260-
- `agent-governance-python/agent-os/src/agent_os/audit/hash_chain.py`
292+
- `agent-governance-python/agentmesh-integrations/haystack-agentmesh/src/haystack_agentmesh/audit.py` — chained entries with `verify_chain()`
293+
- `agent-governance-python/agentmesh-integrations/openai-agents-trust/src/openai_agents_trust/audit.py``previous_hash` chaining
261294
- `agent-governance-python/agentmesh-integrations/copilot-governance/src/reviewer.ts` — rule `missing-audit-logging`
262295

263296
**Coverage:** ✅ Full

0 commit comments

Comments
 (0)