@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.
Files changed (70) hide show
  1. package/AGENTS.md +12 -4
  2. package/CHANGELOG.md +190 -3
  3. package/README.md +14 -1
  4. package/bin/exceptd.js +584 -166
  5. package/data/_indexes/_meta.json +31 -31
  6. package/data/_indexes/activity-feed.json +45 -45
  7. package/data/_indexes/catalog-summaries.json +19 -19
  8. package/data/_indexes/chains.json +320 -0
  9. package/data/_indexes/currency.json +9 -9
  10. package/data/_indexes/frequency.json +39 -2
  11. package/data/_indexes/jurisdiction-clocks.json +2 -2
  12. package/data/_indexes/jurisdiction-map.json +3 -1
  13. package/data/_indexes/section-offsets.json +396 -396
  14. package/data/_indexes/summary-cards.json +3 -3
  15. package/data/_indexes/token-budget.json +73 -73
  16. package/data/atlas-ttps.json +491 -19
  17. package/data/attack-techniques.json +198 -84
  18. package/data/cve-catalog.json +1309 -9
  19. package/data/exploit-availability.json +300 -10
  20. package/data/framework-control-gaps.json +395 -1
  21. package/data/global-frameworks.json +44 -19
  22. package/data/playbooks/containers.json +1 -1
  23. package/data/playbooks/crypto-codebase.json +1 -1
  24. package/data/playbooks/framework.json +1 -1
  25. package/data/playbooks/hardening.json +1 -1
  26. package/data/playbooks/library-author.json +1 -1
  27. package/data/playbooks/secrets.json +25 -1
  28. package/data/rfc-references.json +93 -1
  29. package/data/zeroday-lessons.json +475 -13
  30. package/lib/auto-discovery.js +26 -2
  31. package/lib/exit-codes.js +72 -0
  32. package/lib/flag-suggest.js +130 -0
  33. package/lib/id-validation.js +95 -0
  34. package/lib/lint-skills.js +68 -1
  35. package/lib/playbook-runner.js +321 -46
  36. package/lib/prefetch.js +113 -0
  37. package/lib/refresh-external.js +190 -8
  38. package/lib/refresh-network.js +35 -8
  39. package/lib/schemas/cve-catalog.schema.json +31 -4
  40. package/lib/schemas/playbook.schema.json +51 -0
  41. package/lib/scoring.js +41 -0
  42. package/lib/upstream-check-cli.js +16 -1
  43. package/lib/upstream-check.js +9 -0
  44. package/lib/verify.js +20 -4
  45. package/manifest-snapshot.json +1 -1
  46. package/manifest-snapshot.sha256 +1 -1
  47. package/manifest.json +59 -59
  48. package/package.json +8 -2
  49. package/sbom.cdx.json +6 -6
  50. package/scripts/check-test-coverage.js +67 -0
  51. package/scripts/verify-shipped-tarball.js +9 -0
  52. package/skills/ai-attack-surface/skill.md +11 -2
  53. package/skills/ai-c2-detection/skill.md +3 -1
  54. package/skills/ai-risk-management/skill.md +3 -1
  55. package/skills/api-security/skill.md +4 -0
  56. package/skills/attack-surface-pentest/skill.md +1 -0
  57. package/skills/container-runtime-security/skill.md +3 -1
  58. package/skills/dlp-gap-analysis/skill.md +1 -1
  59. package/skills/exploit-scoring/skill.md +2 -2
  60. package/skills/incident-response-playbook/skill.md +1 -1
  61. package/skills/kernel-lpe-triage/skill.md +6 -1
  62. package/skills/mcp-agent-trust/skill.md +7 -2
  63. package/skills/mlops-security/skill.md +1 -1
  64. package/skills/rag-pipeline-security/skill.md +4 -2
  65. package/skills/sector-financial/skill.md +1 -1
  66. package/skills/skill-update-loop/skill.md +1 -1
  67. package/skills/supply-chain-integrity/skill.md +3 -1
  68. package/skills/threat-model-currency/skill.md +1 -1
  69. package/skills/webapp-security/skill.md +2 -0
  70. 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
- last_threat_review: "2026-05-13"
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-13"
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-11"
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
- last_threat_review: "2026-05-11"
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)
@@ -62,7 +62,7 @@ d3fend_refs:
62
62
  - D3-IOPR
63
63
  - D3-NTA
64
64
  - D3-NTPM
65
- last_threat_review: "2026-05-11"
65
+ last_threat_review: "2026-05-15"
66
66
  ---
67
67
 
68
68
  # DLP Gap Analysis
@@ -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-14"
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-11"
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
- last_threat_review: "2026-05-14"
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
- last_threat_review: "2026-05-13"
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-11"
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
- last_threat_review: "2026-05-13"
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-11"
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-11"
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-13"
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-14"
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-14"
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.