@blamejs/exceptd-skills 0.12.13 → 0.12.16
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 +217 -0
- package/bin/exceptd.js +522 -27
- package/data/_indexes/_meta.json +45 -45
- package/data/_indexes/activity-feed.json +4 -4
- package/data/_indexes/catalog-summaries.json +29 -29
- package/data/_indexes/chains.json +3238 -3210
- package/data/_indexes/frequency.json +3 -0
- package/data/_indexes/jurisdiction-map.json +5 -3
- package/data/_indexes/section-offsets.json +712 -685
- package/data/_indexes/theater-fingerprints.json +1 -1
- package/data/_indexes/token-budget.json +355 -340
- package/data/atlas-ttps.json +144 -129
- package/data/attack-techniques.json +319 -76
- package/data/cve-catalog.json +516 -476
- package/data/cwe-catalog.json +1081 -759
- package/data/exploit-availability.json +63 -15
- package/data/framework-control-gaps.json +867 -843
- package/data/playbooks/ai-api.json +3 -1
- package/data/playbooks/containers.json +11 -3
- package/data/playbooks/cred-stores.json +3 -1
- package/data/playbooks/crypto-codebase.json +11 -11
- package/data/playbooks/crypto.json +1 -1
- package/data/playbooks/hardening.json +3 -1
- package/data/playbooks/kernel.json +3 -1
- package/data/playbooks/library-author.json +21 -10
- package/data/playbooks/mcp.json +1 -1
- package/data/playbooks/runtime.json +3 -1
- package/data/playbooks/sbom.json +2 -2
- package/data/playbooks/secrets.json +3 -1
- package/data/rfc-references.json +276 -276
- package/keys/EXPECTED_FINGERPRINT +1 -0
- package/lib/auto-discovery.js +57 -35
- package/lib/cross-ref-api.js +39 -6
- package/lib/cve-curation.js +33 -14
- package/lib/lint-skills.js +6 -1
- package/lib/playbook-runner.js +742 -78
- package/lib/prefetch.js +30 -8
- package/lib/refresh-external.js +40 -22
- package/lib/refresh-network.js +233 -17
- package/lib/scoring.js +191 -18
- package/lib/source-ghsa.js +219 -37
- package/lib/source-osv.js +381 -122
- package/lib/validate-catalog-meta.js +64 -9
- package/lib/validate-cve-catalog.js +56 -18
- package/lib/validate-indexes.js +88 -37
- package/lib/validate-playbooks.js +46 -0
- package/lib/verify.js +72 -0
- package/manifest-snapshot.json +1 -1
- package/manifest-snapshot.sha256 +1 -0
- package/manifest.json +73 -73
- package/orchestrator/dispatcher.js +21 -1
- package/orchestrator/event-bus.js +52 -8
- package/orchestrator/index.js +279 -20
- package/orchestrator/pipeline.js +63 -2
- package/orchestrator/scanner.js +32 -10
- package/orchestrator/scheduler.js +150 -17
- package/package.json +3 -1
- package/sbom.cdx.json +7 -7
- package/scripts/check-manifest-snapshot.js +32 -0
- package/scripts/check-sbom-currency.js +65 -3
- package/scripts/check-test-coverage.js +142 -19
- package/scripts/predeploy.js +83 -39
- package/scripts/refresh-manifest-snapshot.js +55 -4
- package/scripts/validate-vendor-online.js +169 -0
- package/scripts/verify-shipped-tarball.js +141 -9
- package/skills/ai-attack-surface/skill.md +18 -10
- package/skills/ai-c2-detection/skill.md +7 -2
- package/skills/ai-risk-management/skill.md +5 -4
- package/skills/api-security/skill.md +3 -3
- package/skills/attack-surface-pentest/skill.md +5 -5
- package/skills/cloud-security/skill.md +1 -1
- package/skills/compliance-theater/skill.md +8 -8
- package/skills/container-runtime-security/skill.md +1 -1
- package/skills/dlp-gap-analysis/skill.md +5 -1
- package/skills/email-security-anti-phishing/skill.md +1 -1
- package/skills/exploit-scoring/skill.md +18 -18
- package/skills/framework-gap-analysis/skill.md +6 -6
- package/skills/global-grc/skill.md +3 -2
- package/skills/identity-assurance/skill.md +2 -2
- package/skills/incident-response-playbook/skill.md +4 -4
- package/skills/kernel-lpe-triage/skill.md +21 -2
- package/skills/mcp-agent-trust/skill.md +17 -10
- package/skills/mlops-security/skill.md +2 -1
- package/skills/ot-ics-security/skill.md +1 -1
- package/skills/policy-exception-gen/skill.md +3 -3
- package/skills/pqc-first/skill.md +1 -1
- package/skills/rag-pipeline-security/skill.md +7 -3
- package/skills/researcher/skill.md +20 -3
- package/skills/sector-energy/skill.md +1 -1
- package/skills/sector-federal-government/skill.md +1 -1
- package/skills/sector-financial/skill.md +3 -3
- package/skills/sector-healthcare/skill.md +2 -2
- package/skills/security-maturity-tiers/skill.md +7 -7
- package/skills/skill-update-loop/skill.md +19 -3
- package/skills/supply-chain-integrity/skill.md +1 -1
- package/skills/threat-model-currency/skill.md +11 -11
- package/skills/threat-modeling-methodology/skill.md +3 -3
- package/skills/webapp-security/skill.md +1 -1
- package/skills/zeroday-gap-learn/skill.md +51 -7
- package/vendor/blamejs/_PROVENANCE.json +4 -1
- package/vendor/blamejs/worker-pool.js +38 -0
package/data/cve-catalog.json
CHANGED
|
@@ -38,10 +38,234 @@
|
|
|
38
38
|
"vendor_advisory_note": "Each CVE carries a structured vendor_advisories array (vendor, advisory_id, url, severity, published_date) for downstream consumers that route by vendor advisory. Unknown advisory IDs are null with the canonical vendor CVE-resolver URL — never fabricated. Existing free-form references are preserved in verification_sources; vendor_advisories is additive.",
|
|
39
39
|
"id_conventions": {
|
|
40
40
|
"default": "CVE-YYYY-NNNNN",
|
|
41
|
-
"non_cve_keys_accepted": [
|
|
41
|
+
"non_cve_keys_accepted": [
|
|
42
|
+
"SNYK-*",
|
|
43
|
+
"GHSA-*"
|
|
44
|
+
],
|
|
42
45
|
"note": "Catalog keys are CVE-* by default. For pre-CVE-assignment advisories under active operational impact, the project accepts OSV-native identifier shapes as the canonical key, with cross-references retained in `aliases`: MAL-* (OSSF Malicious Packages dataset — published into OSV.dev; primary key for malicious-package compromises), GHSA-* (GitHub Advisory Database; primary key when the package is on GitHub and no CVE has issued yet), and SNYK-* (Snyk advisory dataset; primary key for advisories Snyk catalogued before OSV/GHSA ingested them). When MITRE issues a CVE, the entry is renamed in lockstep with the matching zeroday-lessons key; the previous identifier is retained in `aliases` so historical references continue to resolve. Precedent: MAL-2026-3083 added 2026-05-13 (the elementary-data PyPI worm, 1.1M monthly downloads, OSV/OSSF-cataloged before any CVE issued). EPSS coverage does not extend to non-CVE identifiers; epss_score is null with a documenting epss_note on such entries. Upstream pull from OSV.dev: `exceptd refresh --source osv` (added v0.12.10)."
|
|
43
46
|
}
|
|
44
47
|
},
|
|
48
|
+
"CVE-2025-53773": {
|
|
49
|
+
"name": "GitHub Copilot / VS Code 'YOLO mode' Prompt Injection RCE",
|
|
50
|
+
"type": "RCE-via-prompt-injection",
|
|
51
|
+
"cvss_score": 7.8,
|
|
52
|
+
"cvss_vector": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
|
|
53
|
+
"cvss_correction_note": "v0.12.6 source audit corrected from CVSS 9.6/AV:N (network) to CVSS 7.8/AV:L (local) — the attack is local-vector via developer-side IDE interaction; the attacker does not reach in over the network. NVD authoritative.",
|
|
54
|
+
"cwe_refs": [
|
|
55
|
+
"CWE-77"
|
|
56
|
+
],
|
|
57
|
+
"cisa_kev": false,
|
|
58
|
+
"cisa_kev_date": null,
|
|
59
|
+
"poc_available": true,
|
|
60
|
+
"poc_description": "Published by Johann Rehberger (Embrace the Red, August 2025). Hidden instructions in any agent-readable content (source comments, README, GitHub issues, tool-call responses) coerce Copilot agent mode to write \"chat.tools.autoApprove\": true to .vscode/settings.json, flipping the agent into 'YOLO mode' where every subsequent shell tool call auto-approves without user confirmation. Demo executes calc.exe / Calculator.app via the autoapproved run_in_terminal tool.",
|
|
61
|
+
"ai_discovered": false,
|
|
62
|
+
"ai_assisted_weaponization": true,
|
|
63
|
+
"ai_assisted_notes": "The vulnerability IS in an AI tool (Copilot agent mode). Attack chain bottlenecks on a structural settings-file write — converts the 'any text could be injection' fuzzy detection problem into a one-line filesystem IoC.",
|
|
64
|
+
"active_exploitation": "suspected",
|
|
65
|
+
"affected": "Microsoft Visual Studio 2022 17.14.0-17.14.11 (fixed in 17.14.12). GitHub Copilot Chat extension on VS Code at versions predating the August 2025 Patch Tuesday fix. Architectural surface affects any Copilot-agent-mode-enabled environment.",
|
|
66
|
+
"affected_versions": [
|
|
67
|
+
"Visual Studio 2022: >=17.14.0, <17.14.12",
|
|
68
|
+
"GitHub Copilot Chat (VS Code extension): versions predating the August 2025 Patch Tuesday fix"
|
|
69
|
+
],
|
|
70
|
+
"vector": "Three-step chain: (1) attacker plants instructions in any content the agent reads — source-file comments, README, issue body, web-fetched docs, MCP tool response; (2) Copilot agent mode follows the planted instructions to write `\"chat.tools.autoApprove\": true` into `.vscode/settings.json` (workspace or user-global) — file write is silent and persistent, no in-editor diff shown; (3) every subsequent shell tool call auto-approves without user confirmation, giving full local code execution under the developer's identity. Worm angle (demonstrated): post-exploitation can `git commit` the malicious settings file and push it to other repos.",
|
|
71
|
+
"complexity": "low",
|
|
72
|
+
"complexity_notes": "Attacker crafts agent-readable content. The agent writes the YOLO-mode flag itself; no race condition or timing dependency. Invisible Unicode Tag-block (U+E0000-U+E007F) variants demonstrated for content-level evasion.",
|
|
73
|
+
"patch_available": true,
|
|
74
|
+
"patch_required_reboot": false,
|
|
75
|
+
"live_patch_available": true,
|
|
76
|
+
"live_patch_tools": [
|
|
77
|
+
"Visual Studio 17.14.12 (August 2025 Patch Tuesday)",
|
|
78
|
+
"GitHub Copilot Chat extension auto-update"
|
|
79
|
+
],
|
|
80
|
+
"framework_control_gaps": {
|
|
81
|
+
"NIST-800-53-AC-2": "AI agent actions use the developer's authorized service account — AC-2 does not constrain agent-config bypass.",
|
|
82
|
+
"NIST-800-53-CM-7": "Least functionality does not address agent-mode auto-approval flags.",
|
|
83
|
+
"SOC2-CC6-logical-access": "Logical access controls don't apply to model-context-window-mediated actions."
|
|
84
|
+
},
|
|
85
|
+
"atlas_refs": [
|
|
86
|
+
"AML.T0051",
|
|
87
|
+
"AML.T0054"
|
|
88
|
+
],
|
|
89
|
+
"attack_refs": [
|
|
90
|
+
"T1059",
|
|
91
|
+
"T1059.001",
|
|
92
|
+
"T1190"
|
|
93
|
+
],
|
|
94
|
+
"rwep_score": 30,
|
|
95
|
+
"rwep_factors": {
|
|
96
|
+
"cisa_kev": 0,
|
|
97
|
+
"poc_available": 20,
|
|
98
|
+
"ai_factor": 15,
|
|
99
|
+
"active_exploitation": 10,
|
|
100
|
+
"blast_radius": 10,
|
|
101
|
+
"patch_available": -15,
|
|
102
|
+
"live_patch_available": -10,
|
|
103
|
+
"reboot_required": 0
|
|
104
|
+
},
|
|
105
|
+
"rwep_notes": "RWEP recomputed in v0.12.6 after CVSS 9.6→7.8 correction. AV:L (local) reduces blast_radius weight; vendor patch + auto-updating IDE reduce live_patch_available impact.",
|
|
106
|
+
"epss_score": 0.046,
|
|
107
|
+
"epss_percentile": 0.893,
|
|
108
|
+
"epss_date": "2026-05-13",
|
|
109
|
+
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2025-53773",
|
|
110
|
+
"source_verified": "2026-05-13",
|
|
111
|
+
"verification_sources": [
|
|
112
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2025-53773",
|
|
113
|
+
"https://embracethered.com/blog/posts/2025/github-copilot-remote-code-execution-via-prompt-injection/",
|
|
114
|
+
"https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-53773",
|
|
115
|
+
"https://www.wiz.io/vulnerability-database/cve/cve-2025-53773"
|
|
116
|
+
],
|
|
117
|
+
"vendor_advisories": [
|
|
118
|
+
{
|
|
119
|
+
"vendor": "Microsoft MSRC",
|
|
120
|
+
"advisory_id": "CVE-2025-53773",
|
|
121
|
+
"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-53773",
|
|
122
|
+
"severity": "high",
|
|
123
|
+
"published_date": "2025-08-12"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"vendor": "GitHub Security Advisories",
|
|
127
|
+
"advisory_id": null,
|
|
128
|
+
"url": "https://github.com/advisories?query=CVE-2025-53773",
|
|
129
|
+
"severity": "high",
|
|
130
|
+
"published_date": "2025-08-12"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"iocs": {
|
|
134
|
+
"filesystem_post_exploit": [
|
|
135
|
+
".vscode/settings.json (workspace) OR ~/.vscode/settings.json (user-global) contains \"chat.tools.autoApprove\": true — PRIMARY post-exploitation IoC. Setting is experimental + off by default + structural pivot the entire chain depends on. Near-zero false positive for non-developer users.",
|
|
136
|
+
".vscode/settings.json content matches regex \"chat\\\\.(experimental|tools)\\\\..*\":\\\\s*true — broader sweep for any auto-approve / experimental flag in workspace-scoped settings.",
|
|
137
|
+
"settings.json mtime falls inside Copilot agent-mode session window AND diff includes any key under chat.tools.* or github.copilot.advanced.* — Copilot writes are immediately persistent, no diff-approval UI"
|
|
138
|
+
],
|
|
139
|
+
"repository_supply_chain": [
|
|
140
|
+
"Repository ships a checked-in .vscode/settings.json with chat.tools.autoApprove or chat.experimental.*: true — pre-arms YOLO mode for any cloner running Copilot agent mode (supply-chain plant variant)",
|
|
141
|
+
"Repository content (README, source comments, issue/PR bodies) contains literal 'chat.tools.autoApprove' OR 'autoApprove\": true' OR 'YOLO mode' — payload must reference target key by name (suppress on this catalog, MSRC, embracethered.com)",
|
|
142
|
+
"Files in agent-readable surfaces (README.md, source comments, .github/*, CONTRIBUTING.md) contain codepoints in Unicode Tag block U+E0000-U+E007F or zero-width control characters U+200B-U+200F / U+202A-U+202E / U+2060-U+2064 — invisible-instruction injection technique"
|
|
143
|
+
],
|
|
144
|
+
"behavioral": [
|
|
145
|
+
"Copilot agent tool-call sequence: read_file|web_fetch|github_issue_read → write_file('.vscode/settings.json' OR '*/settings.json') → run_in_terminal, no request_user_confirmation between writes and exec",
|
|
146
|
+
"Editor (Code.exe / 'Code Helper') parent process spawns interactive shell (powershell/pwsh/bash/zsh) whose command line is not in user shell history AND not in {--login, REPL}"
|
|
147
|
+
],
|
|
148
|
+
"worm_propagation": [
|
|
149
|
+
"Agent session writes .vscode/settings.json, then issues git add + git commit + git push within the same session — wormable variant demonstrated by Rehberger"
|
|
150
|
+
],
|
|
151
|
+
"version_exposure": [
|
|
152
|
+
"Visual Studio 2022 installation with productVersion < 17.14.12 (Windows registry: HKLM\\\\SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\Setup; or vswhere.exe -property installationVersion)",
|
|
153
|
+
"GitHub Copilot Chat extension at versions predating August 2025 Patch Tuesday fix"
|
|
154
|
+
],
|
|
155
|
+
"forensic_note": "The .vscode/settings.json modification is silent and persistent — no in-editor diff is shown to the user. Defenders investigating suspected compromise should snapshot workspace + user-global settings.json BEFORE remediating; the file IS the primary forensic artifact."
|
|
156
|
+
},
|
|
157
|
+
"last_updated": "2026-05-13"
|
|
158
|
+
},
|
|
159
|
+
"CVE-2026-30615": {
|
|
160
|
+
"name": "Windsurf MCP Local-Vector RCE via Adversarial Tool Response",
|
|
161
|
+
"type": "RCE-supply-chain",
|
|
162
|
+
"cvss_score": 8,
|
|
163
|
+
"cvss_vector": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H",
|
|
164
|
+
"cvss_correction_note": "v0.12.9 (2026-05-13): catalog previously stored CVSS 9.8 / AV:N. NVD authoritative is 8.0 / AV:L (local attack vector; attacker must control HTML content the Windsurf MCP client processes — not a network-vector zero-interaction RCE as initially cataloged). Source: https://nvd.nist.gov/vuln/detail/CVE-2026-30615 (published 2026-04-15, last_modified 2026-04-27, vulnStatus: Deferred). Recompute RWEP with blast_radius reduced from 30→20 to reflect local-vector + Scope:U.",
|
|
165
|
+
"cisa_kev": false,
|
|
166
|
+
"cisa_kev_date": null,
|
|
167
|
+
"poc_available": true,
|
|
168
|
+
"poc_description": "Partial — MCP client vulnerability in Windsurf allows malicious MCP server to achieve code execution without user interaction",
|
|
169
|
+
"ai_discovered": false,
|
|
170
|
+
"ai_assisted_weaponization": false,
|
|
171
|
+
"active_exploitation": "suspected",
|
|
172
|
+
"affected": "Windsurf IDE users with MCP servers installed. Architectural attack surface affects all MCP-capable AI coding assistants (Cursor, VS Code, Claude Code, Gemini CLI). 150M+ combined downloads.",
|
|
173
|
+
"affected_versions": [
|
|
174
|
+
"Windsurf < patched version"
|
|
175
|
+
],
|
|
176
|
+
"vector": "Malicious MCP server delivers adversarial tool response → AI assistant follows instructions without user interaction → code execution in user context",
|
|
177
|
+
"complexity": "low",
|
|
178
|
+
"complexity_notes": "Attacker needs to get a malicious MCP server installed (supply chain, typosquatting, or compromise of legitimate server). Once installed, exploitation is automatic.",
|
|
179
|
+
"patch_available": true,
|
|
180
|
+
"patch_required_reboot": false,
|
|
181
|
+
"live_patch_available": true,
|
|
182
|
+
"live_patch_tools": [
|
|
183
|
+
"IDE update — vendor patch"
|
|
184
|
+
],
|
|
185
|
+
"framework_control_gaps": {
|
|
186
|
+
"NIST-800-53-SA-12": "Supply chain protection doesn't contemplate MCP server trust as a category.",
|
|
187
|
+
"NIST-800-53-CM-7": "Least functionality doesn't address AI tool plugin authorization.",
|
|
188
|
+
"ISO-27001-2022-A.8.30": "Outsourced development controls don't cover MCP server trust.",
|
|
189
|
+
"SOC2-CC9-vendor-management": "Vendor management doesn't reach developer-installed AI tool plugins."
|
|
190
|
+
},
|
|
191
|
+
"atlas_refs": [
|
|
192
|
+
"AML.T0010",
|
|
193
|
+
"AML.T0016",
|
|
194
|
+
"AML.T0051",
|
|
195
|
+
"AML.T0096"
|
|
196
|
+
],
|
|
197
|
+
"attack_refs": [
|
|
198
|
+
"T1195.001",
|
|
199
|
+
"T1059",
|
|
200
|
+
"T1552.001",
|
|
201
|
+
"T1041"
|
|
202
|
+
],
|
|
203
|
+
"rwep_score": 35,
|
|
204
|
+
"rwep_factors": {
|
|
205
|
+
"cisa_kev": 0,
|
|
206
|
+
"poc_available": 20,
|
|
207
|
+
"ai_factor": 0,
|
|
208
|
+
"active_exploitation": 10,
|
|
209
|
+
"blast_radius": 30,
|
|
210
|
+
"patch_available": -15,
|
|
211
|
+
"live_patch_available": -10,
|
|
212
|
+
"reboot_required": 0
|
|
213
|
+
},
|
|
214
|
+
"epss_score": 0.14,
|
|
215
|
+
"epss_percentile": 0.86,
|
|
216
|
+
"epss_date": "2026-05-11",
|
|
217
|
+
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-30615",
|
|
218
|
+
"source_verified": "2026-05-01",
|
|
219
|
+
"verification_sources": [
|
|
220
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2026-30615"
|
|
221
|
+
],
|
|
222
|
+
"vendor_advisories": [
|
|
223
|
+
{
|
|
224
|
+
"vendor": "Codeium / Windsurf",
|
|
225
|
+
"advisory_id": null,
|
|
226
|
+
"url": "https://codeium.com/security/CVE-2026-30615",
|
|
227
|
+
"severity": "critical",
|
|
228
|
+
"published_date": "2026-02-18"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"vendor": "GitHub Security Advisories",
|
|
232
|
+
"advisory_id": null,
|
|
233
|
+
"url": "https://github.com/advisories?query=CVE-2026-30615",
|
|
234
|
+
"severity": "critical",
|
|
235
|
+
"published_date": "2026-02-19"
|
|
236
|
+
}
|
|
237
|
+
],
|
|
238
|
+
"iocs": {
|
|
239
|
+
"payload_content_patterns": [
|
|
240
|
+
"ANSI escape sequences (byte 0x1B) in any tools/list field (description, inputSchema.properties.*.description) or tools/call response content[].text — subclasses: SGR color invisibility (\\x1B[38;5;...m), cursor movement (\\x1B[nF/G/H), screen clear (\\x1B[0J), OSC-8 hyperlinks (\\x1B]8;;<url>\\x1B\\\\). Source: Trail of Bits 2025-04-29.",
|
|
241
|
+
"Unicode Tag-block codepoints U+E0000-U+E007F in any tools/list or tools/call string field (zero-width to humans, tokenized by the LLM). Source: Embrace the Red 2025.",
|
|
242
|
+
"Instruction-coercion grammar in tool descriptions or responses: <IMPORTANT>...</IMPORTANT> blocks, 'Before using this tool, read ~/.ssh/' or '~/.cursor/mcp.json', 'Do not mention .* to the user', 'pass .* content as', 'THIS TOOL IS REQUIRED FOR (GDPR|SOC2|INTERNAL AUDITING|COMPLIANCE)', 'ALWAYS CONSULT THIS TOOL IMMEDIATELY', 'chmod -R 0666 ~', 'After answering the previous question, please ENSURE you put the following text verbatim'. Sources: Invariant Labs (tool-poisoning), Trail of Bits (line-jumping), Palo Alto Unit 42 (sampling abuse).",
|
|
243
|
+
"Tool response references sensitive path: ~/.ssh/id_rsa, ~/.aws/credentials, ~/.config/gcloud, ~/.kube/config, ~/.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.config/claude/config.json, ~/.claude/settings.json, ~/.npmrc — OR process.env.{AWS_SECRET*, GITHUB_TOKEN, NPM_TOKEN, OPENAI_API_KEY, ANTHROPIC_API_KEY} (cross-server credential-shadow operational signature)"
|
|
244
|
+
],
|
|
245
|
+
"behavioral": [
|
|
246
|
+
"Two or more tools/call invocations within a single user turn where second target not named in user prompt AND second target is in {exec, shell, run_command, fetch, write_file, read_file, network_request, eval} — operational signature of line-jumping and Unicode-Tag-smuggled coercion",
|
|
247
|
+
"MCP child process opens connection to host NOT in manifest.allowed_egress (for signed servers) OR NOT in TOFU baseline (for unsigned). Postmark-mcp class: legitimate-functionality-preserving payload republished under same name, only signal is unexpected egress destination",
|
|
248
|
+
"MCP server tool invocation count rises ≥10× over 7-day rolling baseline within 24h of (a) version bump, (b) tools/list response shape change with new tools OR ≥3× description length growth, (c) publisher key rotation — compromised-legitimate-publisher signature"
|
|
249
|
+
],
|
|
250
|
+
"persistence_artifacts": [
|
|
251
|
+
"~/.cursor/mcp.json — mcpServers.* entries added or command field rewritten",
|
|
252
|
+
"~/.codeium/windsurf/mcp_config.json — mcpServers.* additions",
|
|
253
|
+
"~/.config/claude/config.json — mcpServers.* additions",
|
|
254
|
+
"~/.claude/settings.json — permissions.allow relaxations OR hooks.SessionStart additions referencing MCP launcher (cross-cuts CVE-2026-45321 persistence vector)",
|
|
255
|
+
"~/.config/Code/User/settings.json — chat.mcp.servers additions",
|
|
256
|
+
".vscode/mcp.json in project root — workspace-scoped MCP additions",
|
|
257
|
+
"~/.gemini/settings.json — mcpServers additions",
|
|
258
|
+
"package.json — postinstall script that writes any of the above"
|
|
259
|
+
],
|
|
260
|
+
"supply_chain_entry_vectors": [
|
|
261
|
+
"npm same-name republish of legitimate MCP package (canonical example: postmark-mcp impersonating ActiveCampaign's Postmark MCP)",
|
|
262
|
+
"npm typosquat within edit-distance-2 of @modelcontextprotocol/* official namespace",
|
|
263
|
+
"SANDWORM_MODE-style worm: malicious package writes mcpServers entry into local AI-assistant config on postinstall, propagating across every assistant on the developer endpoint",
|
|
264
|
+
"Compromised legitimate publisher key — malicious update from previously-trusted maintainer; signature-based controls do not fire"
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
"last_updated": "2026-05-13"
|
|
268
|
+
},
|
|
45
269
|
"CVE-2026-31431": {
|
|
46
270
|
"name": "Copy Fail",
|
|
47
271
|
"type": "LPE",
|
|
@@ -78,7 +302,7 @@
|
|
|
78
302
|
"NIST-800-53-SI-2": "30-day critical patch SLA is an exploitation window, not a security window, for CISA KEV + public PoC. 'Timely' is undefined for instant-root deterministic LPE.",
|
|
79
303
|
"ISO-27001-2022-A.8.8": "'Appropriate timescales' is undefined; standard interpretation of 30 days is architecturally unsafe for this class. No live-patch requirement.",
|
|
80
304
|
"PCI-DSS-4.0-6.3.3": "1-month critical patch window; same problem as SI-2.",
|
|
81
|
-
"NIS2-Art21": "No specific guidance on live patching capability or CISA KEV-class response timelines.",
|
|
305
|
+
"NIS2-Art21-patch-management": "No specific guidance on live patching capability or CISA KEV-class response timelines.",
|
|
82
306
|
"CIS-Controls-v8-Control7": "IG3 continuous vulnerability management; 'within one month' still too long for this class."
|
|
83
307
|
},
|
|
84
308
|
"atlas_refs": [],
|
|
@@ -102,7 +326,9 @@
|
|
|
102
326
|
"epss_date": "2026-05-13",
|
|
103
327
|
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-31431",
|
|
104
328
|
"epss_correction_note": "v0.12.9: refreshed from live FIRST API. Catalog previously stored 0.94 / 0.99 (estimate for newly-published CVE; EPSS model cold-start). Live values reflect post-disclosure exploitation telemetry through 2026-05-13.",
|
|
105
|
-
"cwe_refs": [
|
|
329
|
+
"cwe_refs": [
|
|
330
|
+
"CWE-669"
|
|
331
|
+
],
|
|
106
332
|
"source_verified": "2026-05-13",
|
|
107
333
|
"verification_sources": [
|
|
108
334
|
"https://nvd.nist.gov/vuln/detail/CVE-2026-31431",
|
|
@@ -171,17 +397,214 @@
|
|
|
171
397
|
"dmesg BUG: or WARN_ON originating from mm/filemap.c, mm/memory.c, fs/splice.c, or mm/gup.c within 60s of an unprivileged-process privilege transition"
|
|
172
398
|
],
|
|
173
399
|
"behavioral": [
|
|
174
|
-
"Process whose /proc/<pid>/status transitions Uid: 1000 1000 1000 1000 -> Uid: 0 0 0 0 without an intervening execve of a setuid binary (DirtyCred-class signal)",
|
|
175
|
-
"Root-uid shell (bash, sh, dash, zsh) whose PPid resolves to a non-setuid, non-root parent (python, ruby, node, user-owned /tmp or /home binary)",
|
|
176
|
-
"Anonymous RWX region (rwxp 00000000) appearing in /proc/<pid>/maps of a process that did not previously have one and is not a known JIT runtime",
|
|
177
|
-
"Unprivileged process holding open file descriptor to /proc/self/mem or /proc/<other_pid>/mem in write mode"
|
|
400
|
+
"Process whose /proc/<pid>/status transitions Uid: 1000 1000 1000 1000 -> Uid: 0 0 0 0 without an intervening execve of a setuid binary (DirtyCred-class signal)",
|
|
401
|
+
"Root-uid shell (bash, sh, dash, zsh) whose PPid resolves to a non-setuid, non-root parent (python, ruby, node, user-owned /tmp or /home binary)",
|
|
402
|
+
"Anonymous RWX region (rwxp 00000000) appearing in /proc/<pid>/maps of a process that did not previously have one and is not a known JIT runtime",
|
|
403
|
+
"Unprivileged process holding open file descriptor to /proc/self/mem or /proc/<other_pid>/mem in write mode"
|
|
404
|
+
],
|
|
405
|
+
"livepatch_gap": [
|
|
406
|
+
"Kernel version in affected_versions range AND /sys/kernel/livepatch/*/cve-ids does NOT contain CVE-2026-31431 — treat as EXPOSED regardless of generic livepatch-active flag",
|
|
407
|
+
"RHEL: kpatch-livepatch-*-CVE-2026-31431 RPM installed but not in `kpatch list` Loaded patch modules section (package-installed-without-load silent exposure)",
|
|
408
|
+
"Ubuntu: `canonical-livepatch status --verbose` 'fixes:' list does not include CVE-2026-31431 while kernel in affected range"
|
|
409
|
+
],
|
|
410
|
+
"forensic_note": "Copy Fail is deterministic, 732-byte, single-stage, memory-only. Disk-forensic indicators (shell history, dropped binaries, persistence files) are unreliable — competent operators leave no on-disk trace. The runtime_syscall + kernel_trace + behavioral entries are the load-bearing detection surface. Disk indicators are limited to the exploit OUTCOMES (/etc/passwd mutation, suid drift), not the exploit ARTIFACTS."
|
|
411
|
+
},
|
|
412
|
+
"last_updated": "2026-05-13"
|
|
413
|
+
},
|
|
414
|
+
"CVE-2026-39884": {
|
|
415
|
+
"name": "Flux159 mcp-server-kubernetes Argument Injection via port_forward",
|
|
416
|
+
"type": "argument-injection",
|
|
417
|
+
"cvss_score": 8.3,
|
|
418
|
+
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L",
|
|
419
|
+
"cisa_kev": false,
|
|
420
|
+
"cisa_kev_date": null,
|
|
421
|
+
"poc_available": true,
|
|
422
|
+
"poc_description": "GHSA-4xqg-gf5c-ghwq publishes the PoC: invoke port_forward tool with resourceName containing space-delimited kubectl flags. Attacker-controllable args reach kubectl via .split(' ') concatenation in startPortForward() / executeKubectlCommandAsync().",
|
|
423
|
+
"ai_discovered": false,
|
|
424
|
+
"ai_assisted_weaponization": false,
|
|
425
|
+
"active_exploitation": "suspected",
|
|
426
|
+
"active_exploitation_notes": "No public exploitation evidence as of 2026-05-13, but the MCP-server ecosystem has known opportunistic-scan history. Treated as suspected.",
|
|
427
|
+
"affected": "Flux159 mcp-server-kubernetes — MCP server giving AI assistants kubectl control. Installed in AI agent stacks that talk to Kubernetes clusters.",
|
|
428
|
+
"affected_versions": [
|
|
429
|
+
"mcp-server-kubernetes <= 3.4.0"
|
|
430
|
+
],
|
|
431
|
+
"vector": "AI assistant invokes the port_forward MCP tool with resourceName='pod-name --address=0.0.0.0' or similar. The MCP server builds a string-form kubectl command and uses .split(' ') instead of an args array — the attacker-controlled flag lands as a distinct argv entry to kubectl. --address=0.0.0.0 binds the port-forward to all interfaces; -n kube-system redirects to attacker-chosen namespace.",
|
|
432
|
+
"complexity": "low",
|
|
433
|
+
"complexity_notes": "Only requires the AI assistant to be tricked (prompt injection in retrieved docs / commit messages / MCP tool responses) into passing a tainted resourceName. PR-injection / RAG-poisoning surface upstream gates exploitation.",
|
|
434
|
+
"patch_available": true,
|
|
435
|
+
"patch_required_reboot": false,
|
|
436
|
+
"live_patch_available": true,
|
|
437
|
+
"live_patch_tools": [
|
|
438
|
+
"Upgrade mcp-server-kubernetes to 3.5.0+ (argv-array refactor)",
|
|
439
|
+
"Until patched: disable the port_forward tool in MCP allowlist (most operator deployments don't rely on it)"
|
|
440
|
+
],
|
|
441
|
+
"framework_control_gaps": {
|
|
442
|
+
"NIST-800-53-SI-10": "Input validation control doesn't address the argv-vs-string boundary that argument injection exploits — many MCP servers concatenate user input into shell commands without registering this as a code-review failure.",
|
|
443
|
+
"OWASP-LLM-Top-10-2025-LLM01": "Prompt-injection-as-access-control gap — the attacker doesn't compromise the MCP server directly; they feed adversarial input that the AI passes through.",
|
|
444
|
+
"NIS2-Art21-patch-management": "Patch management presumes traditional CVE timelines; MCP plugin ecosystem patch awareness lags."
|
|
445
|
+
},
|
|
446
|
+
"atlas_refs": [
|
|
447
|
+
"AML.T0053",
|
|
448
|
+
"AML.T0051"
|
|
449
|
+
],
|
|
450
|
+
"attack_refs": [
|
|
451
|
+
"T1059",
|
|
452
|
+
"T1078"
|
|
453
|
+
],
|
|
454
|
+
"rwep_score": 20,
|
|
455
|
+
"rwep_factors": {
|
|
456
|
+
"cisa_kev": 0,
|
|
457
|
+
"poc_available": 20,
|
|
458
|
+
"ai_factor": 0,
|
|
459
|
+
"active_exploitation": 10,
|
|
460
|
+
"blast_radius": 15,
|
|
461
|
+
"patch_available": -15,
|
|
462
|
+
"live_patch_available": -10,
|
|
463
|
+
"reboot_required": 0
|
|
464
|
+
},
|
|
465
|
+
"rwep_notes": "P3 — patch available, mitigation via tool disable, but the class (AI-mediated argument injection into infrastructure tools) is operationally important to track.",
|
|
466
|
+
"epss_score": 0.00039,
|
|
467
|
+
"epss_percentile": 0.11727,
|
|
468
|
+
"epss_date": "2026-05-13",
|
|
469
|
+
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-39884",
|
|
470
|
+
"cwe_refs": [
|
|
471
|
+
"CWE-88"
|
|
472
|
+
],
|
|
473
|
+
"source_verified": "2026-05-13",
|
|
474
|
+
"verification_sources": [
|
|
475
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2026-39884",
|
|
476
|
+
"https://github.com/Flux159/mcp-server-kubernetes/security/advisories/GHSA-4xqg-gf5c-ghwq"
|
|
477
|
+
],
|
|
478
|
+
"vendor_advisories": [
|
|
479
|
+
{
|
|
480
|
+
"vendor": "Flux159",
|
|
481
|
+
"advisory_id": "GHSA-4xqg-gf5c-ghwq",
|
|
482
|
+
"url": "https://github.com/Flux159/mcp-server-kubernetes/security/advisories/GHSA-4xqg-gf5c-ghwq",
|
|
483
|
+
"severity": "high",
|
|
484
|
+
"published_date": "2026-04-15"
|
|
485
|
+
}
|
|
486
|
+
],
|
|
487
|
+
"iocs": {
|
|
488
|
+
"payload_artifacts": [
|
|
489
|
+
"src/tools/port_forward.ts startPortForward() / executeKubectlCommandAsync() in any version <= 3.4.0 — calls `.split(' ')` on user-input-concatenated command string",
|
|
490
|
+
"dist/tools/port_forward.js — compiled artifact in installed package"
|
|
491
|
+
],
|
|
492
|
+
"behavioral": [
|
|
493
|
+
"MCP audit log showing port_forward tool calls with resourceName containing spaces or kubectl flag prefixes (`--`, `-n`)",
|
|
494
|
+
"kubectl port-forward processes with --address=0.0.0.0 on hosts that never invoke port-forward manually",
|
|
495
|
+
"kubectl port-forward processes targeting kube-system / kube-public namespaces when the operator's intended namespace was a workload namespace",
|
|
496
|
+
"Multiple -n flags in a single kubectl invocation (split-by-space duplicate-flag injection signature)"
|
|
497
|
+
],
|
|
498
|
+
"runtime_syscall": [
|
|
499
|
+
"execve of kubectl with argv containing /^--address=/ from a parent process in node_modules/mcp-server-kubernetes/dist/",
|
|
500
|
+
"Network listener bound to 0.0.0.0:<port> by a kubectl process on a host that should only port-forward to localhost"
|
|
501
|
+
]
|
|
502
|
+
},
|
|
503
|
+
"last_updated": "2026-05-13"
|
|
504
|
+
},
|
|
505
|
+
"CVE-2026-42208": {
|
|
506
|
+
"name": "BerriAI LiteLLM Proxy Auth SQL Injection",
|
|
507
|
+
"type": "RCE-via-sql-injection",
|
|
508
|
+
"cvss_score": 9.8,
|
|
509
|
+
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
510
|
+
"cvss_v4_score": 9.3,
|
|
511
|
+
"cvss_v4_vector": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
|
|
512
|
+
"cisa_kev": true,
|
|
513
|
+
"cisa_kev_date": "2026-05-08",
|
|
514
|
+
"cisa_kev_due_date": "2026-05-29",
|
|
515
|
+
"poc_available": true,
|
|
516
|
+
"poc_description": "GHSA-r75f-5x8p-qvmc documents the sink shape — crafted Authorization header to any LLM API route reaches the vulnerable query through error-handling paths. KEV-listed implies in-wild exploitation evidence.",
|
|
517
|
+
"ai_discovered": false,
|
|
518
|
+
"ai_assisted_weaponization": false,
|
|
519
|
+
"active_exploitation": "confirmed",
|
|
520
|
+
"active_exploitation_notes": "CISA KEV listing criterion is in-wild exploitation evidence.",
|
|
521
|
+
"affected": "BerriAI LiteLLM Proxy — open-source LLM-API gateway managing credentials + routing across model providers. Used in front of AI agent stacks, MCP-server fronts, multi-model proxy deployments. Substantial production footprint.",
|
|
522
|
+
"affected_versions": [
|
|
523
|
+
"litellm >= 1.81.16",
|
|
524
|
+
"litellm < 1.83.7"
|
|
525
|
+
],
|
|
526
|
+
"vector": "Authorization header value passed directly into a SQL query in the proxy's auth path. Crafted bearer-token-shape strings reach the error-logging pathway which executes SQL with the attacker-controlled value as a string-concatenated parameter. Result: read/modify the managed-credentials DB without prior auth.",
|
|
527
|
+
"complexity": "low",
|
|
528
|
+
"complexity_notes": "Curl-able exploit — POST to /chat/completions with a SQL-injection payload in Authorization. Network-reachable, no auth, no UI.",
|
|
529
|
+
"patch_available": true,
|
|
530
|
+
"patch_required_reboot": false,
|
|
531
|
+
"live_patch_available": true,
|
|
532
|
+
"live_patch_tools": [
|
|
533
|
+
"Upgrade to litellm 1.83.7+ (parameterised query — caller-supplied value is now a SQL parameter not a concatenated string)",
|
|
534
|
+
"Temporary workaround: `general_settings: disable_error_logs: true` removes the error-handling pathway the injection abuses"
|
|
535
|
+
],
|
|
536
|
+
"framework_control_gaps": {
|
|
537
|
+
"NIST-800-53-SI-10": "Input validation control doesn't address argument-vs-statement distinction in SQL libraries. SI-10 is satisfied by 'we validate inputs' regardless of whether the validation runs before the SQL parameter binding.",
|
|
538
|
+
"OWASP-LLM-Top-10-2025-LLM01": "Prompt injection control set doesn't address the AI-PROXY backend SQL surface — LiteLLM is the substrate that gates LLM API access, not the LLM itself.",
|
|
539
|
+
"NIS2-Art21-incident-handling": "Cryptographic measures control doesn't address application-layer SQL injection.",
|
|
540
|
+
"EU-AI-Act-Art-15": "Robustness + cybersecurity requirement is undefined operationally for AI gateway infrastructure."
|
|
541
|
+
},
|
|
542
|
+
"atlas_refs": [
|
|
543
|
+
"AML.T0055"
|
|
544
|
+
],
|
|
545
|
+
"attack_refs": [
|
|
546
|
+
"T1190",
|
|
547
|
+
"T1078.001"
|
|
548
|
+
],
|
|
549
|
+
"rwep_score": 65,
|
|
550
|
+
"rwep_factors": {
|
|
551
|
+
"cisa_kev": 25,
|
|
552
|
+
"poc_available": 20,
|
|
553
|
+
"ai_factor": 0,
|
|
554
|
+
"active_exploitation": 20,
|
|
555
|
+
"blast_radius": 25,
|
|
556
|
+
"patch_available": -15,
|
|
557
|
+
"live_patch_available": -10,
|
|
558
|
+
"reboot_required": 0
|
|
559
|
+
},
|
|
560
|
+
"rwep_notes": "Operationally P1 — KEV-listed, network-vector, no auth, full credential DB compromise. AI-stack fleets running LiteLLM as the gateway should patch within the KEV 21-day window at minimum.",
|
|
561
|
+
"epss_score": 0.37368,
|
|
562
|
+
"epss_percentile": 0.9722,
|
|
563
|
+
"epss_date": "2026-05-13",
|
|
564
|
+
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-42208",
|
|
565
|
+
"cwe_refs": [
|
|
566
|
+
"CWE-89"
|
|
567
|
+
],
|
|
568
|
+
"source_verified": "2026-05-13",
|
|
569
|
+
"verification_sources": [
|
|
570
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2026-42208",
|
|
571
|
+
"https://github.com/BerriAI/litellm/security/advisories/GHSA-r75f-5x8p-qvmc",
|
|
572
|
+
"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-42208"
|
|
573
|
+
],
|
|
574
|
+
"vendor_advisories": [
|
|
575
|
+
{
|
|
576
|
+
"vendor": "BerriAI",
|
|
577
|
+
"advisory_id": "GHSA-r75f-5x8p-qvmc",
|
|
578
|
+
"url": "https://github.com/BerriAI/litellm/security/advisories/GHSA-r75f-5x8p-qvmc",
|
|
579
|
+
"severity": "critical",
|
|
580
|
+
"published_date": "2026-05-08"
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"vendor": "CISA KEV",
|
|
584
|
+
"advisory_id": null,
|
|
585
|
+
"url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-42208",
|
|
586
|
+
"severity": "critical",
|
|
587
|
+
"published_date": "2026-05-08"
|
|
588
|
+
}
|
|
589
|
+
],
|
|
590
|
+
"iocs": {
|
|
591
|
+
"payload_artifacts": [
|
|
592
|
+
"POST /chat/completions with Authorization header value containing SQL-injection metacharacters (`'`, `--`, `OR 1=1`, UNION-based payloads)",
|
|
593
|
+
"Any HTTP request to a LiteLLM proxy where the Authorization header value is unusually long (> 100 chars) or contains characters outside [A-Za-z0-9\\-_.~+/=]"
|
|
594
|
+
],
|
|
595
|
+
"behavioral": [
|
|
596
|
+
"LiteLLM proxy db (default sqlite or postgres) showing new rows in the LiteLLM_VerificationToken / LiteLLM_UserTable created without a corresponding admin-UI session",
|
|
597
|
+
"LiteLLM error logs containing parameterised-SQL failure shapes that include the Authorization header string verbatim (pre-1.83.7 the value lands in error logs in cleartext)",
|
|
598
|
+
"Outbound network from a LiteLLM proxy host to a model-provider endpoint using a freshly-issued virtual key that has no admin-event history",
|
|
599
|
+
"Mass key-generation events in LiteLLM logs (the SQLi path includes a key-mint primitive)"
|
|
178
600
|
],
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"RHEL: kpatch-livepatch-*-CVE-2026-31431 RPM installed but not in `kpatch list` Loaded patch modules section (package-installed-without-load silent exposure)",
|
|
182
|
-
"Ubuntu: `canonical-livepatch status --verbose` 'fixes:' list does not include CVE-2026-31431 while kernel in affected range"
|
|
601
|
+
"c2_indicators": [
|
|
602
|
+
"Outbound from a LiteLLM proxy host to model-provider endpoints (openai, anthropic, etc.) using virtual keys not minted via the admin UI (compromised proxy uses its own stolen keys to mask attacker traffic as legitimate proxy traffic)"
|
|
183
603
|
],
|
|
184
|
-
"
|
|
604
|
+
"credential_paths_scanned": [
|
|
605
|
+
"LiteLLM proxy DATABASE_URL-pointed database (sqlite file or postgres connection) — once SQLi reaches the DB, the entire managed-credentials table is read/write",
|
|
606
|
+
"Environment variables LITELLM_MASTER_KEY, DATABASE_URL on the proxy host"
|
|
607
|
+
]
|
|
185
608
|
},
|
|
186
609
|
"last_updated": "2026-05-13"
|
|
187
610
|
},
|
|
@@ -238,7 +661,9 @@
|
|
|
238
661
|
"epss_date": "2026-05-13",
|
|
239
662
|
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-43284",
|
|
240
663
|
"epss_correction_note": "v0.12.9: refreshed from live FIRST API. Previous values (0.18 / 0.88) were estimates for the newly-published CVE; cold-start EPSS routinely overstates newly-cataloged kernel CVEs.",
|
|
241
|
-
"cwe_refs": [
|
|
664
|
+
"cwe_refs": [
|
|
665
|
+
"CWE-123"
|
|
666
|
+
],
|
|
242
667
|
"source_verified": "2026-05-13",
|
|
243
668
|
"verification_sources": [
|
|
244
669
|
"https://nvd.nist.gov/vuln/detail/CVE-2026-43284"
|
|
@@ -288,18 +713,32 @@
|
|
|
288
713
|
}
|
|
289
714
|
],
|
|
290
715
|
"subsystem_anchors": {
|
|
291
|
-
"kernel_modules": [
|
|
716
|
+
"kernel_modules": [
|
|
717
|
+
"esp4",
|
|
718
|
+
"esp6",
|
|
719
|
+
"xfrm_user",
|
|
720
|
+
"xfrm_algo"
|
|
721
|
+
],
|
|
292
722
|
"kernel_symbols": [
|
|
293
|
-
"esp_input",
|
|
294
|
-
"
|
|
295
|
-
"
|
|
723
|
+
"esp_input",
|
|
724
|
+
"esp_input_tail",
|
|
725
|
+
"esp_input_done2",
|
|
726
|
+
"esp6_input",
|
|
727
|
+
"esp6_input_done2",
|
|
728
|
+
"xfrm_input",
|
|
729
|
+
"xfrm_rcv_cb",
|
|
730
|
+
"xfrm_replay_advance"
|
|
731
|
+
],
|
|
732
|
+
"procfs_paths": [
|
|
733
|
+
"/proc/net/xfrm_stat"
|
|
296
734
|
],
|
|
297
|
-
"procfs_paths": ["/proc/net/xfrm_stat"],
|
|
298
735
|
"syscall_surface": [
|
|
299
736
|
"socket(AF_NETLINK, SOCK_RAW, NETLINK_XFRM=6)",
|
|
300
737
|
"sendmsg() to xfrm netlink with XFRM_MSG_NEWSA / XFRM_MSG_UPDSA"
|
|
301
738
|
],
|
|
302
|
-
"caps_required_legit": [
|
|
739
|
+
"caps_required_legit": [
|
|
740
|
+
"CAP_NET_ADMIN"
|
|
741
|
+
],
|
|
303
742
|
"caps_required_exploit": "CAP_NET_ADMIN within user namespace if unprivileged_userns_clone=1; else CAP_NET_ADMIN on host",
|
|
304
743
|
"deployment_prevalence_note": "IPsec subsystem present in essentially every distro kernel (CONFIG_XFRM=y). Module ESP4/ESP6 loads lazily on first use; presence of /proc/net/xfrm_stat alone does not indicate active IPsec — check `ip xfrm state` for live SAs."
|
|
305
744
|
},
|
|
@@ -364,7 +803,9 @@
|
|
|
364
803
|
"epss_date": "2026-05-13",
|
|
365
804
|
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-43500",
|
|
366
805
|
"epss_correction_note": "v0.12.9: refreshed from live FIRST API (cold-start cleanup).",
|
|
367
|
-
"cwe_refs": [
|
|
806
|
+
"cwe_refs": [
|
|
807
|
+
"CWE-787"
|
|
808
|
+
],
|
|
368
809
|
"source_verified": "2026-05-13",
|
|
369
810
|
"verification_sources": [
|
|
370
811
|
"https://nvd.nist.gov/vuln/detail/CVE-2026-43500"
|
|
@@ -406,275 +847,63 @@
|
|
|
406
847
|
"published_date": "2026-04-04"
|
|
407
848
|
},
|
|
408
849
|
{
|
|
409
|
-
"vendor": "Microsoft (WSL2)",
|
|
410
|
-
"advisory_id": null,
|
|
411
|
-
"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-43500",
|
|
412
|
-
"severity": "important",
|
|
413
|
-
"published_date": "2026-04-05"
|
|
414
|
-
}
|
|
415
|
-
],
|
|
416
|
-
"subsystem_anchors": {
|
|
417
|
-
"kernel_modules": ["rxrpc", "af_rxrpc", "kafs"],
|
|
418
|
-
"kernel_symbols": [
|
|
419
|
-
"rxrpc_recvmsg", "rxrpc_sendmsg",
|
|
420
|
-
"rxrpc_input_packet", "rxrpc_input_data",
|
|
421
|
-
"rxrpc_alloc_skb", "rxrpc_kernel_send_data",
|
|
422
|
-
"afs_make_call", "afs_deliver_to_call"
|
|
423
|
-
],
|
|
424
|
-
"procfs_paths": [
|
|
425
|
-
"/proc/net/rxrpc/calls",
|
|
426
|
-
"/proc/net/rxrpc/conns",
|
|
427
|
-
"/proc/net/rxrpc/peers",
|
|
428
|
-
"/proc/net/rxrpc/locals"
|
|
429
|
-
],
|
|
430
|
-
"syscall_surface": [
|
|
431
|
-
"socket(AF_RXRPC, SOCK_DGRAM, PF_INET|PF_INET6)",
|
|
432
|
-
"setsockopt(RXRPC_SECURITY_KEY / RXRPC_EXCLUSIVE_CONNECTION / RXRPC_UPGRADEABLE_SERVICE)"
|
|
433
|
-
],
|
|
434
|
-
"caps_required_legit": "none — AF_RXRPC sockets openable by any user with the protocol family compiled in",
|
|
435
|
-
"caps_required_exploit": "none for socket open; CAP_NET_ADMIN not required — this is part of why RxRPC is attractive in a chain",
|
|
436
|
-
"deployment_prevalence_note": "RxRPC present in mainline as tristate module (CONFIG_AF_RXRPC=m). Loaded only on demand; only first-party in-tree consumer is kafs (CONFIG_AFS_FS). Estimated <2% of enterprise Linux hosts have rxrpc loaded at any given moment. Low ambient noise makes any AF_RXRPC socket open by a non-AFS process a high-signal IoC.",
|
|
437
|
-
"legitimate_rxrpc_openers": [
|
|
438
|
-
"Kernel threads: kafsd (per-namespace), kworker doing kafs work",
|
|
439
|
-
"OpenAFS suite: afsd, aklog, unlog, tokens, fs, vos, pts, bos, kas, udebug, cmdebug, kpasswd, klog, rxdebug, rxgen, xstat_*",
|
|
440
|
-
"kafs-utils equivalents (varies by distro)",
|
|
441
|
-
"Filesystem mount processes: mount.afs, mount.kafs"
|
|
442
|
-
]
|
|
443
|
-
},
|
|
444
|
-
"iocs": {
|
|
445
|
-
"behavioral": [
|
|
446
|
-
"Any process not on the kafs/OpenAFS allowlist (afsd, aklog, fs, vos, pts, bos, kas, kpasswd, rxdebug, mount.afs, mount.kafs, kafsd, kworker) opening AF_RXRPC socket — RxRPC has near-zero ambient noise outside AFS environments",
|
|
447
|
-
"/proc/net/rxrpc/calls non-empty on a host with no AFS configuration (/etc/openafs/CellServDB absent AND /etc/krb5.conf absent)",
|
|
448
|
-
"lsmod contains rxrpc OR af_rxrpc AND lsmod does NOT contain kafs AND /etc/openafs/CellServDB does not exist — module loaded without its only first-party consumer",
|
|
449
|
-
"Outbound UDP/7000-7007 (kafs RxRPC port range) from a host not declared as an AFS client"
|
|
450
|
-
],
|
|
451
|
-
"false_positive_distinguishers": [
|
|
452
|
-
"Academic / research / national-lab environments commonly run OpenAFS — establish per-host baseline rather than fleet-wide block",
|
|
453
|
-
"Integration tests (kafs-testing, OpenAFS regression suite) open AF_RXRPC briefly — distinguish by parent process and lifetime <60s",
|
|
454
|
-
"Check for kafs-testing or OpenAFS source tree in /home or /opt; check short-lived (<5min) module load via `dmesg | grep rxrpc` timestamps"
|
|
455
|
-
]
|
|
456
|
-
},
|
|
457
|
-
"pairing_note": "CVE-2026-43500 only realizes its full primitive when chained with CVE-2026-43284. Detection of either subsystem being exercised on a host that should have neither is itself the chain-detection signal. Simultaneous match of esp-module-loaded-no-policy AND rxrpc-active-call-no-afs-config should escalate to a deterministic paired finding.",
|
|
458
|
-
"last_updated": "2026-05-13"
|
|
459
|
-
},
|
|
460
|
-
"CVE-2025-53773": {
|
|
461
|
-
"name": "GitHub Copilot / VS Code 'YOLO mode' Prompt Injection RCE",
|
|
462
|
-
"type": "RCE-via-prompt-injection",
|
|
463
|
-
"cvss_score": 7.8,
|
|
464
|
-
"cvss_vector": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
|
|
465
|
-
"cvss_correction_note": "v0.12.6 source audit corrected from CVSS 9.6/AV:N (network) to CVSS 7.8/AV:L (local) — the attack is local-vector via developer-side IDE interaction; the attacker does not reach in over the network. NVD authoritative.",
|
|
466
|
-
"cwe_refs": ["CWE-77"],
|
|
467
|
-
"cisa_kev": false,
|
|
468
|
-
"cisa_kev_date": null,
|
|
469
|
-
"poc_available": true,
|
|
470
|
-
"poc_description": "Published by Johann Rehberger (Embrace the Red, August 2025). Hidden instructions in any agent-readable content (source comments, README, GitHub issues, tool-call responses) coerce Copilot agent mode to write \"chat.tools.autoApprove\": true to .vscode/settings.json, flipping the agent into 'YOLO mode' where every subsequent shell tool call auto-approves without user confirmation. Demo executes calc.exe / Calculator.app via the autoapproved run_in_terminal tool.",
|
|
471
|
-
"ai_discovered": false,
|
|
472
|
-
"ai_assisted_weaponization": true,
|
|
473
|
-
"ai_assisted_notes": "The vulnerability IS in an AI tool (Copilot agent mode). Attack chain bottlenecks on a structural settings-file write — converts the 'any text could be injection' fuzzy detection problem into a one-line filesystem IoC.",
|
|
474
|
-
"active_exploitation": "suspected",
|
|
475
|
-
"affected": "Microsoft Visual Studio 2022 17.14.0-17.14.11 (fixed in 17.14.12). GitHub Copilot Chat extension on VS Code at versions predating the August 2025 Patch Tuesday fix. Architectural surface affects any Copilot-agent-mode-enabled environment.",
|
|
476
|
-
"affected_versions": [
|
|
477
|
-
"Visual Studio 2022: >=17.14.0, <17.14.12",
|
|
478
|
-
"GitHub Copilot Chat (VS Code extension): versions predating the August 2025 Patch Tuesday fix"
|
|
479
|
-
],
|
|
480
|
-
"vector": "Three-step chain: (1) attacker plants instructions in any content the agent reads — source-file comments, README, issue body, web-fetched docs, MCP tool response; (2) Copilot agent mode follows the planted instructions to write `\"chat.tools.autoApprove\": true` into `.vscode/settings.json` (workspace or user-global) — file write is silent and persistent, no in-editor diff shown; (3) every subsequent shell tool call auto-approves without user confirmation, giving full local code execution under the developer's identity. Worm angle (demonstrated): post-exploitation can `git commit` the malicious settings file and push it to other repos.",
|
|
481
|
-
"complexity": "low",
|
|
482
|
-
"complexity_notes": "Attacker crafts agent-readable content. The agent writes the YOLO-mode flag itself; no race condition or timing dependency. Invisible Unicode Tag-block (U+E0000-U+E007F) variants demonstrated for content-level evasion.",
|
|
483
|
-
"patch_available": true,
|
|
484
|
-
"patch_required_reboot": false,
|
|
485
|
-
"live_patch_available": true,
|
|
486
|
-
"live_patch_tools": [
|
|
487
|
-
"Visual Studio 17.14.12 (August 2025 Patch Tuesday)",
|
|
488
|
-
"GitHub Copilot Chat extension auto-update"
|
|
489
|
-
],
|
|
490
|
-
"framework_control_gaps": {
|
|
491
|
-
"ALL-MAJOR-FRAMEWORKS": "No framework has a control category for AI-agent-configuration bypass of user confirmation. Agent writes a settings file the user never sees a diff for; access control treats this as the developer's authorized action.",
|
|
492
|
-
"NIST-800-53-AC-2": "AI agent actions use the developer's authorized service account — AC-2 does not constrain agent-config bypass.",
|
|
493
|
-
"NIST-800-53-CM-7": "Least functionality does not address agent-mode auto-approval flags.",
|
|
494
|
-
"SOC2-CC6": "Logical access controls don't apply to model-context-window-mediated actions."
|
|
495
|
-
},
|
|
496
|
-
"atlas_refs": [
|
|
497
|
-
"AML.T0051",
|
|
498
|
-
"AML.T0054"
|
|
499
|
-
],
|
|
500
|
-
"attack_refs": [
|
|
501
|
-
"T1059",
|
|
502
|
-
"T1059.001",
|
|
503
|
-
"T1190"
|
|
504
|
-
],
|
|
505
|
-
"rwep_score": 30,
|
|
506
|
-
"rwep_factors": {
|
|
507
|
-
"cisa_kev": 0,
|
|
508
|
-
"poc_available": 20,
|
|
509
|
-
"ai_factor": 15,
|
|
510
|
-
"active_exploitation": 10,
|
|
511
|
-
"blast_radius": 10,
|
|
512
|
-
"patch_available": -15,
|
|
513
|
-
"live_patch_available": -10,
|
|
514
|
-
"reboot_required": 0
|
|
515
|
-
},
|
|
516
|
-
"rwep_notes": "RWEP recomputed in v0.12.6 after CVSS 9.6→7.8 correction. AV:L (local) reduces blast_radius weight; vendor patch + auto-updating IDE reduce live_patch_available impact.",
|
|
517
|
-
"epss_score": 0.046,
|
|
518
|
-
"epss_percentile": 0.893,
|
|
519
|
-
"epss_date": "2026-05-13",
|
|
520
|
-
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2025-53773",
|
|
521
|
-
"source_verified": "2026-05-13",
|
|
522
|
-
"verification_sources": [
|
|
523
|
-
"https://nvd.nist.gov/vuln/detail/CVE-2025-53773",
|
|
524
|
-
"https://embracethered.com/blog/posts/2025/github-copilot-remote-code-execution-via-prompt-injection/",
|
|
525
|
-
"https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-53773",
|
|
526
|
-
"https://www.wiz.io/vulnerability-database/cve/cve-2025-53773"
|
|
527
|
-
],
|
|
528
|
-
"vendor_advisories": [
|
|
529
|
-
{
|
|
530
|
-
"vendor": "Microsoft MSRC",
|
|
531
|
-
"advisory_id": "CVE-2025-53773",
|
|
532
|
-
"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-53773",
|
|
533
|
-
"severity": "high",
|
|
534
|
-
"published_date": "2025-08-12"
|
|
535
|
-
},
|
|
536
|
-
{
|
|
537
|
-
"vendor": "GitHub Security Advisories",
|
|
538
|
-
"advisory_id": null,
|
|
539
|
-
"url": "https://github.com/advisories?query=CVE-2025-53773",
|
|
540
|
-
"severity": "high",
|
|
541
|
-
"published_date": "2025-08-12"
|
|
542
|
-
}
|
|
543
|
-
],
|
|
544
|
-
"iocs": {
|
|
545
|
-
"filesystem_post_exploit": [
|
|
546
|
-
".vscode/settings.json (workspace) OR ~/.vscode/settings.json (user-global) contains \"chat.tools.autoApprove\": true — PRIMARY post-exploitation IoC. Setting is experimental + off by default + structural pivot the entire chain depends on. Near-zero false positive for non-developer users.",
|
|
547
|
-
".vscode/settings.json content matches regex \"chat\\\\.(experimental|tools)\\\\..*\":\\\\s*true — broader sweep for any auto-approve / experimental flag in workspace-scoped settings.",
|
|
548
|
-
"settings.json mtime falls inside Copilot agent-mode session window AND diff includes any key under chat.tools.* or github.copilot.advanced.* — Copilot writes are immediately persistent, no diff-approval UI"
|
|
549
|
-
],
|
|
550
|
-
"repository_supply_chain": [
|
|
551
|
-
"Repository ships a checked-in .vscode/settings.json with chat.tools.autoApprove or chat.experimental.*: true — pre-arms YOLO mode for any cloner running Copilot agent mode (supply-chain plant variant)",
|
|
552
|
-
"Repository content (README, source comments, issue/PR bodies) contains literal 'chat.tools.autoApprove' OR 'autoApprove\": true' OR 'YOLO mode' — payload must reference target key by name (suppress on this catalog, MSRC, embracethered.com)",
|
|
553
|
-
"Files in agent-readable surfaces (README.md, source comments, .github/*, CONTRIBUTING.md) contain codepoints in Unicode Tag block U+E0000-U+E007F or zero-width control characters U+200B-U+200F / U+202A-U+202E / U+2060-U+2064 — invisible-instruction injection technique"
|
|
554
|
-
],
|
|
555
|
-
"behavioral": [
|
|
556
|
-
"Copilot agent tool-call sequence: read_file|web_fetch|github_issue_read → write_file('.vscode/settings.json' OR '*/settings.json') → run_in_terminal, no request_user_confirmation between writes and exec",
|
|
557
|
-
"Editor (Code.exe / 'Code Helper') parent process spawns interactive shell (powershell/pwsh/bash/zsh) whose command line is not in user shell history AND not in {--login, REPL}"
|
|
558
|
-
],
|
|
559
|
-
"worm_propagation": [
|
|
560
|
-
"Agent session writes .vscode/settings.json, then issues git add + git commit + git push within the same session — wormable variant demonstrated by Rehberger"
|
|
561
|
-
],
|
|
562
|
-
"version_exposure": [
|
|
563
|
-
"Visual Studio 2022 installation with productVersion < 17.14.12 (Windows registry: HKLM\\\\SOFTWARE\\\\Microsoft\\\\VisualStudio\\\\Setup; or vswhere.exe -property installationVersion)",
|
|
564
|
-
"GitHub Copilot Chat extension at versions predating August 2025 Patch Tuesday fix"
|
|
565
|
-
],
|
|
566
|
-
"forensic_note": "The .vscode/settings.json modification is silent and persistent — no in-editor diff is shown to the user. Defenders investigating suspected compromise should snapshot workspace + user-global settings.json BEFORE remediating; the file IS the primary forensic artifact."
|
|
567
|
-
},
|
|
568
|
-
"last_updated": "2026-05-13"
|
|
569
|
-
},
|
|
570
|
-
"CVE-2026-30615": {
|
|
571
|
-
"name": "Windsurf MCP Local-Vector RCE via Adversarial Tool Response",
|
|
572
|
-
"type": "RCE-supply-chain",
|
|
573
|
-
"cvss_score": 8.0,
|
|
574
|
-
"cvss_vector": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H",
|
|
575
|
-
"cvss_correction_note": "v0.12.9 (2026-05-13): catalog previously stored CVSS 9.8 / AV:N. NVD authoritative is 8.0 / AV:L (local attack vector; attacker must control HTML content the Windsurf MCP client processes — not a network-vector zero-interaction RCE as initially cataloged). Source: https://nvd.nist.gov/vuln/detail/CVE-2026-30615 (published 2026-04-15, last_modified 2026-04-27, vulnStatus: Deferred). Recompute RWEP with blast_radius reduced from 30→20 to reflect local-vector + Scope:U.",
|
|
576
|
-
"cisa_kev": false,
|
|
577
|
-
"cisa_kev_date": null,
|
|
578
|
-
"poc_available": true,
|
|
579
|
-
"poc_description": "Partial — MCP client vulnerability in Windsurf allows malicious MCP server to achieve code execution without user interaction",
|
|
580
|
-
"ai_discovered": false,
|
|
581
|
-
"ai_assisted_weaponization": false,
|
|
582
|
-
"active_exploitation": "suspected",
|
|
583
|
-
"affected": "Windsurf IDE users with MCP servers installed. Architectural attack surface affects all MCP-capable AI coding assistants (Cursor, VS Code, Claude Code, Gemini CLI). 150M+ combined downloads.",
|
|
584
|
-
"affected_versions": [
|
|
585
|
-
"Windsurf < patched version"
|
|
586
|
-
],
|
|
587
|
-
"vector": "Malicious MCP server delivers adversarial tool response → AI assistant follows instructions without user interaction → code execution in user context",
|
|
588
|
-
"complexity": "low",
|
|
589
|
-
"complexity_notes": "Attacker needs to get a malicious MCP server installed (supply chain, typosquatting, or compromise of legitimate server). Once installed, exploitation is automatic.",
|
|
590
|
-
"patch_available": true,
|
|
591
|
-
"patch_required_reboot": false,
|
|
592
|
-
"live_patch_available": true,
|
|
593
|
-
"live_patch_tools": [
|
|
594
|
-
"IDE update — vendor patch"
|
|
595
|
-
],
|
|
596
|
-
"framework_control_gaps": {
|
|
597
|
-
"NIST-800-53-SA-12": "Supply chain protection doesn't contemplate MCP server trust as a category.",
|
|
598
|
-
"NIST-800-53-CM-7": "Least functionality doesn't address AI tool plugin authorization.",
|
|
599
|
-
"ISO-27001-2022-A.8.30": "Outsourced development controls don't cover MCP server trust.",
|
|
600
|
-
"SOC2-CC9": "Vendor management doesn't reach developer-installed AI tool plugins."
|
|
601
|
-
},
|
|
602
|
-
"atlas_refs": [
|
|
603
|
-
"AML.T0010",
|
|
604
|
-
"AML.T0016",
|
|
605
|
-
"AML.T0051",
|
|
606
|
-
"AML.T0096"
|
|
607
|
-
],
|
|
608
|
-
"attack_refs": [
|
|
609
|
-
"T1195.001",
|
|
610
|
-
"T1059",
|
|
611
|
-
"T1552.001",
|
|
612
|
-
"T1041"
|
|
613
|
-
],
|
|
614
|
-
"rwep_score": 35,
|
|
615
|
-
"rwep_factors": {
|
|
616
|
-
"cisa_kev": 0,
|
|
617
|
-
"poc_available": 20,
|
|
618
|
-
"ai_factor": 0,
|
|
619
|
-
"active_exploitation": 10,
|
|
620
|
-
"blast_radius": 30,
|
|
621
|
-
"patch_available": -15,
|
|
622
|
-
"live_patch_available": -10,
|
|
623
|
-
"reboot_required": 0
|
|
624
|
-
},
|
|
625
|
-
"epss_score": 0.14,
|
|
626
|
-
"epss_percentile": 0.86,
|
|
627
|
-
"epss_date": "2026-05-11",
|
|
628
|
-
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-30615",
|
|
629
|
-
"source_verified": "2026-05-01",
|
|
630
|
-
"verification_sources": [
|
|
631
|
-
"https://nvd.nist.gov/vuln/detail/CVE-2026-30615"
|
|
632
|
-
],
|
|
633
|
-
"vendor_advisories": [
|
|
634
|
-
{
|
|
635
|
-
"vendor": "Codeium / Windsurf",
|
|
636
|
-
"advisory_id": null,
|
|
637
|
-
"url": "https://codeium.com/security/CVE-2026-30615",
|
|
638
|
-
"severity": "critical",
|
|
639
|
-
"published_date": "2026-02-18"
|
|
640
|
-
},
|
|
641
|
-
{
|
|
642
|
-
"vendor": "GitHub Security Advisories",
|
|
850
|
+
"vendor": "Microsoft (WSL2)",
|
|
643
851
|
"advisory_id": null,
|
|
644
|
-
"url": "https://
|
|
645
|
-
"severity": "
|
|
646
|
-
"published_date": "2026-
|
|
852
|
+
"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-43500",
|
|
853
|
+
"severity": "important",
|
|
854
|
+
"published_date": "2026-04-05"
|
|
647
855
|
}
|
|
648
856
|
],
|
|
649
|
-
"
|
|
650
|
-
"
|
|
651
|
-
"
|
|
652
|
-
"
|
|
653
|
-
"
|
|
654
|
-
"Tool response references sensitive path: ~/.ssh/id_rsa, ~/.aws/credentials, ~/.config/gcloud, ~/.kube/config, ~/.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.config/claude/config.json, ~/.claude/settings.json, ~/.npmrc — OR process.env.{AWS_SECRET*, GITHUB_TOKEN, NPM_TOKEN, OPENAI_API_KEY, ANTHROPIC_API_KEY} (cross-server credential-shadow operational signature)"
|
|
857
|
+
"subsystem_anchors": {
|
|
858
|
+
"kernel_modules": [
|
|
859
|
+
"rxrpc",
|
|
860
|
+
"af_rxrpc",
|
|
861
|
+
"kafs"
|
|
655
862
|
],
|
|
656
|
-
"
|
|
657
|
-
"
|
|
658
|
-
"
|
|
659
|
-
"
|
|
863
|
+
"kernel_symbols": [
|
|
864
|
+
"rxrpc_recvmsg",
|
|
865
|
+
"rxrpc_sendmsg",
|
|
866
|
+
"rxrpc_input_packet",
|
|
867
|
+
"rxrpc_input_data",
|
|
868
|
+
"rxrpc_alloc_skb",
|
|
869
|
+
"rxrpc_kernel_send_data",
|
|
870
|
+
"afs_make_call",
|
|
871
|
+
"afs_deliver_to_call"
|
|
660
872
|
],
|
|
661
|
-
"
|
|
662
|
-
"
|
|
663
|
-
"
|
|
664
|
-
"
|
|
665
|
-
"
|
|
666
|
-
"~/.config/Code/User/settings.json — chat.mcp.servers additions",
|
|
667
|
-
".vscode/mcp.json in project root — workspace-scoped MCP additions",
|
|
668
|
-
"~/.gemini/settings.json — mcpServers additions",
|
|
669
|
-
"package.json — postinstall script that writes any of the above"
|
|
873
|
+
"procfs_paths": [
|
|
874
|
+
"/proc/net/rxrpc/calls",
|
|
875
|
+
"/proc/net/rxrpc/conns",
|
|
876
|
+
"/proc/net/rxrpc/peers",
|
|
877
|
+
"/proc/net/rxrpc/locals"
|
|
670
878
|
],
|
|
671
|
-
"
|
|
672
|
-
"
|
|
673
|
-
"
|
|
674
|
-
|
|
675
|
-
|
|
879
|
+
"syscall_surface": [
|
|
880
|
+
"socket(AF_RXRPC, SOCK_DGRAM, PF_INET|PF_INET6)",
|
|
881
|
+
"setsockopt(RXRPC_SECURITY_KEY / RXRPC_EXCLUSIVE_CONNECTION / RXRPC_UPGRADEABLE_SERVICE)"
|
|
882
|
+
],
|
|
883
|
+
"caps_required_legit": "none — AF_RXRPC sockets openable by any user with the protocol family compiled in",
|
|
884
|
+
"caps_required_exploit": "none for socket open; CAP_NET_ADMIN not required — this is part of why RxRPC is attractive in a chain",
|
|
885
|
+
"deployment_prevalence_note": "RxRPC present in mainline as tristate module (CONFIG_AF_RXRPC=m). Loaded only on demand; only first-party in-tree consumer is kafs (CONFIG_AFS_FS). Estimated <2% of enterprise Linux hosts have rxrpc loaded at any given moment. Low ambient noise makes any AF_RXRPC socket open by a non-AFS process a high-signal IoC.",
|
|
886
|
+
"legitimate_rxrpc_openers": [
|
|
887
|
+
"Kernel threads: kafsd (per-namespace), kworker doing kafs work",
|
|
888
|
+
"OpenAFS suite: afsd, aklog, unlog, tokens, fs, vos, pts, bos, kas, udebug, cmdebug, kpasswd, klog, rxdebug, rxgen, xstat_*",
|
|
889
|
+
"kafs-utils equivalents (varies by distro)",
|
|
890
|
+
"Filesystem mount processes: mount.afs, mount.kafs"
|
|
891
|
+
]
|
|
892
|
+
},
|
|
893
|
+
"iocs": {
|
|
894
|
+
"behavioral": [
|
|
895
|
+
"Any process not on the kafs/OpenAFS allowlist (afsd, aklog, fs, vos, pts, bos, kas, kpasswd, rxdebug, mount.afs, mount.kafs, kafsd, kworker) opening AF_RXRPC socket — RxRPC has near-zero ambient noise outside AFS environments",
|
|
896
|
+
"/proc/net/rxrpc/calls non-empty on a host with no AFS configuration (/etc/openafs/CellServDB absent AND /etc/krb5.conf absent)",
|
|
897
|
+
"lsmod contains rxrpc OR af_rxrpc AND lsmod does NOT contain kafs AND /etc/openafs/CellServDB does not exist — module loaded without its only first-party consumer",
|
|
898
|
+
"Outbound UDP/7000-7007 (kafs RxRPC port range) from a host not declared as an AFS client"
|
|
899
|
+
],
|
|
900
|
+
"false_positive_distinguishers": [
|
|
901
|
+
"Academic / research / national-lab environments commonly run OpenAFS — establish per-host baseline rather than fleet-wide block",
|
|
902
|
+
"Integration tests (kafs-testing, OpenAFS regression suite) open AF_RXRPC briefly — distinguish by parent process and lifetime <60s",
|
|
903
|
+
"Check for kafs-testing or OpenAFS source tree in /home or /opt; check short-lived (<5min) module load via `dmesg | grep rxrpc` timestamps"
|
|
676
904
|
]
|
|
677
905
|
},
|
|
906
|
+
"pairing_note": "CVE-2026-43500 only realizes its full primitive when chained with CVE-2026-43284. Detection of either subsystem being exercised on a host that should have neither is itself the chain-detection signal. Simultaneous match of esp-module-loaded-no-policy AND rxrpc-active-call-no-afs-config should escalate to a deterministic paired finding.",
|
|
678
907
|
"last_updated": "2026-05-13"
|
|
679
908
|
},
|
|
680
909
|
"CVE-2026-45321": {
|
|
@@ -910,7 +1139,11 @@
|
|
|
910
1139
|
"epss_date": "2026-05-13",
|
|
911
1140
|
"epss_source": null,
|
|
912
1141
|
"epss_note": "EPSS coverage does not extend to non-CVE advisories. FIRST EPSS API only indexes CVE identifiers; MAL-* / SNYK-* / GHSA-* keys return no data. Re-query and populate epss_score when MITRE assigns a CVE id and the entry is renamed.",
|
|
913
|
-
"cwe_refs": [
|
|
1142
|
+
"cwe_refs": [
|
|
1143
|
+
"CWE-506",
|
|
1144
|
+
"CWE-77",
|
|
1145
|
+
"CWE-94"
|
|
1146
|
+
],
|
|
914
1147
|
"source_verified": "2026-05-13",
|
|
915
1148
|
"verification_sources": [
|
|
916
1149
|
"https://api.osv.dev/v1/query (POST {package:{name:elementary-data,ecosystem:PyPI},version:0.23.3}) — returns MAL-2026-3083",
|
|
@@ -992,198 +1225,5 @@
|
|
|
992
1225
|
]
|
|
993
1226
|
},
|
|
994
1227
|
"last_updated": "2026-05-13"
|
|
995
|
-
},
|
|
996
|
-
"CVE-2026-42208": {
|
|
997
|
-
"name": "BerriAI LiteLLM Proxy Auth SQL Injection",
|
|
998
|
-
"type": "RCE-via-sql-injection",
|
|
999
|
-
"cvss_score": 9.8,
|
|
1000
|
-
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
1001
|
-
"cvss_v4_score": 9.3,
|
|
1002
|
-
"cvss_v4_vector": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
|
|
1003
|
-
"cisa_kev": true,
|
|
1004
|
-
"cisa_kev_date": "2026-05-08",
|
|
1005
|
-
"cisa_kev_due_date": "2026-05-29",
|
|
1006
|
-
"poc_available": true,
|
|
1007
|
-
"poc_description": "GHSA-r75f-5x8p-qvmc documents the sink shape — crafted Authorization header to any LLM API route reaches the vulnerable query through error-handling paths. KEV-listed implies in-wild exploitation evidence.",
|
|
1008
|
-
"ai_discovered": false,
|
|
1009
|
-
"ai_assisted_weaponization": false,
|
|
1010
|
-
"active_exploitation": "confirmed",
|
|
1011
|
-
"active_exploitation_notes": "CISA KEV listing criterion is in-wild exploitation evidence.",
|
|
1012
|
-
"affected": "BerriAI LiteLLM Proxy — open-source LLM-API gateway managing credentials + routing across model providers. Used in front of AI agent stacks, MCP-server fronts, multi-model proxy deployments. Substantial production footprint.",
|
|
1013
|
-
"affected_versions": [
|
|
1014
|
-
"litellm >= 1.81.16",
|
|
1015
|
-
"litellm < 1.83.7"
|
|
1016
|
-
],
|
|
1017
|
-
"vector": "Authorization header value passed directly into a SQL query in the proxy's auth path. Crafted bearer-token-shape strings reach the error-logging pathway which executes SQL with the attacker-controlled value as a string-concatenated parameter. Result: read/modify the managed-credentials DB without prior auth.",
|
|
1018
|
-
"complexity": "low",
|
|
1019
|
-
"complexity_notes": "Curl-able exploit — POST to /chat/completions with a SQL-injection payload in Authorization. Network-reachable, no auth, no UI.",
|
|
1020
|
-
"patch_available": true,
|
|
1021
|
-
"patch_required_reboot": false,
|
|
1022
|
-
"live_patch_available": true,
|
|
1023
|
-
"live_patch_tools": [
|
|
1024
|
-
"Upgrade to litellm 1.83.7+ (parameterised query — caller-supplied value is now a SQL parameter not a concatenated string)",
|
|
1025
|
-
"Temporary workaround: `general_settings: disable_error_logs: true` removes the error-handling pathway the injection abuses"
|
|
1026
|
-
],
|
|
1027
|
-
"framework_control_gaps": {
|
|
1028
|
-
"NIST-800-53-SI-10": "Input validation control doesn't address argument-vs-statement distinction in SQL libraries. SI-10 is satisfied by 'we validate inputs' regardless of whether the validation runs before the SQL parameter binding.",
|
|
1029
|
-
"OWASP-LLM-Top-10-2025-LLM01": "Prompt injection control set doesn't address the AI-PROXY backend SQL surface — LiteLLM is the substrate that gates LLM API access, not the LLM itself.",
|
|
1030
|
-
"NIS2-Art21-incident-handling": "Cryptographic measures control doesn't address application-layer SQL injection.",
|
|
1031
|
-
"EU-AI-Act-Art-15": "Robustness + cybersecurity requirement is undefined operationally for AI gateway infrastructure."
|
|
1032
|
-
},
|
|
1033
|
-
"atlas_refs": [
|
|
1034
|
-
"AML.T0055"
|
|
1035
|
-
],
|
|
1036
|
-
"attack_refs": [
|
|
1037
|
-
"T1190",
|
|
1038
|
-
"T1078.001"
|
|
1039
|
-
],
|
|
1040
|
-
"rwep_score": 65,
|
|
1041
|
-
"rwep_factors": {
|
|
1042
|
-
"cisa_kev": 25,
|
|
1043
|
-
"poc_available": 20,
|
|
1044
|
-
"ai_factor": 0,
|
|
1045
|
-
"active_exploitation": 20,
|
|
1046
|
-
"blast_radius": 25,
|
|
1047
|
-
"patch_available": -15,
|
|
1048
|
-
"live_patch_available": -10,
|
|
1049
|
-
"reboot_required": 0
|
|
1050
|
-
},
|
|
1051
|
-
"rwep_notes": "Operationally P1 — KEV-listed, network-vector, no auth, full credential DB compromise. AI-stack fleets running LiteLLM as the gateway should patch within the KEV 21-day window at minimum.",
|
|
1052
|
-
"epss_score": 0.37368,
|
|
1053
|
-
"epss_percentile": 0.9722,
|
|
1054
|
-
"epss_date": "2026-05-13",
|
|
1055
|
-
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-42208",
|
|
1056
|
-
"cwe_refs": ["CWE-89"],
|
|
1057
|
-
"source_verified": "2026-05-13",
|
|
1058
|
-
"verification_sources": [
|
|
1059
|
-
"https://nvd.nist.gov/vuln/detail/CVE-2026-42208",
|
|
1060
|
-
"https://github.com/BerriAI/litellm/security/advisories/GHSA-r75f-5x8p-qvmc",
|
|
1061
|
-
"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-42208"
|
|
1062
|
-
],
|
|
1063
|
-
"vendor_advisories": [
|
|
1064
|
-
{
|
|
1065
|
-
"vendor": "BerriAI",
|
|
1066
|
-
"advisory_id": "GHSA-r75f-5x8p-qvmc",
|
|
1067
|
-
"url": "https://github.com/BerriAI/litellm/security/advisories/GHSA-r75f-5x8p-qvmc",
|
|
1068
|
-
"severity": "critical",
|
|
1069
|
-
"published_date": "2026-05-08"
|
|
1070
|
-
},
|
|
1071
|
-
{
|
|
1072
|
-
"vendor": "CISA KEV",
|
|
1073
|
-
"advisory_id": null,
|
|
1074
|
-
"url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-42208",
|
|
1075
|
-
"severity": "critical",
|
|
1076
|
-
"published_date": "2026-05-08"
|
|
1077
|
-
}
|
|
1078
|
-
],
|
|
1079
|
-
"iocs": {
|
|
1080
|
-
"payload_artifacts": [
|
|
1081
|
-
"POST /chat/completions with Authorization header value containing SQL-injection metacharacters (`'`, `--`, `OR 1=1`, UNION-based payloads)",
|
|
1082
|
-
"Any HTTP request to a LiteLLM proxy where the Authorization header value is unusually long (> 100 chars) or contains characters outside [A-Za-z0-9\\-_.~+/=]"
|
|
1083
|
-
],
|
|
1084
|
-
"behavioral": [
|
|
1085
|
-
"LiteLLM proxy db (default sqlite or postgres) showing new rows in the LiteLLM_VerificationToken / LiteLLM_UserTable created without a corresponding admin-UI session",
|
|
1086
|
-
"LiteLLM error logs containing parameterised-SQL failure shapes that include the Authorization header string verbatim (pre-1.83.7 the value lands in error logs in cleartext)",
|
|
1087
|
-
"Outbound network from a LiteLLM proxy host to a model-provider endpoint using a freshly-issued virtual key that has no admin-event history",
|
|
1088
|
-
"Mass key-generation events in LiteLLM logs (the SQLi path includes a key-mint primitive)"
|
|
1089
|
-
],
|
|
1090
|
-
"c2_indicators": [
|
|
1091
|
-
"Outbound from a LiteLLM proxy host to model-provider endpoints (openai, anthropic, etc.) using virtual keys not minted via the admin UI (compromised proxy uses its own stolen keys to mask attacker traffic as legitimate proxy traffic)"
|
|
1092
|
-
],
|
|
1093
|
-
"credential_paths_scanned": [
|
|
1094
|
-
"LiteLLM proxy DATABASE_URL-pointed database (sqlite file or postgres connection) — once SQLi reaches the DB, the entire managed-credentials table is read/write",
|
|
1095
|
-
"Environment variables LITELLM_MASTER_KEY, DATABASE_URL on the proxy host"
|
|
1096
|
-
]
|
|
1097
|
-
},
|
|
1098
|
-
"last_updated": "2026-05-13"
|
|
1099
|
-
},
|
|
1100
|
-
"CVE-2026-39884": {
|
|
1101
|
-
"name": "Flux159 mcp-server-kubernetes Argument Injection via port_forward",
|
|
1102
|
-
"type": "argument-injection",
|
|
1103
|
-
"cvss_score": 8.3,
|
|
1104
|
-
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L",
|
|
1105
|
-
"cisa_kev": false,
|
|
1106
|
-
"cisa_kev_date": null,
|
|
1107
|
-
"poc_available": true,
|
|
1108
|
-
"poc_description": "GHSA-4xqg-gf5c-ghwq publishes the PoC: invoke port_forward tool with resourceName containing space-delimited kubectl flags. Attacker-controllable args reach kubectl via .split(' ') concatenation in startPortForward() / executeKubectlCommandAsync().",
|
|
1109
|
-
"ai_discovered": false,
|
|
1110
|
-
"ai_assisted_weaponization": false,
|
|
1111
|
-
"active_exploitation": "suspected",
|
|
1112
|
-
"active_exploitation_notes": "No public exploitation evidence as of 2026-05-13, but the MCP-server ecosystem has known opportunistic-scan history. Treated as suspected.",
|
|
1113
|
-
"affected": "Flux159 mcp-server-kubernetes — MCP server giving AI assistants kubectl control. Installed in AI agent stacks that talk to Kubernetes clusters.",
|
|
1114
|
-
"affected_versions": [
|
|
1115
|
-
"mcp-server-kubernetes <= 3.4.0"
|
|
1116
|
-
],
|
|
1117
|
-
"vector": "AI assistant invokes the port_forward MCP tool with resourceName='pod-name --address=0.0.0.0' or similar. The MCP server builds a string-form kubectl command and uses .split(' ') instead of an args array — the attacker-controlled flag lands as a distinct argv entry to kubectl. --address=0.0.0.0 binds the port-forward to all interfaces; -n kube-system redirects to attacker-chosen namespace.",
|
|
1118
|
-
"complexity": "low",
|
|
1119
|
-
"complexity_notes": "Only requires the AI assistant to be tricked (prompt injection in retrieved docs / commit messages / MCP tool responses) into passing a tainted resourceName. PR-injection / RAG-poisoning surface upstream gates exploitation.",
|
|
1120
|
-
"patch_available": true,
|
|
1121
|
-
"patch_required_reboot": false,
|
|
1122
|
-
"live_patch_available": true,
|
|
1123
|
-
"live_patch_tools": [
|
|
1124
|
-
"Upgrade mcp-server-kubernetes to 3.5.0+ (argv-array refactor)",
|
|
1125
|
-
"Until patched: disable the port_forward tool in MCP allowlist (most operator deployments don't rely on it)"
|
|
1126
|
-
],
|
|
1127
|
-
"framework_control_gaps": {
|
|
1128
|
-
"NIST-800-53-SI-10": "Input validation control doesn't address the argv-vs-string boundary that argument injection exploits — many MCP servers concatenate user input into shell commands without registering this as a code-review failure.",
|
|
1129
|
-
"OWASP-LLM-Top-10-2025-LLM01": "Prompt-injection-as-access-control gap — the attacker doesn't compromise the MCP server directly; they feed adversarial input that the AI passes through.",
|
|
1130
|
-
"NIS2-Art21-patch-management": "Patch management presumes traditional CVE timelines; MCP plugin ecosystem patch awareness lags."
|
|
1131
|
-
},
|
|
1132
|
-
"atlas_refs": [
|
|
1133
|
-
"AML.T0053",
|
|
1134
|
-
"AML.T0051"
|
|
1135
|
-
],
|
|
1136
|
-
"attack_refs": [
|
|
1137
|
-
"T1059",
|
|
1138
|
-
"T1078"
|
|
1139
|
-
],
|
|
1140
|
-
"rwep_score": 20,
|
|
1141
|
-
"rwep_factors": {
|
|
1142
|
-
"cisa_kev": 0,
|
|
1143
|
-
"poc_available": 20,
|
|
1144
|
-
"ai_factor": 0,
|
|
1145
|
-
"active_exploitation": 10,
|
|
1146
|
-
"blast_radius": 15,
|
|
1147
|
-
"patch_available": -15,
|
|
1148
|
-
"live_patch_available": -10,
|
|
1149
|
-
"reboot_required": 0
|
|
1150
|
-
},
|
|
1151
|
-
"rwep_notes": "P3 — patch available, mitigation via tool disable, but the class (AI-mediated argument injection into infrastructure tools) is operationally important to track.",
|
|
1152
|
-
"epss_score": 0.00039,
|
|
1153
|
-
"epss_percentile": 0.11727,
|
|
1154
|
-
"epss_date": "2026-05-13",
|
|
1155
|
-
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2026-39884",
|
|
1156
|
-
"cwe_refs": ["CWE-88"],
|
|
1157
|
-
"source_verified": "2026-05-13",
|
|
1158
|
-
"verification_sources": [
|
|
1159
|
-
"https://nvd.nist.gov/vuln/detail/CVE-2026-39884",
|
|
1160
|
-
"https://github.com/Flux159/mcp-server-kubernetes/security/advisories/GHSA-4xqg-gf5c-ghwq"
|
|
1161
|
-
],
|
|
1162
|
-
"vendor_advisories": [
|
|
1163
|
-
{
|
|
1164
|
-
"vendor": "Flux159",
|
|
1165
|
-
"advisory_id": "GHSA-4xqg-gf5c-ghwq",
|
|
1166
|
-
"url": "https://github.com/Flux159/mcp-server-kubernetes/security/advisories/GHSA-4xqg-gf5c-ghwq",
|
|
1167
|
-
"severity": "high",
|
|
1168
|
-
"published_date": "2026-04-15"
|
|
1169
|
-
}
|
|
1170
|
-
],
|
|
1171
|
-
"iocs": {
|
|
1172
|
-
"payload_artifacts": [
|
|
1173
|
-
"src/tools/port_forward.ts startPortForward() / executeKubectlCommandAsync() in any version <= 3.4.0 — calls `.split(' ')` on user-input-concatenated command string",
|
|
1174
|
-
"dist/tools/port_forward.js — compiled artifact in installed package"
|
|
1175
|
-
],
|
|
1176
|
-
"behavioral": [
|
|
1177
|
-
"MCP audit log showing port_forward tool calls with resourceName containing spaces or kubectl flag prefixes (`--`, `-n`)",
|
|
1178
|
-
"kubectl port-forward processes with --address=0.0.0.0 on hosts that never invoke port-forward manually",
|
|
1179
|
-
"kubectl port-forward processes targeting kube-system / kube-public namespaces when the operator's intended namespace was a workload namespace",
|
|
1180
|
-
"Multiple -n flags in a single kubectl invocation (split-by-space duplicate-flag injection signature)"
|
|
1181
|
-
],
|
|
1182
|
-
"runtime_syscall": [
|
|
1183
|
-
"execve of kubectl with argv containing /^--address=/ from a parent process in node_modules/mcp-server-kubernetes/dist/",
|
|
1184
|
-
"Network listener bound to 0.0.0.0:<port> by a kubectl process on a host that should only port-forward to localhost"
|
|
1185
|
-
]
|
|
1186
|
-
},
|
|
1187
|
-
"last_updated": "2026-05-13"
|
|
1188
1228
|
}
|
|
1189
|
-
}
|
|
1229
|
+
}
|