@blamejs/exceptd-skills 0.12.23 → 0.12.25
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 +12 -4
- package/CHANGELOG.md +190 -3
- package/README.md +14 -1
- package/bin/exceptd.js +584 -166
- package/data/_indexes/_meta.json +31 -31
- package/data/_indexes/activity-feed.json +45 -45
- package/data/_indexes/catalog-summaries.json +19 -19
- package/data/_indexes/chains.json +320 -0
- package/data/_indexes/currency.json +9 -9
- package/data/_indexes/frequency.json +39 -2
- package/data/_indexes/jurisdiction-clocks.json +2 -2
- package/data/_indexes/jurisdiction-map.json +3 -1
- package/data/_indexes/section-offsets.json +396 -396
- package/data/_indexes/summary-cards.json +3 -3
- package/data/_indexes/token-budget.json +73 -73
- package/data/atlas-ttps.json +491 -19
- package/data/attack-techniques.json +198 -84
- package/data/cve-catalog.json +1309 -9
- package/data/exploit-availability.json +300 -10
- package/data/framework-control-gaps.json +395 -1
- package/data/global-frameworks.json +44 -19
- package/data/playbooks/containers.json +1 -1
- package/data/playbooks/crypto-codebase.json +1 -1
- package/data/playbooks/framework.json +1 -1
- package/data/playbooks/hardening.json +1 -1
- package/data/playbooks/library-author.json +1 -1
- package/data/playbooks/secrets.json +25 -1
- package/data/rfc-references.json +93 -1
- package/data/zeroday-lessons.json +475 -13
- package/lib/auto-discovery.js +26 -2
- package/lib/exit-codes.js +72 -0
- package/lib/flag-suggest.js +130 -0
- package/lib/id-validation.js +95 -0
- package/lib/lint-skills.js +68 -1
- package/lib/playbook-runner.js +321 -46
- package/lib/prefetch.js +113 -0
- package/lib/refresh-external.js +190 -8
- package/lib/refresh-network.js +35 -8
- package/lib/schemas/cve-catalog.schema.json +31 -4
- package/lib/schemas/playbook.schema.json +51 -0
- package/lib/scoring.js +41 -0
- package/lib/upstream-check-cli.js +16 -1
- package/lib/upstream-check.js +9 -0
- package/lib/verify.js +20 -4
- package/manifest-snapshot.json +1 -1
- package/manifest-snapshot.sha256 +1 -1
- package/manifest.json +59 -59
- package/package.json +8 -2
- package/sbom.cdx.json +6 -6
- package/scripts/check-test-coverage.js +67 -0
- package/scripts/verify-shipped-tarball.js +9 -0
- package/skills/ai-attack-surface/skill.md +11 -2
- package/skills/ai-c2-detection/skill.md +3 -1
- package/skills/ai-risk-management/skill.md +3 -1
- package/skills/api-security/skill.md +4 -0
- package/skills/attack-surface-pentest/skill.md +1 -0
- package/skills/container-runtime-security/skill.md +3 -1
- package/skills/dlp-gap-analysis/skill.md +1 -1
- package/skills/exploit-scoring/skill.md +2 -2
- package/skills/incident-response-playbook/skill.md +1 -1
- package/skills/kernel-lpe-triage/skill.md +6 -1
- package/skills/mcp-agent-trust/skill.md +7 -2
- package/skills/mlops-security/skill.md +1 -1
- package/skills/rag-pipeline-security/skill.md +4 -2
- package/skills/sector-financial/skill.md +1 -1
- package/skills/skill-update-loop/skill.md +1 -1
- package/skills/supply-chain-integrity/skill.md +3 -1
- package/skills/threat-model-currency/skill.md +1 -1
- package/skills/webapp-security/skill.md +2 -0
- package/skills/zeroday-gap-learn/skill.md +2 -2
|
@@ -448,6 +448,57 @@ function coversCveIoc(corpus, cveId) {
|
|
|
448
448
|
|
|
449
449
|
// --- Main analyzer ----------------------------------------------------------
|
|
450
450
|
|
|
451
|
+
// --- Class-level lint: ban coincidence-passing notEqual(r.status, 0) --------
|
|
452
|
+
//
|
|
453
|
+
// CLAUDE.md anti-coincidence rule: every exit-code assertion must pin the
|
|
454
|
+
// EXACT code. `assert.notEqual(r.status, 0)` silently passes when an
|
|
455
|
+
// unrelated failure produces ANY non-zero exit, hiding the regression the
|
|
456
|
+
// test was meant to catch. This lint walks tests/*.test.js and rejects the
|
|
457
|
+
// pattern outright. The `// allow-notEqual: <reason>` opt-out on the same
|
|
458
|
+
// line is the escape hatch for genuine refusal-pins (asserting NOT a
|
|
459
|
+
// specific code) — those must justify themselves inline.
|
|
460
|
+
//
|
|
461
|
+
// Pattern hits any of:
|
|
462
|
+
// assert.notEqual(r.status, 0)
|
|
463
|
+
// assert.notEqual(result.status, 0, '...')
|
|
464
|
+
// assert.notEqual(foo.status, 2, 'must not be unknown-cmd') ← also refused
|
|
465
|
+
// unless the same line ends with `// allow-notEqual: <reason>`.
|
|
466
|
+
//
|
|
467
|
+
// Cycle 8 JJJ: pre-fix, this class was a per-instance hunt across 25+ test
|
|
468
|
+
// sites. Moving it to a structural lint keeps new tests / new ports from
|
|
469
|
+
// regressing. Fix the class, not the instance (CLAUDE.md pitfall).
|
|
470
|
+
function scanForCoincidenceAsserts(cwd) {
|
|
471
|
+
const out = [];
|
|
472
|
+
const testsDir = path.join(cwd, "tests");
|
|
473
|
+
if (!fs.existsSync(testsDir)) return out;
|
|
474
|
+
// Match `assert.notEqual( <ident>.status` — the receiver name varies
|
|
475
|
+
// (r, r1, result, child, etc.) but the .status access is the signal.
|
|
476
|
+
const banRe = /assert\.notEqual\s*\(\s*[A-Za-z_$][\w$]*\.status\b/;
|
|
477
|
+
const allowRe = /\/\/\s*allow-notEqual\s*:/;
|
|
478
|
+
const skipPrefix = "_helpers"; // helpers may legitimately reference the pattern
|
|
479
|
+
for (const entry of fs.readdirSync(testsDir, { withFileTypes: true })) {
|
|
480
|
+
if (!entry.isFile()) continue;
|
|
481
|
+
if (entry.name.startsWith(skipPrefix)) continue;
|
|
482
|
+
if (!entry.name.endsWith(".test.js")) continue;
|
|
483
|
+
const filePath = path.join(testsDir, entry.name);
|
|
484
|
+
let body;
|
|
485
|
+
try { body = fs.readFileSync(filePath, "utf8"); }
|
|
486
|
+
catch { continue; }
|
|
487
|
+
const lines = body.split(/\r?\n/);
|
|
488
|
+
for (let i = 0; i < lines.length; i++) {
|
|
489
|
+
const line = lines[i];
|
|
490
|
+
if (!banRe.test(line)) continue;
|
|
491
|
+
if (allowRe.test(line)) continue;
|
|
492
|
+
out.push({
|
|
493
|
+
file: path.join("tests", entry.name).replace(/\\/g, "/"),
|
|
494
|
+
line: i + 1,
|
|
495
|
+
snippet: line.trim(),
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return out;
|
|
500
|
+
}
|
|
501
|
+
|
|
451
502
|
function analyze(opts) {
|
|
452
503
|
const cwd = opts.repo || ROOT;
|
|
453
504
|
// v0.12.8: resolve the diff anchor ONCE and thread it through every
|
|
@@ -526,6 +577,21 @@ function analyze(opts) {
|
|
|
526
577
|
}
|
|
527
578
|
}
|
|
528
579
|
|
|
580
|
+
// Class-level lint: ban `notEqual(<ident>.status, N)` outside of
|
|
581
|
+
// refusal-pin allowlist comments. Runs irrespective of the diff —
|
|
582
|
+
// a coincidence-passing assert that lands via a non-test-coverage
|
|
583
|
+
// path (someone hand-edits a tests/ file in a docs-only commit) is
|
|
584
|
+
// still a regression vector the gate must catch.
|
|
585
|
+
const coincidenceFindings = scanForCoincidenceAsserts(cwd);
|
|
586
|
+
for (const f of coincidenceFindings) {
|
|
587
|
+
findings.push({
|
|
588
|
+
file: f.file,
|
|
589
|
+
kind: "coincidence-assert",
|
|
590
|
+
surface: f.snippet,
|
|
591
|
+
change: `line ${f.line}: pin to exact exit code; see CLAUDE.md anti-coincidence rule. Opt out only with \`// allow-notEqual: <reason>\` on the same line for genuine refusal-pins.`,
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
|
|
529
595
|
return { findings, allowlisted, manualReview, totalChanged: changed.length };
|
|
530
596
|
}
|
|
531
597
|
|
|
@@ -595,5 +661,6 @@ module.exports = {
|
|
|
595
661
|
analyze, parseArgs, categorize,
|
|
596
662
|
extractCliSurface, extractLibExports, extractPlaybookIds, extractCveIocChanges,
|
|
597
663
|
coversCliVerb, coversCliFlag, coversLibExport, coversPlaybookId, coversCveIoc,
|
|
664
|
+
scanForCoincidenceAsserts,
|
|
598
665
|
DOCS_ALWAYS_GREEN,
|
|
599
666
|
};
|
|
@@ -300,6 +300,15 @@ try {
|
|
|
300
300
|
const liveFpLine = `SHA256:${pubFp}`;
|
|
301
301
|
if (firstLine !== liveFpLine) {
|
|
302
302
|
if (process.env.KEYS_ROTATED === "1") {
|
|
303
|
+
// Surface the override through the structured warning channel as
|
|
304
|
+
// well so any caller listening on `process.on('warning')` can
|
|
305
|
+
// observe the key-rotation acceptance. Matches the three peer
|
|
306
|
+
// sites (bin/exceptd.js, lib/refresh-network.js, lib/verify.js).
|
|
307
|
+
process.emitWarning(
|
|
308
|
+
`extracted public.pem fingerprint ${liveFpLine} differs from pin ${firstLine}; KEYS_ROTATED=1 accepted. ` +
|
|
309
|
+
`Update keys/EXPECTED_FINGERPRINT to lock the new pin.`,
|
|
310
|
+
{ code: "EXCEPTD_KEYS_ROTATED_OVERRIDE" }
|
|
311
|
+
);
|
|
303
312
|
emit(`WARN: extracted public.pem fingerprint ${liveFpLine} differs from pin ${firstLine}; KEYS_ROTATED=1 accepted`);
|
|
304
313
|
} else {
|
|
305
314
|
fail(
|
|
@@ -52,7 +52,16 @@ d3fend_refs:
|
|
|
52
52
|
- D3-EAL
|
|
53
53
|
- D3-FAPA
|
|
54
54
|
- D3-CSPP
|
|
55
|
-
|
|
55
|
+
forward_watch:
|
|
56
|
+
- NGINX Rift CVE-2026-42945 (disclosed 2026-05-13, source depthfirst) — KEV-watch predicted CISA KEV listing by 2026-05-29; AI-assisted discovery angle; track for active-exploitation confirmation and patch advisory
|
|
57
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM 3-bug SSRF + Code Injection chain by k3vg3n; expect coordinated CVE assignments and upstream patch; track KEV add post-embargo
|
|
58
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM full SSRF + Code Injection by Out Of Bounds (Byung Young Yi); duplicate-class with the k3vg3n entry; track unified patch advisory
|
|
59
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LM Studio 5-bug exploit chain by STARLabs SG; impacts local AI runtime trust; track patch and MCP integration advisories
|
|
60
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — OpenAI Codex CWE-150 improper neutralization by Compass Security; AI coding-agent surface; forward-watch only (no coding-agent-security skill yet)
|
|
61
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — Chroma vector DB CWE-190 + CWE-362 chain by haehae; impacts RAG vector store integrity; track patch and downstream RAG advisory
|
|
62
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Megatron Bridge overly permissive allowed list by Satoki Tsuji; AI training-stack supply-chain exposure; track patch and SBOM advisory
|
|
63
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Megatron Bridge path traversal by haehae; AI training-stack file-system trust boundary; track patch and SBOM advisory
|
|
64
|
+
last_threat_review: "2026-05-15"
|
|
56
65
|
---
|
|
57
66
|
|
|
58
67
|
# AI Attack Surface Assessment
|
|
@@ -85,7 +94,7 @@ This is a supply chain attack surface. Every MCP server a user installs is a pot
|
|
|
85
94
|
|
|
86
95
|
### 3. AI-Assisted Exploit Development
|
|
87
96
|
|
|
88
|
-
41% of 2025 zero-days were discovered by attackers using AI-assisted reverse engineering. Copy Fail (CVE-2026-31431) was discovered by an AI system in approximately one hour.
|
|
97
|
+
41% of 2025 zero-days were discovered by attackers using AI-assisted reverse engineering (GTIG 2025 annual). Copy Fail (CVE-2026-31431) was discovered by an AI system in approximately one hour. The first documented AI-built in-the-wild zero-day surfaced 2026-05-11 (GTIG AI 2FA-bypass case), and Fragnesia (CVE-2026-46300, Linux LPE) was disclosed 2026-05-13 by William Bowling / Zellic with explicit credit to Zellic's AI-agentic code-auditing tool — the anchor case for autonomous AI vulnerability discovery in load-bearing OSS (18-year-old kernel code path). The Dirty Frag pair (CVE-2026-43284 / CVE-2026-43500) was disclosed 2026-05-08 and industry analysis (Sysdig, Help Net Security) assesses AI-assisted discovery as likely given the 9-year exposure window. The exceptd catalog's 2026 AI-discovery rate is now 40%, tracking the GTIG 41% reference. Defensive posture is calibrated to CTID Secure AI v2 (released 2026-05-06) — Secure AI v1 is superseded.
|
|
89
98
|
|
|
90
99
|
The implication: the time between a vulnerability's introduction into a codebase and its reliable exploitation has compressed from months or years to hours or days for AI-capable threat actors. Patch management SLAs designed for human-speed exploit development are structurally inadequate.
|
|
91
100
|
|
|
@@ -48,13 +48,15 @@ d3fend_refs:
|
|
|
48
48
|
- D3-NI
|
|
49
49
|
- D3-NTA
|
|
50
50
|
- D3-NTPM
|
|
51
|
-
last_threat_review: "2026-05-
|
|
51
|
+
last_threat_review: "2026-05-15"
|
|
52
52
|
---
|
|
53
53
|
|
|
54
54
|
# AI C2 Detection
|
|
55
55
|
|
|
56
56
|
## Threat Context (mid-2026)
|
|
57
57
|
|
|
58
|
+
The AI-as-adversary reality that motivates this skill is now operationally documented: 41% of 2025 zero-days were AI-discovered (GTIG 2025), the first AI-built in-the-wild zero-day was confirmed 2026-05-11 (GTIG AI 2FA-bypass case), and Fragnesia (CVE-2026-46300, 2026-05-13) is the canonical AI-driven autonomous-discovery anchor — Zellic's agentic auditor surfaced an 18-year-old Linux kernel primitive. C2 channels riding the same agentic AI infrastructure are the next logical step; CTID Secure AI v2 (2026-05-06, replaces v1) treats AI-API C2 detection as an in-scope control class.
|
|
59
|
+
|
|
58
60
|
### SesameOp — AI APIs as Covert C2 (ATLAS AML.T0096)
|
|
59
61
|
|
|
60
62
|
The SesameOp campaign documented a technique that has since been replicated and expanded: adversaries repurposing legitimate AI agent APIs as covert command-and-control channels.
|
|
@@ -42,7 +42,7 @@ cwe_refs:
|
|
|
42
42
|
- CWE-1039
|
|
43
43
|
d3fend_refs:
|
|
44
44
|
- D3-IOPR
|
|
45
|
-
last_threat_review: "2026-05-
|
|
45
|
+
last_threat_review: "2026-05-15"
|
|
46
46
|
---
|
|
47
47
|
|
|
48
48
|
# AI Risk Management (Governance Layer)
|
|
@@ -79,6 +79,8 @@ AI red-team activity has likewise shifted from voluntary research practice to go
|
|
|
79
79
|
|
|
80
80
|
The 2024–2026 disclosure record is unforgiving: vendor advisories from OpenAI, Anthropic, Google DeepMind, and Microsoft have published AI vulnerability disclosures spanning prompt-injection-driven RCE (CVE-2025-53773, CVSS 7.8 / AV:L), local-vector MCP supply-chain RCE (CVE-2026-30615, CVSS 8.0 / AV:L), agentic-pipeline compromise patterns, and indirect-injection via retrieved content. An organisation with no governance artefact mapping these classes to internal use cases is not in a position to act on any of them.
|
|
81
81
|
|
|
82
|
+
AI as adversary is now operational reality, not forecast: 41% of 2025 zero-days were AI-discovered (GTIG 2025 annual), the first documented AI-built in-the-wild zero-day surfaced 2026-05-11 (GTIG AI 2FA-bypass case), and Fragnesia (CVE-2026-46300, 2026-05-13) is the anchor case for autonomous agentic-AI discovery in load-bearing OSS — Zellic's agentic auditor surfaced an 18-year-old Linux kernel page-cache primitive. Risk registers, vendor questionnaires, and incident playbooks that omit AI-as-discovery-actor are out of currency. Align the AIMS to **CTID Secure AI v2 (2026-05-06)** — Secure AI v1 is superseded; Annex SL clause-by-clause mapping in `data/framework-control-gaps.json`.
|
|
83
|
+
|
|
82
84
|
---
|
|
83
85
|
|
|
84
86
|
## Framework Lag Declaration
|
|
@@ -63,6 +63,10 @@ d3fend_refs:
|
|
|
63
63
|
- D3-CSPP
|
|
64
64
|
- D3-MFA
|
|
65
65
|
- D3-CBAN
|
|
66
|
+
forward_watch:
|
|
67
|
+
- NGINX Rift CVE-2026-42945 (disclosed 2026-05-13, source depthfirst) — KEV-watch predicted CISA KEV listing by 2026-05-29; track for active-exploitation confirmation and patch advisory affecting API gateway / reverse-proxy deployments
|
|
68
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM 3-bug SSRF + Code Injection chain by k3vg3n; LLM-proxy API surface; track upstream patch and CVE assignments
|
|
69
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM full SSRF + Code Injection by Out Of Bounds (Byung Young Yi); duplicate-class with the k3vg3n entry; track unified patch advisory
|
|
66
70
|
last_threat_review: "2026-05-11"
|
|
67
71
|
---
|
|
68
72
|
|
|
@@ -55,6 +55,7 @@ forward_watch:
|
|
|
55
55
|
- TIBER-EU scenario library refresh under DORA Year-2 supervisory cycle
|
|
56
56
|
- OWASP WSTG v5.x AI/MCP test cases (currently in working-group draft)
|
|
57
57
|
- PTES revision incorporating AI-surface enumeration
|
|
58
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — Microsoft Edge 4-bug sandbox escape by Orange Tsai (DEVCORE); forward-watch only (browser sandbox, out of current playbook scope); track Microsoft Edge security advisory and KEV add
|
|
58
59
|
d3fend_refs:
|
|
59
60
|
- D3-CSPP
|
|
60
61
|
- D3-EAL
|
|
@@ -57,7 +57,9 @@ d3fend_refs:
|
|
|
57
57
|
- D3-NI
|
|
58
58
|
- D3-NTPM
|
|
59
59
|
- D3-IOPR
|
|
60
|
-
|
|
60
|
+
forward_watch:
|
|
61
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Container Toolkit container escape ($50K award) by chompie / IBM X-Force XOR; high-severity container/hypervisor boundary break; track patch and KEV add post-embargo
|
|
62
|
+
last_threat_review: "2026-05-15"
|
|
61
63
|
---
|
|
62
64
|
|
|
63
65
|
# Container + Kubernetes Runtime Security (mid-2026)
|
|
@@ -19,7 +19,7 @@ attack_refs: []
|
|
|
19
19
|
framework_gaps:
|
|
20
20
|
- CWE-Top-25-2024-meta
|
|
21
21
|
- CIS-Controls-v8-Control7
|
|
22
|
-
last_threat_review: "2026-05-
|
|
22
|
+
last_threat_review: "2026-05-15"
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
# Real-World Exploit Priority (RWEP) Scoring
|
|
@@ -40,7 +40,7 @@ The `atlas_refs` and `attack_refs` arrays are intentionally empty. This skill is
|
|
|
40
40
|
|
|
41
41
|
RWEP exists because the exploit development cycle has compressed. The factors that CVSS does not model are now the dominant signal in real-world prioritization.
|
|
42
42
|
|
|
43
|
-
- **AI-accelerated exploit development is current operational reality, not emerging.** 41% of 2025 zero-days were discovered or weaponized with AI-assisted tooling (AGENTS.md DR-5). Copy Fail (CVE-2026-31431) was discovered by an AI system in approximately one hour. CVSS scoring assumes a human-speed gap between disclosure and reliable exploitation — that gap is gone for AI-capable threat actors.
|
|
43
|
+
- **AI-accelerated exploit development is current operational reality, not emerging.** 41% of 2025 zero-days were discovered or weaponized with AI-assisted tooling (AGENTS.md DR-5 / GTIG 2025). Copy Fail (CVE-2026-31431) was discovered by an AI system in approximately one hour; Fragnesia (CVE-2026-46300, 2026-05-13) is the 2026 anchor case for autonomous agentic-AI discovery — Zellic's agentic auditor surfaced an 18-year-old Linux kernel primitive. The first documented AI-built in-the-wild zero-day landed 2026-05-11 (GTIG AI 2FA-bypass). CVSS scoring assumes a human-speed gap between disclosure and reliable exploitation — that gap is gone for AI-capable threat actors. RWEP's `ai_factor` weight is calibrated to this reality; align downstream scoring narratives to CTID Secure AI v2 (2026-05-06, replaces v1).
|
|
44
44
|
- **CVSS undercounts AI-discovered + KEV-listed bugs.** CVE-2026-31431 scores CVSS 7.8 (High). Treated as a CVSS-band-7 item, it lands in a 30-day remediation queue. Treated honestly — CISA KEV listed, 732-byte deterministic public PoC, all Linux ≥ 4.14, AI-discovered — it is a 4-hour incident. CVSS misses every one of those amplifiers.
|
|
45
45
|
- **CVSS local-vector blindness vs. RWEP exploitation reality.** CVE-2026-30615 (Windsurf MCP) scores CVSS 8.0 with AV:L (the NVD-authoritative corrected score; the initial CVSS 9.8 was withdrawn after attack-vector analysis confirmed the local-vector reality — the attacker must control HTML content that the Windsurf MCP client processes). RWEP rates it 35, lower than Copy Fail at 90: the supply-chain prerequisite (a victim first installs a malicious MCP server) plus the local attack vector throttle real exploitation rate. This pair is the canonical example of CVSS-vector-only scoring losing to RWEP's exploitation-evidence weighting.
|
|
46
46
|
- **Compliance frameworks anchor SLAs on CVSS bands.** NIST 800-53 SI-2, PCI DSS 6.3.3, ISO 27001:2022 A.8.8, and most internal vuln-management policies translate CVSS High/Critical into 30-day/7-day windows. For AI-discovered KEV-listed LPEs with public PoCs, these windows are exploitation windows. RWEP is the layer that lets an org prioritize honestly without re-writing every framework control.
|
|
@@ -59,7 +59,7 @@ forward_watch:
|
|
|
59
59
|
- AU SOCI Act expanded sector coverage (data-storage and processing entities added 2024; further mandatory-reporting tiers under review)
|
|
60
60
|
- IL INCD Incident Response Process v4 (slated for 2026-2027) consolidating AI-incident sub-class
|
|
61
61
|
- NYDFS 23 NYCRR 500.17 amendments tightening ransom-payment 24h disclosure operationalization
|
|
62
|
-
last_threat_review: "2026-05-
|
|
62
|
+
last_threat_review: "2026-05-15"
|
|
63
63
|
---
|
|
64
64
|
|
|
65
65
|
# Incident Response Playbook
|
|
@@ -47,7 +47,12 @@ d3fend_refs:
|
|
|
47
47
|
- D3-PHRA
|
|
48
48
|
- D3-PSEP
|
|
49
49
|
- D3-SCP
|
|
50
|
-
|
|
50
|
+
forward_watch:
|
|
51
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12 or sooner via Patch Tuesday) — Windows 11 LPE improper access control by DEVCORE (Angelboy + TwinkleStar03); track MSRC advisory and KEV add
|
|
52
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12 or sooner via Patch Tuesday) — Windows 11 LPE heap buffer overflow by Marcin Wiązowski; track MSRC advisory and KEV add
|
|
53
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12 or sooner via Patch Tuesday) — Windows 11 LPE 2x use-after-free by Kentaro Kawane (GMO); track MSRC advisory and KEV add
|
|
54
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — RHEL race-condition LPE by chompie / IBM X-Force XOR; track Red Hat advisory and KEV add
|
|
55
|
+
last_threat_review: "2026-05-15"
|
|
51
56
|
---
|
|
52
57
|
|
|
53
58
|
# Kernel LPE Triage
|
|
@@ -60,14 +60,19 @@ d3fend_refs:
|
|
|
60
60
|
- D3-EAL
|
|
61
61
|
- D3-EHB
|
|
62
62
|
- D3-MFA
|
|
63
|
-
|
|
63
|
+
forward_watch:
|
|
64
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM 3-bug SSRF + Code Injection chain by k3vg3n; MCP-adjacent LLM proxy surface; track upstream patch and MCP trust advisory
|
|
65
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM full SSRF + Code Injection by Out Of Bounds (Byung Young Yi); duplicate-class with the k3vg3n entry; track unified patch advisory
|
|
66
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LM Studio 5-bug exploit chain by STARLabs SG; impacts local MCP/agent runtime trust; track patch and integration advisories
|
|
67
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — Claude Code MCP collision-scored entry by Viettel Cyber Security; CVE in flight; track MCP trust and tool-collision advisory
|
|
68
|
+
last_threat_review: "2026-05-15"
|
|
64
69
|
---
|
|
65
70
|
|
|
66
71
|
# MCP Agent Trust Assessment
|
|
67
72
|
|
|
68
73
|
## Threat Context (mid-2026)
|
|
69
74
|
|
|
70
|
-
The Model Context Protocol (MCP) is an open protocol for connecting AI assistants to external tools and data sources. It is now the standard integration layer for AI coding assistants: Cursor, VS Code + GitHub Copilot, Windsurf, Claude Code, and Gemini CLI all support MCP servers.
|
|
75
|
+
The Model Context Protocol (MCP) is an open protocol for connecting AI assistants to external tools and data sources. It is now the standard integration layer for AI coding assistants: Cursor, VS Code + GitHub Copilot, Windsurf, Claude Code, and Gemini CLI all support MCP servers. Background reality: 41% of 2025 zero-days were AI-discovered (GTIG 2025); Fragnesia (CVE-2026-46300, 2026-05-13) is the canonical AI-driven autonomous-discovery anchor — Zellic's agentic auditor surfaced an 18-year-old kernel primitive that load-bearing MCP-server hosts depend on. The first documented AI-built in-the-wild zero-day landed 2026-05-11 (GTIG AI 2FA-bypass). MCP trust posture should align to CTID Secure AI v2 (2026-05-06, replaces v1).
|
|
71
76
|
|
|
72
77
|
MCP creates an architectural trust problem that no existing security framework addresses.
|
|
73
78
|
|
|
@@ -62,7 +62,7 @@ forward_watch:
|
|
|
62
62
|
- SLSA v1.1 ML profile (draft) — model-provenance extension for training-run attestation chains; track ID and section changes
|
|
63
63
|
- EU AI Act high-risk technical-file implementing acts (2026-2027) — operational requirements for Article 10 / 13 / 15 documentation may pin ML-BOM or model-signing
|
|
64
64
|
- MITRE ATLAS v5.2 — track AML.T0010 sub-technique expansion and any new MLOps-pipeline-specific TTPs
|
|
65
|
-
last_threat_review: "2026-05-
|
|
65
|
+
last_threat_review: "2026-05-15"
|
|
66
66
|
---
|
|
67
67
|
|
|
68
68
|
# MLOps Pipeline Security Assessment
|
|
@@ -37,14 +37,16 @@ d3fend_refs:
|
|
|
37
37
|
- D3-FAPA
|
|
38
38
|
- D3-IOPR
|
|
39
39
|
- D3-NTA
|
|
40
|
-
|
|
40
|
+
forward_watch:
|
|
41
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — Chroma vector DB CWE-190 + CWE-362 chain by haehae; impacts RAG vector store integrity (integer overflow + race condition); track patch and downstream RAG pipeline advisory
|
|
42
|
+
last_threat_review: "2026-05-15"
|
|
41
43
|
---
|
|
42
44
|
|
|
43
45
|
# RAG Pipeline Security Assessment
|
|
44
46
|
|
|
45
47
|
## Threat Context (mid-2026)
|
|
46
48
|
|
|
47
|
-
Retrieval-Augmented Generation (RAG) pipelines introduce a unique attack surface that exists at the intersection of traditional data security and AI-specific vulnerabilities. No current compliance framework has adequate controls for this attack surface. The threats in this skill are not theoretical — they have been demonstrated in research and observed in production incidents.
|
|
49
|
+
Retrieval-Augmented Generation (RAG) pipelines introduce a unique attack surface that exists at the intersection of traditional data security and AI-specific vulnerabilities. No current compliance framework has adequate controls for this attack surface. The threats in this skill are not theoretical — they have been demonstrated in research and observed in production incidents. Operational context: 41% of 2025 zero-days were AI-discovered (GTIG 2025); the first AI-built in-the-wild zero-day surfaced 2026-05-11 (GTIG AI 2FA-bypass), and Fragnesia (CVE-2026-46300, 2026-05-13) is the canonical AI-driven autonomous-discovery anchor (Zellic agentic auditor, 18-year-old Linux kernel primitive). RAG corpus trust posture should align to CTID Secure AI v2 (2026-05-06, replaces v1) — embedding-store integrity is in-scope.
|
|
48
50
|
|
|
49
51
|
A RAG pipeline has five attack surfaces:
|
|
50
52
|
|
|
@@ -73,7 +73,7 @@ forward_watch:
|
|
|
73
73
|
- BCB Resolução BCB 85 (cyber policy for FIs) and Brazil PIX fraud-typology updates
|
|
74
74
|
- OSFI B-13 (Technology and Cyber Risk Management) post-2024 examination findings
|
|
75
75
|
- TIBER-EU framework v2.0 alignment with DORA TLPT RTS (JC 2024/40); cross-recognition with CBEST and iCAST
|
|
76
|
-
last_threat_review: "2026-05-
|
|
76
|
+
last_threat_review: "2026-05-15"
|
|
77
77
|
---
|
|
78
78
|
|
|
79
79
|
# Sector — Financial Services Cybersecurity (mid-2026)
|
|
@@ -32,7 +32,7 @@ forward_watch:
|
|
|
32
32
|
- AI/MCP platform CVEs (GitHub Security Advisories, OSV database)
|
|
33
33
|
- Framework publication updates (NIST SP updates, ISO amendments, NIS2 implementing acts)
|
|
34
34
|
- IETF RFC publications and draft status changes (datatracker.ietf.org, rfc-editor.org); run `npm run validate-rfcs` quarterly
|
|
35
|
-
last_threat_review: "2026-05-
|
|
35
|
+
last_threat_review: "2026-05-15"
|
|
36
36
|
---
|
|
37
37
|
|
|
38
38
|
# Skill Update Loop
|
|
@@ -54,6 +54,8 @@ forward_watch:
|
|
|
54
54
|
- SPDX 3.1 — AI profile maturation, dataset provenance schema stabilization
|
|
55
55
|
- EU CRA (Regulation 2024/2847) — implementing acts for technical documentation and SBOM submission expected through 2027
|
|
56
56
|
- OpenSSF model-signing — emerging Sigstore-based signing standard for ML model weights; track for production adoption
|
|
57
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Megatron Bridge overly permissive allowed list by Satoki Tsuji; AI training-stack supply-chain exposure; track patch and SBOM-attestation impact
|
|
58
|
+
- Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Megatron Bridge path traversal by haehae; AI training-stack file-system trust boundary; track patch and SBOM-attestation impact
|
|
57
59
|
cwe_refs:
|
|
58
60
|
- CWE-1357
|
|
59
61
|
- CWE-1395
|
|
@@ -64,7 +66,7 @@ d3fend_refs:
|
|
|
64
66
|
- D3-CBAN
|
|
65
67
|
- D3-EAL
|
|
66
68
|
- D3-EHB
|
|
67
|
-
last_threat_review: "2026-05-
|
|
69
|
+
last_threat_review: "2026-05-15"
|
|
68
70
|
---
|
|
69
71
|
|
|
70
72
|
# Supply-Chain Integrity Assessment
|
|
@@ -22,7 +22,7 @@ forward_watch:
|
|
|
22
22
|
- New CISA KEV entries in kernel/AI/supply chain categories
|
|
23
23
|
- New MCP or agent protocol security disclosures
|
|
24
24
|
- Emerging malware families using AI for evasion
|
|
25
|
-
last_threat_review: "2026-05-
|
|
25
|
+
last_threat_review: "2026-05-15"
|
|
26
26
|
---
|
|
27
27
|
|
|
28
28
|
# Threat Model Currency Assessment
|
|
@@ -68,6 +68,8 @@ d3fend_refs:
|
|
|
68
68
|
- D3-CSPP
|
|
69
69
|
- D3-EAL
|
|
70
70
|
- D3-MFA
|
|
71
|
+
forward_watch:
|
|
72
|
+
- NGINX Rift CVE-2026-42945 (disclosed 2026-05-13, source depthfirst) — KEV-watch predicted CISA KEV listing by 2026-05-29; AI-assisted discovery angle; track for active-exploitation confirmation and patch advisory affecting front-door web app deployments
|
|
71
73
|
last_threat_review: "2026-05-11"
|
|
72
74
|
---
|
|
73
75
|
|
|
@@ -23,7 +23,7 @@ forward_watch:
|
|
|
23
23
|
- New ATLAS TTP additions in each ATLAS release
|
|
24
24
|
- Framework updates that close previously open gaps
|
|
25
25
|
- Vendor advisories for MCP/AI tool supply chain CVEs
|
|
26
|
-
last_threat_review: "2026-05-
|
|
26
|
+
last_threat_review: "2026-05-15"
|
|
27
27
|
---
|
|
28
28
|
|
|
29
29
|
# Zero-Day Learning Loop
|
|
@@ -44,7 +44,7 @@ The `atlas_refs`, `attack_refs`, and `framework_gaps` arrays are intentionally e
|
|
|
44
44
|
|
|
45
45
|
The zero-day learning cycle has compressed. The frameworks have not.
|
|
46
46
|
|
|
47
|
-
- **41% of 2025 zero-days were discovered by attackers using AI-assisted reverse engineering** (AGENTS.md DR-5). Copy Fail (CVE-2026-31431) was AI-found in approximately one hour. The historical learning rhythm — researcher disclosure → industry analysis → framework update cycle measured in quarters or years — is incompatible with AI-discovery cadence measured in weeks.
|
|
47
|
+
- **41% of 2025 zero-days were discovered by attackers using AI-assisted reverse engineering** (AGENTS.md DR-5 / GTIG 2025). Copy Fail (CVE-2026-31431) was AI-found in approximately one hour; Fragnesia (CVE-2026-46300, 2026-05-13) is the canonical 2026 anchor case — Zellic's agentic code-auditing tool surfaced an 18-year-old Linux kernel page-cache primitive in load-bearing OSS. The first documented AI-built in-the-wild zero-day surfaced 2026-05-11 (GTIG AI 2FA-bypass case). The exceptd catalog's 2026 AI-discovery rate now stands at 40% (4/10), tracking the GTIG reference. The historical learning rhythm — researcher disclosure → industry analysis → framework update cycle measured in quarters or years — is incompatible with AI-discovery cadence measured in weeks. CTID Secure AI v2 (2026-05-06) replaces v1 as the alignment target for the learning-loop outputs.
|
|
48
48
|
- **The compounding consequence**: when a zero-day is announced, the relevant question is no longer "when will the patch ship?" but "what control, if it had existed, would have stopped this, and how do we add that control to the next thousand systems before the AI-generated variant lands?" Without a running learning loop, every novel TTP becomes a one-off incident response rather than a control-system improvement.
|
|
49
49
|
- **AI-acceleration also compresses variant generation.** A single disclosed primitive (Copy Fail's deterministic page-cache CoW; SesameOp's AI-API C2 channel) can be re-applied by AI tooling to adjacent code paths within days. Frameworks that only respond to specific CVE-IDs miss the class-level lesson entirely.
|
|
50
50
|
- **Compliance frameworks do not include zero-day learning as a required control category.** The "learn from incidents" language in NIST CSF 2.0 IMPROVE and ISO 27001:2022 A.5.7 is process-only, no required artifact. An org can be fully compliant while patching every CVE and learning nothing.
|