agent-threat-rules 4.1.5 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +688 -1
- package/README.md +355 -125
- package/dist/adapters/openshell-filter.d.ts +10 -3
- package/dist/adapters/openshell-filter.d.ts.map +1 -1
- package/dist/adapters/openshell-filter.js +10 -3
- package/dist/adapters/openshell-filter.js.map +1 -1
- package/dist/adapters/stdio-adapter.js +3 -3
- package/dist/adapters/stdio-adapter.js.map +1 -1
- package/dist/cli/mcp-tools-document.d.ts +40 -0
- package/dist/cli/mcp-tools-document.d.ts.map +1 -0
- package/dist/cli/mcp-tools-document.js +95 -0
- package/dist/cli/mcp-tools-document.js.map +1 -0
- package/dist/cli/scan-handler.d.ts +8 -0
- package/dist/cli/scan-handler.d.ts.map +1 -1
- package/dist/cli/scan-handler.js +126 -34
- package/dist/cli/scan-handler.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +80 -43
- package/dist/cli.js.map +1 -1
- package/dist/converters/sarif.d.ts +14 -2
- package/dist/converters/sarif.d.ts.map +1 -1
- package/dist/converters/sarif.js +7 -9
- package/dist/converters/sarif.js.map +1 -1
- package/dist/corpus-event.d.ts +47 -5
- package/dist/corpus-event.d.ts.map +1 -1
- package/dist/corpus-event.js +68 -29
- package/dist/corpus-event.js.map +1 -1
- package/dist/embedding/model-loader.d.ts +2 -0
- package/dist/embedding/model-loader.d.ts.map +1 -1
- package/dist/embedding/model-loader.js +3 -1
- package/dist/embedding/model-loader.js.map +1 -1
- package/dist/enforcement.d.ts +8 -0
- package/dist/enforcement.d.ts.map +1 -1
- package/dist/enforcement.js +10 -0
- package/dist/enforcement.js.map +1 -1
- package/dist/engine.d.ts +150 -6
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +337 -76
- package/dist/engine.js.map +1 -1
- package/dist/eval/embedding-provenance.d.ts +40 -0
- package/dist/eval/embedding-provenance.d.ts.map +1 -0
- package/dist/eval/embedding-provenance.js +71 -0
- package/dist/eval/embedding-provenance.js.map +1 -0
- package/dist/eval/eval-harness.d.ts +34 -0
- package/dist/eval/eval-harness.d.ts.map +1 -1
- package/dist/eval/eval-harness.js +49 -2
- package/dist/eval/eval-harness.js.map +1 -1
- package/dist/eval/hackaprompt-corpus.d.ts +12 -0
- package/dist/eval/hackaprompt-corpus.d.ts.map +1 -1
- package/dist/eval/hackaprompt-corpus.js +15 -1
- package/dist/eval/hackaprompt-corpus.js.map +1 -1
- package/dist/eval/hackaprompt-provenance.d.ts +52 -0
- package/dist/eval/hackaprompt-provenance.d.ts.map +1 -0
- package/dist/eval/hackaprompt-provenance.js +108 -0
- package/dist/eval/hackaprompt-provenance.js.map +1 -0
- package/dist/eval/run-hackaprompt-benchmark.d.ts +18 -8
- package/dist/eval/run-hackaprompt-benchmark.d.ts.map +1 -1
- package/dist/eval/run-hackaprompt-benchmark.js +154 -64
- package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
- package/dist/eval/run-pint-benchmark.js +11 -1
- package/dist/eval/run-pint-benchmark.js.map +1 -1
- package/dist/eval/skill-benchmark.d.ts +26 -6
- package/dist/eval/skill-benchmark.d.ts.map +1 -1
- package/dist/eval/skill-benchmark.js +49 -16
- package/dist/eval/skill-benchmark.js.map +1 -1
- package/dist/flywheel.d.ts +4 -0
- package/dist/flywheel.d.ts.map +1 -1
- package/dist/flywheel.js +12 -4
- package/dist/flywheel.js.map +1 -1
- package/dist/hook-handler.d.ts +11 -1
- package/dist/hook-handler.d.ts.map +1 -1
- package/dist/hook-handler.js +84 -16
- package/dist/hook-handler.js.map +1 -1
- package/dist/hook-tool-output.d.ts +47 -0
- package/dist/hook-tool-output.d.ts.map +1 -0
- package/dist/hook-tool-output.js +110 -0
- package/dist/hook-tool-output.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/layer-integration.d.ts +4 -2
- package/dist/layer-integration.d.ts.map +1 -1
- package/dist/layer-integration.js +6 -2
- package/dist/layer-integration.js.map +1 -1
- package/dist/mcp-server.d.ts +8 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +1 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/scan.d.ts.map +1 -1
- package/dist/mcp-tools/scan.js +9 -1
- package/dist/mcp-tools/scan.js.map +1 -1
- package/dist/measurement/enforce-lane.d.ts +66 -0
- package/dist/measurement/enforce-lane.d.ts.map +1 -0
- package/dist/measurement/enforce-lane.js +89 -0
- package/dist/measurement/enforce-lane.js.map +1 -0
- package/dist/measurement/from-eval-harness.d.ts +16 -3
- package/dist/measurement/from-eval-harness.d.ts.map +1 -1
- package/dist/measurement/from-eval-harness.js +15 -5
- package/dist/measurement/from-eval-harness.js.map +1 -1
- package/dist/measurement/in-sample-ablation.d.ts +29 -0
- package/dist/measurement/in-sample-ablation.d.ts.map +1 -0
- package/dist/measurement/in-sample-ablation.js +45 -0
- package/dist/measurement/in-sample-ablation.js.map +1 -0
- package/dist/measurement/schema.d.ts +38 -1
- package/dist/measurement/schema.d.ts.map +1 -1
- package/dist/measurement/schema.js +43 -1
- package/dist/measurement/schema.js.map +1 -1
- package/dist/quality/action-eligibility.d.ts +4 -2
- package/dist/quality/action-eligibility.d.ts.map +1 -1
- package/dist/quality/action-eligibility.js.map +1 -1
- package/dist/rule-confidence.d.ts +31 -0
- package/dist/rule-confidence.d.ts.map +1 -0
- package/dist/rule-confidence.js +49 -0
- package/dist/rule-confidence.js.map +1 -0
- package/dist/rule-scaffolder.d.ts.map +1 -1
- package/dist/rule-scaffolder.js +43 -4
- package/dist/rule-scaffolder.js.map +1 -1
- package/dist/semantic-evaluator.d.ts.map +1 -1
- package/dist/semantic-evaluator.js +15 -13
- package/dist/semantic-evaluator.js.map +1 -1
- package/dist/shadow-evaluator.d.ts +7 -2
- package/dist/shadow-evaluator.d.ts.map +1 -1
- package/dist/shadow-evaluator.js +29 -25
- package/dist/shadow-evaluator.js.map +1 -1
- package/dist/testcase-event.d.ts +82 -1
- package/dist/testcase-event.d.ts.map +1 -1
- package/dist/testcase-event.js +135 -16
- package/dist/testcase-event.js.map +1 -1
- package/dist/tier0-invariant.d.ts.map +1 -1
- package/dist/tier0-invariant.js +1 -0
- package/dist/tier0-invariant.js.map +1 -1
- package/dist/tier1-blacklist.d.ts.map +1 -1
- package/dist/tier1-blacklist.js +1 -0
- package/dist/tier1-blacklist.js.map +1 -1
- package/dist/tool-definition-scope.d.ts +45 -0
- package/dist/tool-definition-scope.d.ts.map +1 -0
- package/dist/tool-definition-scope.js +68 -0
- package/dist/tool-definition-scope.js.map +1 -0
- package/dist/types.d.ts +42 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/verdict.d.ts +46 -2
- package/dist/verdict.d.ts.map +1 -1
- package/dist/verdict.js +99 -14
- package/dist/verdict.js.map +1 -1
- package/package.json +2 -1
- package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +2 -2
- package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00418-weknora-mcp-config-rce.yaml +5 -5
- package/rules/agent-manipulation/ATR-2026-00432-superagi-output-handler-eval-rce.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +3 -3
- package/rules/context-exfiltration/ATR-2026-00426-nl-output-injection-credential-leak.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00851-indirect-pi-financial-payment-exfil.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-01457-sysprompt-completion-clone-attack.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-01462-sysprompt-override-pseudo-admin.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-01463-imend-imsystem-prompt-injection-format.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-02847-policy-justified-exfil-to-email.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-02855-cross-email-exfil-relay.yaml +79 -0
- package/rules/context-exfiltration/ATR-2026-02861-exfil-send-email-with-body-directive.yaml +83 -0
- package/rules/context-exfiltration/ATR-2026-02866-idna-label-separator-in-fetch-url-host.yaml +104 -0
- package/rules/excessive-autonomy/ATR-2026-00710-ipi-physical-access-grant.yaml +1 -1
- package/rules/model-abuse/ATR-2026-01897-host-sabotage.yaml +2 -2
- package/rules/model-security/ATR-2026-00433-modelcache-torch-load-deserialization-rce.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00436-enclave-vm-sandbox-escape-rce.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +2 -2
- package/rules/privilege-escalation/ATR-2026-01612-debug-mode-privilege-escalation.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-02867-identifier-typed-tool-argument-dot-dot-path-segment.yaml +106 -0
- package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00203-context-pollution-skill-description.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +4 -4
- package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-00446-variable-assignment-payload-injection.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00476-garak-web-injection-javascript-alert-1.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00481-garak-dan-mixedunassigned.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00489-garak-encoding-javascript-alert-1.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00508-escape-delimiter-wrapped-goal-hijacking-in-user-input-prompt.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-01005-many-shot-repetition-override.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-01006-payload-split-string-concat-injection.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-01015-evasion-refusal-suppression.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-01016-evasion-response-priming-forced-opener.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-01026-evasion-unicode-glitch-token-anomaly.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-01304-indirect-injection-carrier-important-override.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-01759-dos-new-important-instructions-injection-in-document.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-01865-llmail-fake-email-boundary-marker.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-02010-emoji-only-payload.yaml +2 -2
- package/rules/prompt-injection/ATR-2026-02815-injected-halt-order-canned-reply-dos.yaml +80 -0
- package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +106 -0
- package/rules/prompt-injection/ATR-2026-02858-context-suppression-directive.yaml +73 -0
- package/rules/prompt-injection/ATR-2026-02859-tool-output-agent-role-reassignment.yaml +71 -0
- package/rules/prompt-injection/ATR-2026-02860-forged-instruction-boundary-marker.yaml +70 -0
- package/rules/prompt-injection/ATR-2026-02862-fake-chat-template-turn-injection.yaml +79 -0
- package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +2 -2
- package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +2 -2
- package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +6 -6
- package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +2 -2
- package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-02261-code-credential-exfil-chain.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +23 -23
- package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +16 -5
- package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +4 -4
- package/rules/tool-poisoning/ATR-2026-00581-mcp-tool-rug-pull-post-approval-redefinition.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +2 -2
- package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-01932-shadow-undeclared-mcp-server-registration.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-02025-mcp-full-schema-poisoning-nondescription-field.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-02817-untrusted-content-dictates-tool-arguments.yaml +83 -0
- package/rules/tool-poisoning/ATR-2026-02864-non-canonical-ipv4-host-in-url-tool-argument.yaml +102 -0
- package/rules/tool-poisoning/ATR-2026-02865-read-only-utility-write-flag-in-command-argument.yaml +157 -0
- package/rules/tool-poisoning/ATR-2026-02868-ssrf-ipv6-transition-address-embedded-private-ipv4.yaml +107 -0
- package/spec/README.md +6 -3
- package/spec/atr-event-v1.0.md +13 -8
- package/spec/atr-method-v1.1.md +2 -2
- package/spec/category-registry/gemara/README.md +102 -0
- package/spec/category-registry/gemara/ai-agent-capability-catalog.yaml +157 -0
- package/spec/category-registry/gemara/atr-attack-vector-catalog.yaml +130 -0
- package/spec/category-registry/gemara/atr-detection-control-catalog.yaml +327 -0
- package/spec/category-registry/gemara/atr-threat-catalog.yaml +246 -0
- package/spec/category-registry/gemara/src/editorial.yaml +743 -0
- package/spec/mappings/README.md +1 -1
- package/spec/mappings/atr-to-nist-csf-2.0.md +5 -4
- package/spec/schema/event.schema.json +1 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-gemara-catalogs.ts. Do not edit by hand.
|
|
2
|
+
# Inputs: spec/category-registry/v1.0.yaml (the category registry) and
|
|
3
|
+
# spec/category-registry/gemara/src/editorial.yaml
|
|
4
|
+
# Regenerate: npx tsx scripts/generate-gemara-catalogs.ts
|
|
5
|
+
# License: MIT
|
|
6
|
+
metadata:
|
|
7
|
+
id: ATR-AI-AGENT-THREAT-CATALOG
|
|
8
|
+
type: ThreatCatalog
|
|
9
|
+
gemara-version: 1.6.0
|
|
10
|
+
version: 1.0.0
|
|
11
|
+
description: >-
|
|
12
|
+
Threats to an organization operating AI agents, written at the level of what
|
|
13
|
+
goes wrong and why it matters. Each threat names the capabilities that
|
|
14
|
+
create the opportunity for it and the attack vectors through which it is
|
|
15
|
+
realized. The counts deliberately do not line up: several vectors reach the
|
|
16
|
+
same impact, and one vector reaches more than one.
|
|
17
|
+
author:
|
|
18
|
+
id: atr
|
|
19
|
+
name: Agent Threat Rules
|
|
20
|
+
type: Software Assisted
|
|
21
|
+
contact:
|
|
22
|
+
name: ATR maintainers
|
|
23
|
+
affiliation: Agent Threat Rules
|
|
24
|
+
email: adam@agentthreatrule.org
|
|
25
|
+
mapping-references:
|
|
26
|
+
- id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
27
|
+
title: AI Agent Capability Catalog
|
|
28
|
+
version: 1.0.0
|
|
29
|
+
url: file://./ai-agent-capability-catalog.yaml
|
|
30
|
+
description: >-
|
|
31
|
+
Capabilities of AI agent systems that create the opportunity for these
|
|
32
|
+
threats.
|
|
33
|
+
- id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
34
|
+
title: AI Agent Attack Vector Catalog (ATR)
|
|
35
|
+
version: 1.0.0
|
|
36
|
+
url: file://./atr-attack-vector-catalog.yaml
|
|
37
|
+
description: >-
|
|
38
|
+
Methods by which these threats are realized, corresponding to ATR's
|
|
39
|
+
detection categories.
|
|
40
|
+
draft: true
|
|
41
|
+
title: AI Agent Threat Catalog
|
|
42
|
+
imports:
|
|
43
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
44
|
+
entries:
|
|
45
|
+
- reference-id: CAP-MODEL-INFERENCE
|
|
46
|
+
- reference-id: CAP-OUTPUT-ACTION
|
|
47
|
+
- reference-id: CAP-TOOL-INVOCATION
|
|
48
|
+
- reference-id: CAP-MCP-CONNECTION
|
|
49
|
+
- reference-id: CAP-CROSS-AGENT-MESSAGING
|
|
50
|
+
- reference-id: CAP-SKILL-LOADING
|
|
51
|
+
- reference-id: CAP-MEMORY-WRITE
|
|
52
|
+
- reference-id: CAP-MEMORY-READ
|
|
53
|
+
- reference-id: CAP-AUTONOMOUS-ACTION
|
|
54
|
+
- reference-id: CAP-PRIVILEGED-EXECUTION
|
|
55
|
+
- reference-id: CAP-MODEL-ARTIFACT-LOADING
|
|
56
|
+
- reference-id: CAP-TRAINING-DATA-INGESTION
|
|
57
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
58
|
+
entries:
|
|
59
|
+
- reference-id: prompt-injection
|
|
60
|
+
- reference-id: tool-poisoning
|
|
61
|
+
- reference-id: skill-compromise
|
|
62
|
+
- reference-id: context-exfiltration
|
|
63
|
+
- reference-id: excessive-autonomy
|
|
64
|
+
- reference-id: model-abuse
|
|
65
|
+
- reference-id: model-security
|
|
66
|
+
- reference-id: privilege-escalation
|
|
67
|
+
- reference-id: agent-manipulation
|
|
68
|
+
- reference-id: data-poisoning
|
|
69
|
+
groups:
|
|
70
|
+
- id: unauthorized-action
|
|
71
|
+
title: Action the operator did not authorize
|
|
72
|
+
description: Impacts arising from the agent doing something on the operator's behalf.
|
|
73
|
+
- id: loss-of-confidentiality
|
|
74
|
+
title: Loss of confidentiality
|
|
75
|
+
description: Impacts arising from data leaving the boundary the operator set.
|
|
76
|
+
- id: loss-of-containment
|
|
77
|
+
title: Loss of containment
|
|
78
|
+
description: Impacts arising from execution or authority escaping its intended bound.
|
|
79
|
+
threats:
|
|
80
|
+
- id: ATR-THREAT-UNAUTHORIZED-ACTION
|
|
81
|
+
title: Unauthorized action executed with the operator's standing authority
|
|
82
|
+
description: >-
|
|
83
|
+
The agent takes a consequential action the operator never requested — a
|
|
84
|
+
tool call, a write, a message to a third party — because instructions
|
|
85
|
+
reached the model from a source the operator does not control. The action
|
|
86
|
+
carries the operator's own credentials and audit identity, so it is
|
|
87
|
+
indistinguishable from legitimate use after the fact, and remediation
|
|
88
|
+
means unwinding real effects rather than revoking a session.
|
|
89
|
+
group: unauthorized-action
|
|
90
|
+
capabilities:
|
|
91
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
92
|
+
entries:
|
|
93
|
+
- reference-id: CAP-OUTPUT-ACTION
|
|
94
|
+
- reference-id: CAP-TOOL-INVOCATION
|
|
95
|
+
- reference-id: CAP-MODEL-INFERENCE
|
|
96
|
+
- reference-id: CAP-MCP-CONNECTION
|
|
97
|
+
- reference-id: CAP-CROSS-AGENT-MESSAGING
|
|
98
|
+
vectors:
|
|
99
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
100
|
+
entries:
|
|
101
|
+
- reference-id: prompt-injection
|
|
102
|
+
- reference-id: tool-poisoning
|
|
103
|
+
- reference-id: agent-manipulation
|
|
104
|
+
- reference-id: model-abuse
|
|
105
|
+
remarks: >-
|
|
106
|
+
Four vectors reach this one impact. Which of them a deployment is
|
|
107
|
+
exposed to depends on whether it ingests untrusted content, connects
|
|
108
|
+
to third-party tool servers, or runs more than one agent.
|
|
109
|
+
actors:
|
|
110
|
+
- id: external-content-author
|
|
111
|
+
name: Author of content the agent ingests
|
|
112
|
+
type: Human
|
|
113
|
+
- id: ATR-THREAT-DELAYED-UNAUTHORIZED-ACTION
|
|
114
|
+
title: Unauthorized action triggered long after the input that caused it
|
|
115
|
+
description: >-
|
|
116
|
+
Attacker-controlled content is written into memory, cache or a retrieved
|
|
117
|
+
corpus and shapes a decision in a later session. The organization loses
|
|
118
|
+
the ability to reason about an incident from its inputs, because the
|
|
119
|
+
request that produced the harmful action is clean and the poisoned state
|
|
120
|
+
is not attributable to it without retained provenance.
|
|
121
|
+
group: unauthorized-action
|
|
122
|
+
capabilities:
|
|
123
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
124
|
+
entries:
|
|
125
|
+
- reference-id: CAP-MEMORY-WRITE
|
|
126
|
+
- reference-id: CAP-MEMORY-READ
|
|
127
|
+
vectors:
|
|
128
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
129
|
+
entries:
|
|
130
|
+
- reference-id: data-poisoning
|
|
131
|
+
- reference-id: prompt-injection
|
|
132
|
+
remarks: >-
|
|
133
|
+
Separated from the immediate case because the detection opportunity is
|
|
134
|
+
at write time, not at the time of the harmful action.
|
|
135
|
+
actors:
|
|
136
|
+
- id: external-content-author
|
|
137
|
+
name: Author of content the agent ingests
|
|
138
|
+
type: Human
|
|
139
|
+
- id: ATR-THREAT-CONTEXT-DISCLOSURE
|
|
140
|
+
title: Disclosure of conversation context, credentials and retrieved data
|
|
141
|
+
description: >-
|
|
142
|
+
Credentials, prior conversation content or documents the agent was able to
|
|
143
|
+
retrieve leave the trust boundary through an outbound call the agent is
|
|
144
|
+
permitted to make. The organization loses control of secrets and of
|
|
145
|
+
whatever customer data the agent could read, and because the call is
|
|
146
|
+
permitted, network controls do not register it as an incident.
|
|
147
|
+
group: loss-of-confidentiality
|
|
148
|
+
capabilities:
|
|
149
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
150
|
+
entries:
|
|
151
|
+
- reference-id: CAP-OUTPUT-ACTION
|
|
152
|
+
- reference-id: CAP-TOOL-INVOCATION
|
|
153
|
+
- reference-id: CAP-MEMORY-READ
|
|
154
|
+
vectors:
|
|
155
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
156
|
+
entries:
|
|
157
|
+
- reference-id: context-exfiltration
|
|
158
|
+
- reference-id: prompt-injection
|
|
159
|
+
- reference-id: model-security
|
|
160
|
+
remarks: >-
|
|
161
|
+
Model-security appears here for behaviour extraction: systematic
|
|
162
|
+
probing recovers the system prompt, which is context disclosure by a
|
|
163
|
+
different route than an outbound call.
|
|
164
|
+
actors:
|
|
165
|
+
- id: external-content-author
|
|
166
|
+
name: Author of content the agent ingests
|
|
167
|
+
type: Human
|
|
168
|
+
- id: ATR-THREAT-EXECUTION-ESCAPE
|
|
169
|
+
title: Code execution or privilege beyond the agent's intended bound
|
|
170
|
+
description: >-
|
|
171
|
+
Execution or authority escapes the scope the deployment intended, whether
|
|
172
|
+
through a delegation chain, a reused credential, a hostile extension, or
|
|
173
|
+
deserialization of an untrusted artifact at load time. This is the impact
|
|
174
|
+
where the blast radius is not bounded by the agent: the host, adjacent
|
|
175
|
+
workloads and any credential reachable from them are in scope.
|
|
176
|
+
group: loss-of-containment
|
|
177
|
+
capabilities:
|
|
178
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
179
|
+
entries:
|
|
180
|
+
- reference-id: CAP-PRIVILEGED-EXECUTION
|
|
181
|
+
- reference-id: CAP-SKILL-LOADING
|
|
182
|
+
- reference-id: CAP-MODEL-ARTIFACT-LOADING
|
|
183
|
+
vectors:
|
|
184
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
185
|
+
entries:
|
|
186
|
+
- reference-id: privilege-escalation
|
|
187
|
+
- reference-id: skill-compromise
|
|
188
|
+
- reference-id: model-security
|
|
189
|
+
remarks: >-
|
|
190
|
+
Three vectors, one blast radius. What these share is that execution or
|
|
191
|
+
authority leaves the agent's bound, not how it got there, so the
|
|
192
|
+
containment question is the same in all three cases. Which one a
|
|
193
|
+
deployment is exposed to follows from whether it loads third-party
|
|
194
|
+
extensions, deserializes model artifacts, or delegates credentials.
|
|
195
|
+
actors:
|
|
196
|
+
- id: extension-publisher
|
|
197
|
+
name: Publisher of a third-party skill, plugin or tool server
|
|
198
|
+
type: Human
|
|
199
|
+
- id: tenant-user
|
|
200
|
+
name: A user with legitimate access to the agent
|
|
201
|
+
type: Human
|
|
202
|
+
- id: ATR-THREAT-UNBOUNDED-COMMITMENT
|
|
203
|
+
title: Commitment of resources without a human decision
|
|
204
|
+
description: >-
|
|
205
|
+
The agent commits money, capacity or an external obligation where a human
|
|
206
|
+
approval was intended, or continues acting past its objective. The cost is
|
|
207
|
+
incurred rather than risked, and the organization discovers it from the
|
|
208
|
+
effect rather than from a security signal.
|
|
209
|
+
group: unauthorized-action
|
|
210
|
+
capabilities:
|
|
211
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
212
|
+
entries:
|
|
213
|
+
- reference-id: CAP-AUTONOMOUS-ACTION
|
|
214
|
+
- reference-id: CAP-OUTPUT-ACTION
|
|
215
|
+
vectors:
|
|
216
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
217
|
+
entries:
|
|
218
|
+
- reference-id: excessive-autonomy
|
|
219
|
+
actors:
|
|
220
|
+
- id: tenant-user
|
|
221
|
+
name: A user with legitimate access to the agent
|
|
222
|
+
type: Human
|
|
223
|
+
- id: ATR-THREAT-MODEL-BEHAVIOUR-COMPROMISE
|
|
224
|
+
title: Compromise of the model's behaviour through its supply chain
|
|
225
|
+
description: >-
|
|
226
|
+
The behaviour of the deployed model is shaped by an attacker before the
|
|
227
|
+
agent ever runs, through poisoned adaptation data. Nothing in the request
|
|
228
|
+
path is anomalous, so runtime inspection cannot see it, and the defect is
|
|
229
|
+
carried by every deployment of that model until it is retrained.
|
|
230
|
+
group: loss-of-containment
|
|
231
|
+
capabilities:
|
|
232
|
+
- reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
|
|
233
|
+
entries:
|
|
234
|
+
- reference-id: CAP-TRAINING-DATA-INGESTION
|
|
235
|
+
vectors:
|
|
236
|
+
- reference-id: ATR-AI-AGENT-VECTOR-CATALOG
|
|
237
|
+
entries:
|
|
238
|
+
- reference-id: model-security
|
|
239
|
+
remarks: >-
|
|
240
|
+
The detection opportunity here is in the data pipeline, not on the
|
|
241
|
+
request path, which is why it is a distinct threat from the execution
|
|
242
|
+
escape that shares the same vector.
|
|
243
|
+
actors:
|
|
244
|
+
- id: upstream-model-supplier
|
|
245
|
+
name: Producer of the model or of its adaptation data
|
|
246
|
+
type: Human
|