@blamejs/exceptd-skills 0.9.1
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/AGENTS.md +232 -0
- package/ARCHITECTURE.md +267 -0
- package/CHANGELOG.md +616 -0
- package/CONTEXT.md +203 -0
- package/LICENSE +200 -0
- package/NOTICE +82 -0
- package/README.md +307 -0
- package/SECURITY.md +73 -0
- package/agents/README.md +81 -0
- package/agents/report-generator.md +156 -0
- package/agents/skill-updater.md +102 -0
- package/agents/source-validator.md +119 -0
- package/agents/threat-researcher.md +149 -0
- package/bin/exceptd.js +183 -0
- package/data/_indexes/_meta.json +88 -0
- package/data/_indexes/activity-feed.json +362 -0
- package/data/_indexes/catalog-summaries.json +229 -0
- package/data/_indexes/chains.json +7135 -0
- package/data/_indexes/currency.json +359 -0
- package/data/_indexes/did-ladders.json +451 -0
- package/data/_indexes/frequency.json +2072 -0
- package/data/_indexes/handoff-dag.json +476 -0
- package/data/_indexes/jurisdiction-clocks.json +967 -0
- package/data/_indexes/jurisdiction-map.json +536 -0
- package/data/_indexes/recipes.json +319 -0
- package/data/_indexes/section-offsets.json +3656 -0
- package/data/_indexes/stale-content.json +14 -0
- package/data/_indexes/summary-cards.json +1736 -0
- package/data/_indexes/theater-fingerprints.json +381 -0
- package/data/_indexes/token-budget.json +2137 -0
- package/data/_indexes/trigger-table.json +1374 -0
- package/data/_indexes/xref.json +818 -0
- package/data/atlas-ttps.json +282 -0
- package/data/cve-catalog.json +496 -0
- package/data/cwe-catalog.json +1017 -0
- package/data/d3fend-catalog.json +738 -0
- package/data/dlp-controls.json +1039 -0
- package/data/exploit-availability.json +67 -0
- package/data/framework-control-gaps.json +1255 -0
- package/data/global-frameworks.json +2913 -0
- package/data/rfc-references.json +324 -0
- package/data/zeroday-lessons.json +377 -0
- package/keys/public.pem +3 -0
- package/lib/framework-gap.js +328 -0
- package/lib/job-queue.js +195 -0
- package/lib/lint-skills.js +536 -0
- package/lib/prefetch.js +372 -0
- package/lib/refresh-external.js +713 -0
- package/lib/schemas/cve-catalog.schema.json +151 -0
- package/lib/schemas/manifest.schema.json +106 -0
- package/lib/schemas/skill-frontmatter.schema.json +113 -0
- package/lib/scoring.js +149 -0
- package/lib/sign.js +197 -0
- package/lib/ttp-mapper.js +80 -0
- package/lib/validate-catalog-meta.js +198 -0
- package/lib/validate-cve-catalog.js +213 -0
- package/lib/validate-indexes.js +83 -0
- package/lib/validate-package.js +162 -0
- package/lib/validate-vendor.js +85 -0
- package/lib/verify.js +216 -0
- package/lib/worker-pool.js +84 -0
- package/manifest-snapshot.json +1833 -0
- package/manifest.json +2108 -0
- package/orchestrator/README.md +124 -0
- package/orchestrator/dispatcher.js +140 -0
- package/orchestrator/event-bus.js +146 -0
- package/orchestrator/index.js +874 -0
- package/orchestrator/pipeline.js +201 -0
- package/orchestrator/scanner.js +327 -0
- package/orchestrator/scheduler.js +137 -0
- package/package.json +113 -0
- package/sbom.cdx.json +158 -0
- package/scripts/audit-cross-skill.js +261 -0
- package/scripts/audit-perf.js +160 -0
- package/scripts/bootstrap.js +205 -0
- package/scripts/build-indexes.js +721 -0
- package/scripts/builders/activity-feed.js +79 -0
- package/scripts/builders/catalog-summaries.js +67 -0
- package/scripts/builders/currency.js +109 -0
- package/scripts/builders/cwe-chains.js +105 -0
- package/scripts/builders/did-ladders.js +149 -0
- package/scripts/builders/frequency.js +89 -0
- package/scripts/builders/jurisdiction-clocks.js +126 -0
- package/scripts/builders/recipes.js +159 -0
- package/scripts/builders/section-offsets.js +162 -0
- package/scripts/builders/stale-content.js +171 -0
- package/scripts/builders/summary-cards.js +166 -0
- package/scripts/builders/theater-fingerprints.js +198 -0
- package/scripts/builders/token-budget.js +96 -0
- package/scripts/check-manifest-snapshot.js +217 -0
- package/scripts/predeploy.js +267 -0
- package/scripts/refresh-manifest-snapshot.js +57 -0
- package/scripts/refresh-sbom.js +222 -0
- package/skills/age-gates-child-safety/skill.md +456 -0
- package/skills/ai-attack-surface/skill.md +282 -0
- package/skills/ai-c2-detection/skill.md +440 -0
- package/skills/ai-risk-management/skill.md +311 -0
- package/skills/api-security/skill.md +287 -0
- package/skills/attack-surface-pentest/skill.md +381 -0
- package/skills/cloud-security/skill.md +384 -0
- package/skills/compliance-theater/skill.md +365 -0
- package/skills/container-runtime-security/skill.md +379 -0
- package/skills/coordinated-vuln-disclosure/skill.md +473 -0
- package/skills/defensive-countermeasure-mapping/skill.md +300 -0
- package/skills/dlp-gap-analysis/skill.md +337 -0
- package/skills/email-security-anti-phishing/skill.md +206 -0
- package/skills/exploit-scoring/skill.md +331 -0
- package/skills/framework-gap-analysis/skill.md +374 -0
- package/skills/fuzz-testing-strategy/skill.md +313 -0
- package/skills/global-grc/skill.md +564 -0
- package/skills/identity-assurance/skill.md +272 -0
- package/skills/incident-response-playbook/skill.md +546 -0
- package/skills/kernel-lpe-triage/skill.md +303 -0
- package/skills/mcp-agent-trust/skill.md +326 -0
- package/skills/mlops-security/skill.md +325 -0
- package/skills/ot-ics-security/skill.md +340 -0
- package/skills/policy-exception-gen/skill.md +437 -0
- package/skills/pqc-first/skill.md +546 -0
- package/skills/rag-pipeline-security/skill.md +294 -0
- package/skills/researcher/skill.md +310 -0
- package/skills/sector-energy/skill.md +409 -0
- package/skills/sector-federal-government/skill.md +302 -0
- package/skills/sector-financial/skill.md +398 -0
- package/skills/sector-healthcare/skill.md +373 -0
- package/skills/security-maturity-tiers/skill.md +464 -0
- package/skills/skill-update-loop/skill.md +463 -0
- package/skills/supply-chain-integrity/skill.md +318 -0
- package/skills/threat-model-currency/skill.md +404 -0
- package/skills/threat-modeling-methodology/skill.md +312 -0
- package/skills/webapp-security/skill.md +281 -0
- package/skills/zeroday-gap-learn/skill.md +350 -0
- package/vendor/blamejs/LICENSE +201 -0
- package/vendor/blamejs/README.md +54 -0
- package/vendor/blamejs/_PROVENANCE.json +54 -0
- package/vendor/blamejs/retry.js +335 -0
- package/vendor/blamejs/worker-pool.js +418 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"schema_version": "1.0.0",
|
|
4
|
+
"last_updated": "2026-05-01",
|
|
5
|
+
"purpose": "Zero-day learning loop output. Each entry maps a CVE to: attack vector, defense chain analysis, framework coverage, new control requirements generated, and exposure scoring.",
|
|
6
|
+
"note": "Never delete entries. Closed gaps are marked status: closed. History is data.",
|
|
7
|
+
"tlp": "CLEAR",
|
|
8
|
+
"source_confidence": {
|
|
9
|
+
"scheme": "Admiralty (A-F + 1-6)",
|
|
10
|
+
"default": "B2",
|
|
11
|
+
"note": "B = usually reliable; 2 = probably true. Per-entry overrides via entry-level source_confidence field. Public-record catalogs (NVD, ATLAS, CWE, RFC, framework publishers) get A1 (completely reliable, confirmed). Project-curated catalogs (zeroday-lessons, exploit-availability) default to B2 with source citations."
|
|
12
|
+
},
|
|
13
|
+
"freshness_policy": {
|
|
14
|
+
"default_review_cadence_days": 90,
|
|
15
|
+
"stale_after_days": 180,
|
|
16
|
+
"rebuild_after_days": 365,
|
|
17
|
+
"note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"CVE-2026-31431": {
|
|
21
|
+
"name": "Copy Fail",
|
|
22
|
+
"lesson_date": "2026-05-01",
|
|
23
|
+
"attack_vector": {
|
|
24
|
+
"description": "Page-cache copy-on-write (CoW) primitive abuse in Linux kernel. Unprivileged local user writes to a read-only page via the CoW path, corrupting kernel memory and escalating to root.",
|
|
25
|
+
"privileges_required": "unprivileged local user or container process",
|
|
26
|
+
"complexity": "deterministic, no race condition",
|
|
27
|
+
"ai_factor": "Discovered by AI system in approximately 1 hour — human researchers did not find this in 9 years of kernel exposure"
|
|
28
|
+
},
|
|
29
|
+
"defense_chain": {
|
|
30
|
+
"prevention": {
|
|
31
|
+
"what_would_have_worked": "seccomp profile blocking userfaultfd + user namespace restrictions + kernel hardening",
|
|
32
|
+
"was_this_required": false,
|
|
33
|
+
"framework_requiring_it": null,
|
|
34
|
+
"adequacy": "reduces attack surface but does not eliminate it; full patch is required"
|
|
35
|
+
},
|
|
36
|
+
"detection": {
|
|
37
|
+
"what_would_have_worked": "auditd rule on userfaultfd syscall + monitoring for unexpected UID 0 processes",
|
|
38
|
+
"was_this_required": false,
|
|
39
|
+
"framework_requiring_it": null,
|
|
40
|
+
"adequacy": "detection without prevention; exploitation has already occurred when detection fires"
|
|
41
|
+
},
|
|
42
|
+
"response": {
|
|
43
|
+
"what_would_have_worked": "automated process kill on privilege escalation pattern detection",
|
|
44
|
+
"was_this_required": false,
|
|
45
|
+
"framework_requiring_it": null,
|
|
46
|
+
"adequacy": "reduces blast radius post-exploitation; does not prevent it"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"framework_coverage": {
|
|
50
|
+
"NIST-800-53-SI-2": {
|
|
51
|
+
"covered": true,
|
|
52
|
+
"adequate": false,
|
|
53
|
+
"gap": "30-day SLA is exploitation window for CISA KEV + deterministic public PoC"
|
|
54
|
+
},
|
|
55
|
+
"ISO-27001-2022-A.8.8": {
|
|
56
|
+
"covered": true,
|
|
57
|
+
"adequate": false,
|
|
58
|
+
"gap": "Appropriate timescales undefined; typical 30-day interpretation is unsafe"
|
|
59
|
+
},
|
|
60
|
+
"PCI-DSS-4.0-6.3.3": {
|
|
61
|
+
"covered": true,
|
|
62
|
+
"adequate": false,
|
|
63
|
+
"gap": "1-month critical patch window is exploitation acceptance"
|
|
64
|
+
},
|
|
65
|
+
"ASD-ISM-1623": {
|
|
66
|
+
"covered": true,
|
|
67
|
+
"adequate": "closest",
|
|
68
|
+
"gap": "48h is better but still too long for 732-byte public exploit + CISA KEV"
|
|
69
|
+
},
|
|
70
|
+
"ANY-FRAMEWORK": {
|
|
71
|
+
"covered": false,
|
|
72
|
+
"adequate": false,
|
|
73
|
+
"gap": "No framework requires live kernel patching as a capability or auditd exploitation detection"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"new_control_requirements": [
|
|
77
|
+
{
|
|
78
|
+
"id": "NEW-CTRL-001",
|
|
79
|
+
"name": "CISA-KEV-RESPONSE-SLA",
|
|
80
|
+
"description": "For any CVE listed in CISA KEV: deploy verified mitigation (patch, live patch, or documented compensating controls) within 4 hours of KEV listing or patch availability, whichever is later.",
|
|
81
|
+
"evidence": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
|
|
82
|
+
"gap_closes": [
|
|
83
|
+
"NIST-800-53-SI-2",
|
|
84
|
+
"ISO-27001-2022-A.8.8",
|
|
85
|
+
"PCI-DSS-4.0-6.3.3"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "NEW-CTRL-002",
|
|
90
|
+
"name": "LIVE-PATCH-CAPABILITY",
|
|
91
|
+
"description": "For any system that processes production workloads and cannot tolerate unplanned reboots: live kernel patching capability (kpatch, livepatch, kGraft, or equivalent) must be deployed and tested quarterly.",
|
|
92
|
+
"evidence": "CVE-2026-31431 — reboot required for full patch on systems that must maintain uptime",
|
|
93
|
+
"gap_closes": [
|
|
94
|
+
"ALL-FRAMEWORKS-PATCH-SLA"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "NEW-CTRL-003",
|
|
99
|
+
"name": "KERNEL-EXPLOITATION-DETECTION",
|
|
100
|
+
"description": "Deploy auditd or eBPF-based monitoring rules for kernel privilege escalation indicators. Alert within 60 seconds of detection.",
|
|
101
|
+
"evidence": "No detection rules required by any framework; Copy Fail class exploits are detectable via userfaultfd audit",
|
|
102
|
+
"gap_closes": [
|
|
103
|
+
"ALL-FRAMEWORKS-DETECTION-GAPS"
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"compliance_exposure_score": {
|
|
108
|
+
"percent_audit_passing_orgs_still_exposed": 80,
|
|
109
|
+
"basis": "Industry patch deployment lag data: ~80% of organizations lag CISA KEV remediation beyond 72h in first week",
|
|
110
|
+
"theater_pattern": "patch_management"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"CVE-2025-53773": {
|
|
114
|
+
"name": "GitHub Copilot Prompt Injection RCE",
|
|
115
|
+
"lesson_date": "2026-05-01",
|
|
116
|
+
"attack_vector": {
|
|
117
|
+
"description": "Adversarial instructions embedded in GitHub PR description field. When developer interacts with the PR via GitHub Copilot, the instructions execute in the developer's session context.",
|
|
118
|
+
"privileges_required": "ability to create or modify a PR description (any external contributor)",
|
|
119
|
+
"complexity": "low — craft adversarial text in PR description",
|
|
120
|
+
"ai_factor": "The vulnerability IS in an AI tool. AI tooling enables the attack surface."
|
|
121
|
+
},
|
|
122
|
+
"defense_chain": {
|
|
123
|
+
"prevention": {
|
|
124
|
+
"what_would_have_worked": "Treat all content ingested by AI tools as untrusted. Apply adversarial instruction classifiers before including in model context.",
|
|
125
|
+
"was_this_required": false,
|
|
126
|
+
"framework_requiring_it": null,
|
|
127
|
+
"adequacy": "No framework requires AI tool input sanitization"
|
|
128
|
+
},
|
|
129
|
+
"detection": {
|
|
130
|
+
"what_would_have_worked": "Log all AI agent tool calls with the prompt content that triggered them. Alert on AI actions that don't match user-stated intent.",
|
|
131
|
+
"was_this_required": false,
|
|
132
|
+
"framework_requiring_it": null,
|
|
133
|
+
"adequacy": "No framework requires AI action audit trails distinct from service account audit trails"
|
|
134
|
+
},
|
|
135
|
+
"response": {
|
|
136
|
+
"what_would_have_worked": "Per-invocation AI authorization scope — AI cannot take actions outside a declared scope regardless of injected instructions",
|
|
137
|
+
"was_this_required": false,
|
|
138
|
+
"framework_requiring_it": null,
|
|
139
|
+
"adequacy": "No framework control for per-invocation AI authorization"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"framework_coverage": {
|
|
143
|
+
"ALL-MAJOR-FRAMEWORKS": {
|
|
144
|
+
"covered": false,
|
|
145
|
+
"adequate": false,
|
|
146
|
+
"gap": "No framework has a control category for prompt injection as RCE vector. CVSS 9.6 with zero framework coverage."
|
|
147
|
+
},
|
|
148
|
+
"NIST-800-53-AC-2": {
|
|
149
|
+
"covered": true,
|
|
150
|
+
"adequate": false,
|
|
151
|
+
"gap": "Service account is properly authorized per AC-2; prompt injection bypasses AC-2 entirely"
|
|
152
|
+
},
|
|
153
|
+
"MITRE-ATLAS-v5.1.0": {
|
|
154
|
+
"covered": true,
|
|
155
|
+
"adequate": "reference only",
|
|
156
|
+
"gap": "ATLAS documents the technique (AML.T0051/T0054) but no framework has implemented controls based on ATLAS"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"new_control_requirements": [
|
|
160
|
+
{
|
|
161
|
+
"id": "NEW-CTRL-004",
|
|
162
|
+
"name": "AI-TOOL-ACTION-AUTHORIZATION",
|
|
163
|
+
"description": "AI coding assistants must have explicitly scoped permissions. Any action taken by an AI tool requires explicit user approval unless within a pre-approved action allowlist. Implied authorization from context is insufficient.",
|
|
164
|
+
"evidence": "CVE-2025-53773 — AI tool took RCE action using developer's authorization without explicit approval",
|
|
165
|
+
"gap_closes": [
|
|
166
|
+
"ALL-AI-PIPELINE-INTEGRITY",
|
|
167
|
+
"NIST-800-53-AC-2"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "NEW-CTRL-005",
|
|
172
|
+
"name": "AI-TOOL-INPUT-SANITIZATION",
|
|
173
|
+
"description": "Content ingested by AI tools from external sources (PR descriptions, code comments, documentation, web pages, emails) must be treated as potentially adversarial. Apply adversarial instruction classifiers before including in model context.",
|
|
174
|
+
"evidence": "CVE-2025-53773 — adversarial instructions in PR description were included in model context without sanitization",
|
|
175
|
+
"gap_closes": [
|
|
176
|
+
"ISO-27001-2022-A.8.28"
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"compliance_exposure_score": {
|
|
181
|
+
"percent_audit_passing_orgs_still_exposed": 95,
|
|
182
|
+
"basis": "No framework requires AI tool input sanitization. Any organization using AI coding assistants with tool use capability is exposed unless specifically implementing this control.",
|
|
183
|
+
"theater_pattern": "access_control_ai"
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"CVE-2026-43284": {
|
|
187
|
+
"name": "Dirty Frag (ESP/IPsec component)",
|
|
188
|
+
"lesson_date": "2026-05-11",
|
|
189
|
+
"attack_vector": {
|
|
190
|
+
"description": "Page-cache write primitive in the Linux kernel ESP/IPsec subsystem. Chained with CVE-2026-43500 (RxRPC component) to achieve local privilege escalation. Notably: the exploit runs through the IPsec subsystem, meaning IPsec-based network controls are NOT compensating controls for unpatched systems.",
|
|
191
|
+
"privileges_required": "unprivileged local user or container process",
|
|
192
|
+
"complexity": "moderate — requires kernel version fingerprinting to select correct gadget chain",
|
|
193
|
+
"ai_factor": "Not AI-discovered. Human-discovered via subsystem analysis following Copy Fail disclosure."
|
|
194
|
+
},
|
|
195
|
+
"defense_chain": {
|
|
196
|
+
"prevention": {
|
|
197
|
+
"what_would_have_worked": "Kernel patch. seccomp profiles blocking relevant syscalls. Note: IPsec-based network controls are NOT compensating controls — they use the vulnerable subsystem.",
|
|
198
|
+
"was_this_required": false,
|
|
199
|
+
"framework_requiring_it": null,
|
|
200
|
+
"adequacy": "Patch is the only reliable prevention. seccomp reduces attack surface but does not eliminate it."
|
|
201
|
+
},
|
|
202
|
+
"detection": {
|
|
203
|
+
"what_would_have_worked": "auditd rules on privilege escalation patterns + monitoring for unexpected UID 0 processes",
|
|
204
|
+
"was_this_required": false,
|
|
205
|
+
"framework_requiring_it": null,
|
|
206
|
+
"adequacy": "Post-exploitation detection only; kernel is already compromised when detected"
|
|
207
|
+
},
|
|
208
|
+
"response": {
|
|
209
|
+
"what_would_have_worked": "Network isolation of unpatched hosts from internal trust zones. Immediate kernel patch deployment.",
|
|
210
|
+
"was_this_required": false,
|
|
211
|
+
"framework_requiring_it": null,
|
|
212
|
+
"adequacy": "Network isolation reduces blast radius post-exploitation"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"framework_coverage": {
|
|
216
|
+
"NIST-800-53-SI-2": {
|
|
217
|
+
"covered": true,
|
|
218
|
+
"adequate": false,
|
|
219
|
+
"gap": "Patch SLA does not account for public PoC + suspected active exploitation"
|
|
220
|
+
},
|
|
221
|
+
"NIST-800-53-SC-8": {
|
|
222
|
+
"covered": true,
|
|
223
|
+
"adequate": false,
|
|
224
|
+
"gap": "IPsec compliance via SC-8 is not a compensating control — exploit runs through IPsec implementation"
|
|
225
|
+
},
|
|
226
|
+
"NIST-800-53-SC-28": {
|
|
227
|
+
"covered": true,
|
|
228
|
+
"adequate": false,
|
|
229
|
+
"gap": "Same — kernel crypto subsystem compliance claims are invalidated when the subsystem has unpatched LPE"
|
|
230
|
+
},
|
|
231
|
+
"ISO-27001-2022-A.8.8": {
|
|
232
|
+
"covered": true,
|
|
233
|
+
"adequate": false,
|
|
234
|
+
"gap": "Appropriate timescales undefined; same patch SLA problem as CVE-2026-31431"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"new_control_requirements": [
|
|
238
|
+
{
|
|
239
|
+
"id": "NEW-CTRL-008",
|
|
240
|
+
"name": "CRYPTO-SUBSYSTEM-CVE-DISCLOSURE",
|
|
241
|
+
"description": "When a CVE affects a kernel cryptographic subsystem (IPsec, RxRPC, etc.), any compliance controls that rely on that subsystem must be documented as 'not a compensating control' until the CVE is patched. Risk assessments must note this explicitly.",
|
|
242
|
+
"evidence": "CVE-2026-43284 — IPsec-based SC-8 and SC-28 compliance is invalidated by this vulnerability",
|
|
243
|
+
"gap_closes": [
|
|
244
|
+
"NIST-800-53-SC-8",
|
|
245
|
+
"NIST-800-53-SC-28"
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
],
|
|
249
|
+
"compliance_exposure_score": {
|
|
250
|
+
"percent_audit_passing_orgs_still_exposed": 65,
|
|
251
|
+
"basis": "Organizations using IPsec for network compliance controls may incorrectly claim IPsec as a compensating control while the kernel IPsec implementation is exploitable",
|
|
252
|
+
"theater_pattern": "patch_management"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"CVE-2026-43500": {
|
|
256
|
+
"name": "Dirty Frag (RxRPC component)",
|
|
257
|
+
"lesson_date": "2026-05-11",
|
|
258
|
+
"attack_vector": {
|
|
259
|
+
"description": "Page-cache write primitive in the Linux kernel RxRPC subsystem. Used as chain component with CVE-2026-43284 (ESP/IPsec component). The chain enables local privilege escalation on kernel 5.0+ systems with either IPsec or RxRPC support.",
|
|
260
|
+
"privileges_required": "unprivileged local user or container process",
|
|
261
|
+
"complexity": "moderate — requires chaining with CVE-2026-43284 and subsystem fingerprinting",
|
|
262
|
+
"ai_factor": "Not AI-discovered."
|
|
263
|
+
},
|
|
264
|
+
"defense_chain": {
|
|
265
|
+
"prevention": {
|
|
266
|
+
"what_would_have_worked": "Kernel patch for both CVE-2026-43284 and CVE-2026-43500. Disabling RxRPC module if not required.",
|
|
267
|
+
"was_this_required": false,
|
|
268
|
+
"framework_requiring_it": null,
|
|
269
|
+
"adequacy": "RxRPC is not commonly required; disabling is a viable compensating control for many organizations"
|
|
270
|
+
},
|
|
271
|
+
"detection": {
|
|
272
|
+
"what_would_have_worked": "auditd rules on privilege escalation + RxRPC socket creation monitoring for unusual processes",
|
|
273
|
+
"was_this_required": false,
|
|
274
|
+
"framework_requiring_it": null,
|
|
275
|
+
"adequacy": "Post-exploitation detection. RxRPC socket creation from unexpected processes is a pre-exploitation indicator."
|
|
276
|
+
},
|
|
277
|
+
"response": {
|
|
278
|
+
"what_would_have_worked": "Disabling RxRPC kernel module as immediate compensating control where not operationally required",
|
|
279
|
+
"was_this_required": false,
|
|
280
|
+
"framework_requiring_it": null,
|
|
281
|
+
"adequacy": "Effective compensating control for the majority of systems that don't use RxRPC"
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"framework_coverage": {
|
|
285
|
+
"NIST-800-53-SI-2": {
|
|
286
|
+
"covered": true,
|
|
287
|
+
"adequate": false,
|
|
288
|
+
"gap": "Same patch SLA problem as other kernel LPEs with public PoC"
|
|
289
|
+
},
|
|
290
|
+
"NIST-800-53-CM-7": {
|
|
291
|
+
"covered": true,
|
|
292
|
+
"adequate": "partial",
|
|
293
|
+
"gap": "CM-7 least functionality could require disabling RxRPC, but this is rarely implemented for kernel subsystems"
|
|
294
|
+
},
|
|
295
|
+
"ISO-27001-2022-A.8.8": {
|
|
296
|
+
"covered": true,
|
|
297
|
+
"adequate": false,
|
|
298
|
+
"gap": "Same timescale problem as CVE-2026-31431 and CVE-2026-43284"
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"new_control_requirements": [
|
|
302
|
+
{
|
|
303
|
+
"id": "NEW-CTRL-009",
|
|
304
|
+
"name": "KERNEL-MODULE-INVENTORY-AND-DISABLE",
|
|
305
|
+
"description": "Maintain an inventory of loaded kernel modules. For modules not required for business function (RxRPC, unused crypto modules), disable via modprobe blacklist as a least-functionality control. Review quarterly.",
|
|
306
|
+
"evidence": "CVE-2026-43500 — RxRPC is rarely required; disabling eliminates one chain component",
|
|
307
|
+
"gap_closes": [
|
|
308
|
+
"NIST-800-53-CM-7"
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"compliance_exposure_score": {
|
|
313
|
+
"percent_audit_passing_orgs_still_exposed": 60,
|
|
314
|
+
"basis": "Most organizations do not inventory or disable unused kernel modules. RxRPC is rarely used but rarely disabled.",
|
|
315
|
+
"theater_pattern": "patch_management"
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"CVE-2026-30615": {
|
|
319
|
+
"name": "Windsurf MCP Zero-Interaction RCE",
|
|
320
|
+
"lesson_date": "2026-05-01",
|
|
321
|
+
"attack_vector": {
|
|
322
|
+
"description": "Malicious MCP server delivers adversarial tool response. AI assistant follows the instructions without user interaction. Code executes in user context.",
|
|
323
|
+
"privileges_required": "ability to get a malicious MCP server installed (supply chain, typosquatting, or compromise)",
|
|
324
|
+
"complexity": "low once installed",
|
|
325
|
+
"ai_factor": "AI tool is the attack vector. MCP is the supply chain."
|
|
326
|
+
},
|
|
327
|
+
"framework_coverage": {
|
|
328
|
+
"NIST-800-53-SA-12": {
|
|
329
|
+
"covered": true,
|
|
330
|
+
"adequate": false,
|
|
331
|
+
"gap": "Supply chain protection doesn't contemplate MCP server trust as a category"
|
|
332
|
+
},
|
|
333
|
+
"NIST-800-53-CM-7": {
|
|
334
|
+
"covered": true,
|
|
335
|
+
"adequate": false,
|
|
336
|
+
"gap": "Least functionality doesn't address AI tool plugin authorization model"
|
|
337
|
+
},
|
|
338
|
+
"ISO-27001-2022-A.8.30": {
|
|
339
|
+
"covered": true,
|
|
340
|
+
"adequate": false,
|
|
341
|
+
"gap": "Outsourced development controls don't cover MCP server supply chain"
|
|
342
|
+
},
|
|
343
|
+
"SOC2-CC9": {
|
|
344
|
+
"covered": true,
|
|
345
|
+
"adequate": false,
|
|
346
|
+
"gap": "Vendor management doesn't reach developer-installed AI tool plugins"
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
"new_control_requirements": [
|
|
350
|
+
{
|
|
351
|
+
"id": "NEW-CTRL-006",
|
|
352
|
+
"name": "MCP-SERVER-SIGNING",
|
|
353
|
+
"description": "All MCP servers must have verifiable provenance. AI coding assistants must refuse to load unsigned MCP servers.",
|
|
354
|
+
"evidence": "CVE-2026-30615 — unsigned MCP server enabled zero-interaction RCE",
|
|
355
|
+
"gap_closes": [
|
|
356
|
+
"NIST-800-53-SA-12",
|
|
357
|
+
"ISO-27001-2022-A.8.30"
|
|
358
|
+
]
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"id": "NEW-CTRL-007",
|
|
362
|
+
"name": "MCP-TOOL-ALLOWLIST",
|
|
363
|
+
"description": "AI clients must implement explicit tool allowlists. Default deny — only tools in the allowlist may be called.",
|
|
364
|
+
"evidence": "CVE-2026-30615 — AI client called tools exposed by malicious server without restriction",
|
|
365
|
+
"gap_closes": [
|
|
366
|
+
"NIST-800-53-CM-7",
|
|
367
|
+
"ALL-MCP-TOOL-TRUST"
|
|
368
|
+
]
|
|
369
|
+
}
|
|
370
|
+
],
|
|
371
|
+
"compliance_exposure_score": {
|
|
372
|
+
"percent_audit_passing_orgs_still_exposed": 90,
|
|
373
|
+
"basis": "No vendor management or supply chain control covers MCP servers. 150M+ affected downloads suggests extremely broad exposure.",
|
|
374
|
+
"theater_pattern": "vendor_management_ai"
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
package/keys/public.pem
ADDED