@blamejs/exceptd-skills 0.16.25 → 0.16.28

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 (66) hide show
  1. package/AGENTS.md +5 -5
  2. package/ARCHITECTURE.md +3 -3
  3. package/CHANGELOG.md +14 -0
  4. package/CONTEXT.md +2 -2
  5. package/README.md +5 -5
  6. package/agents/threat-researcher.md +2 -2
  7. package/data/_indexes/_meta.json +39 -39
  8. package/data/_indexes/activity-feed.json +240 -240
  9. package/data/_indexes/catalog-summaries.json +3 -3
  10. package/data/_indexes/currency.json +64 -64
  11. package/data/_indexes/recipes.json +1 -1
  12. package/data/_indexes/section-offsets.json +510 -510
  13. package/data/_indexes/summary-cards.json +33 -33
  14. package/data/_indexes/token-budget.json +200 -200
  15. package/data/atlas-ttps.json +7 -7
  16. package/data/attack-techniques.json +5 -5
  17. package/data/framework-control-gaps.json +3 -3
  18. package/lib/auto-discovery.js +7 -9
  19. package/lib/cvss.js +108 -0
  20. package/lib/prefetch.js +97 -5
  21. package/lib/refresh-external.js +22 -11
  22. package/lib/schemas/manifest.schema.json +1 -1
  23. package/lib/schemas/skill-frontmatter.schema.json +1 -1
  24. package/lib/version-pins.js +3 -3
  25. package/manifest-snapshot.json +2 -2
  26. package/manifest-snapshot.sha256 +1 -1
  27. package/manifest.json +124 -124
  28. package/package.json +1 -1
  29. package/sbom.cdx.json +133 -118
  30. package/scripts/builders/catalog-summaries.js +1 -1
  31. package/scripts/builders/recipes.js +1 -1
  32. package/scripts/run-e2e-scenarios.js +48 -17
  33. package/skills/age-gates-child-safety/skill.md +3 -3
  34. package/skills/ai-attack-surface/skill.md +4 -4
  35. package/skills/ai-c2-detection/skill.md +5 -5
  36. package/skills/api-security/skill.md +2 -2
  37. package/skills/attack-surface-pentest/skill.md +4 -4
  38. package/skills/cloud-security/skill.md +3 -3
  39. package/skills/compliance-theater/skill.md +3 -3
  40. package/skills/container-runtime-security/skill.md +3 -3
  41. package/skills/coordinated-vuln-disclosure/skill.md +2 -2
  42. package/skills/defensive-countermeasure-mapping/skill.md +3 -3
  43. package/skills/dlp-gap-analysis/skill.md +5 -5
  44. package/skills/exploit-scoring/skill.md +2 -2
  45. package/skills/framework-gap-analysis/skill.md +4 -4
  46. package/skills/fuzz-testing-strategy/skill.md +2 -2
  47. package/skills/incident-response-playbook/skill.md +3 -3
  48. package/skills/mcp-agent-trust/skill.md +2 -2
  49. package/skills/mlops-security/skill.md +3 -3
  50. package/skills/ot-ics-security/skill.md +3 -3
  51. package/skills/policy-exception-gen/skill.md +3 -3
  52. package/skills/pqc-first/skill.md +2 -2
  53. package/skills/rag-pipeline-security/skill.md +4 -4
  54. package/skills/ransomware-response/skill.md +2 -2
  55. package/skills/sector-energy/skill.md +2 -2
  56. package/skills/sector-federal-government/skill.md +2 -2
  57. package/skills/sector-financial/skill.md +4 -4
  58. package/skills/sector-healthcare/skill.md +3 -3
  59. package/skills/security-maturity-tiers/skill.md +1 -1
  60. package/skills/skill-update-loop/skill.md +6 -6
  61. package/skills/supply-chain-integrity/skill.md +2 -2
  62. package/skills/threat-model-currency/skill.md +8 -8
  63. package/skills/threat-modeling-methodology/skill.md +2 -2
  64. package/skills/webapp-security/skill.md +2 -2
  65. package/skills/zeroday-gap-learn/skill.md +3 -3
  66. package/sources/validators/cve-validator.js +12 -13
@@ -23,7 +23,7 @@ forward_watch:
23
23
  - EU CRA exceptions for AI pipeline components
24
24
  - NIST SP 800-204 series updates for microservices
25
25
  - FedRAMP updates for container/serverless authorization
26
- last_threat_review: "2026-05-22"
26
+ last_threat_review: "2026-06-10"
27
27
  ---
28
28
 
29
29
  # Policy Exception Generation
@@ -88,7 +88,7 @@ This skill's exceptions exist precisely because the framework language has not c
88
88
 
89
89
  ---
90
90
 
91
- ## TTP Mapping (MITRE ATLAS v5.6.0 and ATT&CK)
91
+ ## TTP Mapping (MITRE ATLAS v2026.05 and ATT&CK)
92
92
 
93
93
  A granted exception does not remove the threat — it shifts the burden onto compensating controls. For each exception in this skill, the residual TTPs the compensating controls MUST still disrupt:
94
94
 
@@ -99,7 +99,7 @@ A granted exception does not remove the threat — it shifts the burden onto com
99
99
  | Exception 3 — Zero Trust Architecture Network Segmentation | T1021 (Remote Services), T1570 (Lateral Tool Transfer), T1078 (Valid Accounts), T1199 (Trusted Relationship) | Workload identity (SPIFFE/SPIRE), per-request mTLS, device-posture verification, east-west behavioral analytics |
100
100
  | Exception 4 — Critical Systems No-Reboot Kernel Patching | T1068 (Exploitation for Privilege Escalation — Copy Fail class), T1548.001 (Setuid and Setgid), T1611 (Escape to Host) | Live kernel patch deployed and verified (`kpatch list` / `canonical-livepatch status`), eBPF/auditd exploitation-pattern rules, network-layer isolation if no live patch available, scheduled reboot window |
101
101
 
102
- The TTP source-of-truth is `data/atlas-ttps.json` (MITRE ATLAS v5.6.0, May 2026) supplemented by ATT&CK Enterprise. No orphaned controls: no exception in this skill is granted without an enumerated residual-TTP set; an exception with no listed residual is theater.
102
+ The TTP source-of-truth is `data/atlas-ttps.json` (MITRE ATLAS v2026.05, May 2026) supplemented by ATT&CK Enterprise. No orphaned controls: no exception in this skill is granted without an enumerated residual-TTP set; an exception with no listed residual is theater.
103
103
 
104
104
  ---
105
105
 
@@ -53,7 +53,7 @@ cwe_refs:
53
53
  d3fend_refs:
54
54
  - D3-FE
55
55
  - D3-MENCR
56
- last_threat_review: "2026-05-22"
56
+ last_threat_review: "2026-06-10"
57
57
  ---
58
58
 
59
59
  # PQC-First Mentality
@@ -139,7 +139,7 @@ This skill addresses a **future-state attack class** that is not yet represented
139
139
  |---|---|---|
140
140
  | MITRE ATT&CK T1557 (Adversary-in-the-Middle) | Partial — operational family | T1557 covers AitM credential capture and traffic interception. The capture half of HNDL falls into T1557 operationally; the later decrypt phase has no ATT&CK technique. |
141
141
  | MITRE ATT&CK T1040 (Network Sniffing) | Partial — capture phase | Covers passive traffic capture. Does not cover the strategic-archive intent of HNDL, where the captured data has no immediate use and is stored for future decryption. |
142
- | MITRE ATT&CK — "Cryptanalysis via CRQC" | **MISSING** | No technique presently captures CRQC-enabled decryption of previously-captured ciphertext. Known gap through ATT&CK v19.0 (April 2026). |
142
+ | MITRE ATT&CK — "Cryptanalysis via CRQC" | **MISSING** | No technique presently captures CRQC-enabled decryption of previously-captured ciphertext. Known gap through ATT&CK v19.1 (May 2026). |
143
143
  | MITRE ATLAS | **MISSING (out of scope)** | ATLAS scope is ML/AI system attacks. CRQC cryptanalysis is not in ATLAS scope. |
144
144
  | CAPEC-114 (Authentication Abuse) | Indirect | Forged signatures via broken signature scheme would manifest as authentication abuse, but CAPEC does not enumerate "signature scheme broken by CRQC" as a precondition. |
145
145
  | CAPEC-475 (Signature Spoofing by Improper Validation) | Indirect | Same — the post-CRQC equivalent has no CAPEC entry. |
@@ -41,7 +41,7 @@ d3fend_refs:
41
41
  - D3-NTA
42
42
  forward_watch:
43
43
  - 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
44
- last_threat_review: "2026-05-22"
44
+ last_threat_review: "2026-06-10"
45
45
  ---
46
46
 
47
47
  # RAG Pipeline Security Assessment
@@ -182,9 +182,9 @@ This attack requires:
182
182
 
183
183
  ---
184
184
 
185
- ## TTP Mapping (MITRE ATLAS v5.6.0)
185
+ ## TTP Mapping (MITRE ATLAS v2026.05)
186
186
 
187
- Descriptions sourced verbatim from `data/atlas-ttps.json` (ATLAS v5.6.0, released 2026-05-08). Partial-coverage controls from `data/framework-control-gaps.json`.
187
+ Descriptions sourced verbatim from `data/atlas-ttps.json` (ATLAS v2026.05, released 2026-05-27). Partial-coverage controls from `data/framework-control-gaps.json`.
188
188
 
189
189
  | ATLAS ID | ATLAS Name | RAG Attack Class | Control Gap That Lets It Land | Controls That Partially Cover It |
190
190
  |---|---|---|---|---|
@@ -198,7 +198,7 @@ Descriptions sourced verbatim from `data/atlas-ttps.json` (ATLAS v5.6.0, release
198
198
 
199
199
  ## Exploit Availability Matrix
200
200
 
201
- **No CVE catalog entry as of 2026-05 maps directly to RAG embedding manipulation, vector store poisoning, or RAG indirect prompt injection.** These attack classes are tracked via MITRE ATLAS TTPs (v5.6.0) and public incident reporting rather than vendor CVEs, because they exploit architectural properties of the RAG pattern rather than a single vendor's implementation flaw. `data/exploit-availability.json` therefore has no RAG-specific rows; the rows below source ATLAS `real_world_instances` and the framework-gap entries.
201
+ **No CVE catalog entry as of 2026-05 maps directly to RAG embedding manipulation, vector store poisoning, or RAG indirect prompt injection.** These attack classes are tracked via MITRE ATLAS TTPs (v2026.05) and public incident reporting rather than vendor CVEs, because they exploit architectural properties of the RAG pattern rather than a single vendor's implementation flaw. `data/exploit-availability.json` therefore has no RAG-specific rows; the rows below source ATLAS `real_world_instances` and the framework-gap entries.
202
202
 
203
203
  | ATLAS Technique | PoC / Public Demo Available? | CISA KEV? | AI-Accelerated? | Patch Available? | Reboot / Version Bump Required? |
204
204
  |---|---|---|---|---|---|
@@ -62,7 +62,7 @@ forward_watch:
62
62
  - HIPAA Security Rule update (NPRM late 2024 → final rule expected 2026) — explicit ransomware-recovery and encryption-at-rest requirements
63
63
  - No More Ransom Project decryptor releases — affiliate-takedown decryptor drops (Operation Cronos LockBit decryptor, BlackCat post-exit-scam decryptors)
64
64
  - SCOTUS or circuit-court rulings on ransomware payment, sanctions liability, and insurance-policy enforcement
65
- last_threat_review: "2026-05-22"
65
+ last_threat_review: "2026-06-10"
66
66
  ---
67
67
 
68
68
  # Ransomware Response Playbook
@@ -129,7 +129,7 @@ Cross-cutting gap: **no security framework treats the four ransomware-specific d
129
129
 
130
130
  Shadow Copy deletion and exfil-staging via Web Service align to the parent IR playbook's `T1486` and `T1567` entries; the parent's `AML.T0096 / T0017 / T0051` entries do not apply to ransomware-as-a-class but may apply if AI-system data is exfiltrated within the ransomware operation.
131
131
 
132
- ATLAS pinned to v5.6.0 (May 2026). ATT&CK pinned to v19.0 (April 2026). Both are explicit version pins — never silently upgraded.
132
+ ATLAS pinned to v2026.05 (May 2026). ATT&CK pinned to v19.1 (May 2026). Both are explicit version pins — never silently upgraded.
133
133
 
134
134
  ---
135
135
 
@@ -56,7 +56,7 @@ forward_watch:
56
56
  - UL 2941 (DER cybersecurity) and IEEE 1547.3-2023 (DER cyber) adoption into US state PUC interconnection rules
57
57
  - MadIoT-class research on consumer-IoT-driven grid frequency manipulation moving from proof-of-concept to attributed campaigns
58
58
  - ICS-CERT advisory feed (https://www.cisa.gov/news-events/cybersecurity-advisories/ics-advisories) for vendor CVEs in Siemens, Rockwell, Schneider Electric, ABB, GE Vernova, Hitachi Energy, AVEVA / OSIsoft PI
59
- last_threat_review: "2026-05-11"
59
+ last_threat_review: "2026-06-10"
60
60
  discovery_mode: "standalone" # operator-reached via `exceptd brief sector-energy` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
61
61
  ---
62
62
 
@@ -133,7 +133,7 @@ Energy-sector TTPs span ATT&CK for ICS, ATT&CK Enterprise (for the IT side of th
133
133
  | Hard-coded / shared / default credentials in energy assets | CWE-798 | CWE | Vendor default credentials on PLC, RTU, smart inverter, smart meter, EVSE, OCPP back-end; shared substation operator accounts | NERC CIP-007 R5 partially addresses but exempts asset classes lacking user-account features; AWWA guidance non-binding for water |
134
134
  | Firmware-image integrity at L1 | CWE-1037 + CWE-345 family (insufficient verification of data authenticity) | CWE | Unsigned firmware accepted by relay, RTU, smart inverter; vendor build-pipeline compromise propagating to substation fleet | NERC CIP-010 baseline-change management does not require firmware-image signature verification at install time; signed-firmware support varies by vendor and product line |
135
135
  | Authentication weakness in energy protocols | CWE-287 + CWE-306 | CWE | IEC 60870-5-104 and IEC 61850 MMS deployed without IEC 62351 authentication retrofit; DNP3 deployed without DNP3-SA; Modbus/TCP without any authentication layer | IEC 62443-3-3 SR 1.1/1.2 unenforceable at protocol layer for installed brownfield; retrofit cost and operational risk routinely defer indefinitely |
136
- | AI-pipeline poisoning in dispatch / forecasting | (closest ATLAS mapping addressed in `ai-attack-surface`) | ATLAS v5.6.0 | ML-poisoning of load forecast inputs, renewables forecast inputs, congestion model training data, or unit-commitment optimization features | No ATT&CK for ICS technique for AI-mediated market or dispatch manipulation; NERC CIP-007 R4 silent on AI event sources; NIST 800-82r3 silent. Cross-reference `ai-attack-surface`, `rag-pipeline-security`. |
136
+ | AI-pipeline poisoning in dispatch / forecasting | (closest ATLAS mapping addressed in `ai-attack-surface`) | ATLAS v2026.05 | ML-poisoning of load forecast inputs, renewables forecast inputs, congestion model training data, or unit-commitment optimization features | No ATT&CK for ICS technique for AI-mediated market or dispatch manipulation; NERC CIP-007 R4 silent on AI event sources; NIST 800-82r3 silent. Cross-reference `ai-attack-surface`, `rag-pipeline-security`. |
137
137
 
138
138
  **Note on ATT&CK for ICS ID format.** ATT&CK for ICS uses `T0xxx` IDs (T0855, T0883, T0867). The linter regex `^T\d{4}(\.\d{3})?$` accepts this shape. ATT&CK Enterprise IDs (T1190, T1078, T1068) are cited alongside for IT/OT pivot.
139
139
 
@@ -60,7 +60,7 @@ forward_watch:
60
60
  - UK GovAssure replacing the legacy IT Health Check (ITHC) scheme — phased rollout for departments and ALBs through 2026
61
61
  - EU Cybersecurity Certification Scheme on Common Criteria (EUCC) operational — first certificates issued 2024; high-assurance level for government use cases ramping
62
62
  - Australia PSPF 2024 revision and ISM quarterly updates — track for Essential Eight Maturity Level requirements for federal entities
63
- last_threat_review: "2026-05-11"
63
+ last_threat_review: "2026-06-10"
64
64
  discovery_mode: "standalone" # operator-reached via `exceptd brief sector-federal-government` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
65
65
  ---
66
66
 
@@ -299,7 +299,7 @@ Forward-watch: CMMC Level 3 (NIST 800-172 enhanced practices) addresses APT-rele
299
299
  - **`supply-chain-integrity`** — SSDF practice evidence, SLSA L3 attestation, in-toto chain, Sigstore / cosign keyless signing, SBOM (CycloneDX 1.6 / SPDX 3.0), VEX via CSAF 2.0 for federal procurement.
300
300
  - **`attack-surface-pentest`** — Federal red-team and High-Value Asset assessment scoping; CISA penetration testing program alignment; allied-government red-team baselines.
301
301
  - **`identity-assurance`** — NIST 800-63 IAL / AAL / FAL; PIV / CAC issuance; FIDO2 / WebAuthn for federal external users; M-22-09 identity pillar evidence.
302
- - **`ai-attack-surface`** — Federal AI use cases under OMB M-24-04; NIST AI RMF Generative AI Profile (NIST AI 600-1); MITRE ATLAS v5.6.0 TTP coverage for federal AI threat modeling.
302
+ - **`ai-attack-surface`** — Federal AI use cases under OMB M-24-04; NIST AI RMF Generative AI Profile (NIST AI 600-1); MITRE ATLAS v2026.05 TTP coverage for federal AI threat modeling.
303
303
  - **`ai-c2-detection`** — Detection of agentic-AI command-and-control inside federal networks.
304
304
  - **`compliance-theater`** — Distinguishing FedRAMP / CMMC paper compliance from operational federal security; ConMon substance audit; SPRS-score-vs-evidence reconciliation.
305
305
  - **`framework-gap-analysis`** — Per-control gap analysis when an explicit framework-vs-threat reconciliation is requested by an auditor or AO.
@@ -70,7 +70,7 @@ forward_watch:
70
70
  - BCB Resolução BCB 85 (cyber policy for FIs) and Brazil PIX fraud-typology updates
71
71
  - OSFI B-13 (Technology and Cyber Risk Management) post-2024 examination findings
72
72
  - TIBER-EU framework v2.0 alignment with DORA TLPT RTS (JC 2024/40); cross-recognition with CBEST and iCAST
73
- last_threat_review: "2026-05-15"
73
+ last_threat_review: "2026-06-10"
74
74
  ---
75
75
 
76
76
  # Sector — Financial Services Cybersecurity (mid-2026)
@@ -152,14 +152,14 @@ In all three, the SCA evidence chain (the customer's authenticated session, the
152
152
  | Internet-banking / treasury portal exploit | T1190 — Exploit Public-Facing Application | ATT&CK Enterprise | Ivanti VPN, MOVEit-class file-transfer, web-portal SSRF, JWT validation flaws (RFC 8725 best-current-practice violations) | DORA Art. 6-15 ICT risk-management requirements general; CWE-862 (Missing Authorization) and CWE-352 (CSRF) common findings; SWIFT CSCF v2026 covers SWIFT zone, not customer-facing portals |
153
153
  | Ransomware against banking infrastructure | T1486 — Data Encrypted for Impact | ATT&CK Enterprise | LockBit-class, BlackBasta, ALPHV/BlackCat residuals 2024-2026; double-extortion + regulatory-threat-of-disclosure | NYDFS 500.17 ransom-payment notification (72h) + DORA major-incident reporting (Art. 19, 24h initial) + APRA CPS 234 para 26 (72h) — notification cadences harmonising slowly; ransom-payment legality fragmented (NYDFS reporting only, OFAC sanctions-screening, EU sanctions overlay) |
154
154
  | Data exfiltration including LLM-channel | T1567 — Exfiltration Over Web Service | ATT&CK Enterprise | LLM API egress (OpenAI, Anthropic, Google) as covert channel; AI-coding-assistant context leaks; KYC-document upload to consumer-grade AI | DLP controls in `data/dlp-controls.json` apply; SWIFT CSCF v2026 1.1 segregation assumption violated when AI-API egress crosses administrative jump zone |
155
- | AI-as-covert-C2 in trading / treasury systems | AML.T0096 — Use AI for C2 Communications | ATLAS v5.6.0 | Steganographic encoding in trading-assistant prompts; LLM response decodes operator instructions; multi-agent covert relay in market-making bots | No ATT&CK Enterprise mapping; ATLAS v5.6.0 names the technique but no financial-sector-specific detection. SOC tooling rarely monitors trading-system AI tool-use. |
156
- | Fraud-detection model extraction | AML.T0017 — Discover ML Model Ontology | ATLAS v5.6.0 | Adversarial probing of card-not-present fraud models; chargeback-pattern fingerprinting; transaction-monitoring threshold discovery via test transactions | Fraud-model lifecycle governance under MAS TRM / OSFI B-13 / NYDFS 500.13 (asset management) — model-extraction probes are not classified as a cyber event in most institutions |
155
+ | AI-as-covert-C2 in trading / treasury systems | AML.T0096 — Use AI for C2 Communications | ATLAS v2026.05 | Steganographic encoding in trading-assistant prompts; LLM response decodes operator instructions; multi-agent covert relay in market-making bots | No ATT&CK Enterprise mapping; ATLAS v2026.05 names the technique but no financial-sector-specific detection. SOC tooling rarely monitors trading-system AI tool-use. |
156
+ | Fraud-detection model extraction | AML.T0017 — Discover ML Model Ontology | ATLAS v2026.05 | Adversarial probing of card-not-present fraud models; chargeback-pattern fingerprinting; transaction-monitoring threshold discovery via test transactions | Fraud-model lifecycle governance under MAS TRM / OSFI B-13 / NYDFS 500.13 (asset management) — model-extraction probes are not classified as a cyber event in most institutions |
157
157
  | Hard-coded credentials in financial mobile / API clients | CWE-798 | CWE | Mobile-banking apps shipping API keys; partner-integration API tokens checked into Git; treasury-management-system local config | PSD2 RTS-SCA covers customer SCA, silent on partner-API credential hygiene; SWIFT CSCF 5.1/5.2 covers credential management for SWIFT users only |
158
158
  | Agent-initiated payment via prompt injection | (No native TTP — closest: T1078 + AML.T0051) | ATT&CK + ATLAS | LLM agent with payment-initiation tool-use receives injected instruction via email / document / web content; transaction executes under customer's authenticated session | RTS-SCA evidence chain is fully compliant; injected intent invisible. Captured in `data/framework-control-gaps.json#PSD2-RTS-SCA`. |
159
159
  | AI-generated SWIFT MT/MX message draft poisoning | (No native TTP — closest: T1565 + AML.T0051) | ATT&CK + ATLAS | LLM-assisted operator drafting tool produces subtly-wrong beneficiary BIC or amount; reviewer fatigue lets it pass 4-eyes principle | Captured in `data/framework-control-gaps.json#SWIFT-CSCF-v2026-1.1`. |
160
160
  | Deepfake-mediated SCA bypass / KYC bypass | T1556 — Modify Authentication Process (closest) | ATT&CK Enterprise | Voice-clone defeating remote-KYC liveness; deepfake-video defeating high-value-transaction step-up | RTS-SCA "inherence" factor (biometric) implementation-dependent; liveness-detection vendor-fragmented. CWE-287 underlying weakness. |
161
161
 
162
- **Note on TTP coverage.** ATT&CK Enterprise does not yet have a financial-sector matrix (unlike ATT&CK for ICS). ATLAS v5.6.0 covers AI-specific techniques. The gap between (a) the customer's authenticated session and (b) the AI agent's injected intent within that session is not currently named in either matrix — this is a tracked gap in `forward_watch`.
162
+ **Note on TTP coverage.** ATT&CK Enterprise does not yet have a financial-sector matrix (unlike ATT&CK for ICS). ATLAS v2026.05 covers AI-specific techniques. The gap between (a) the customer's authenticated session and (b) the AI agent's injected intent within that session is not currently named in either matrix — this is a tracked gap in `forward_watch`.
163
163
 
164
164
  ---
165
165
 
@@ -47,7 +47,7 @@ d3fend_refs:
47
47
  - D3-IOPR
48
48
  - D3-CSPP
49
49
  - D3-MFA
50
- last_threat_review: "2026-05-11"
50
+ last_threat_review: "2026-06-10"
51
51
  ---
52
52
 
53
53
  # Healthcare Sector Cybersecurity (mid-2026)
@@ -111,8 +111,8 @@ Healthcare has been the most targeted sector for ransomware for three consecutiv
111
111
  | Clinician credential phishing for EHR / VPN / Citrix access | T1078 — Valid Accounts | ATT&CK Enterprise | Targeted phishing of physicians and nurses using lookalike Epic / Cerner / Workday portals; MFA-fatigue against Duo/Microsoft Authenticator; SIM-swap on on-call physician phones | HIPAA §164.312(d) person/entity authentication does not specify AAL; many CEs accept SMS-OTP MFA — fails NIST 800-63B AAL2 phishing-resistance bar. Hand off to identity-assurance. |
112
112
  | Bulk EHR / FHIR / data-warehouse exfiltration | T1530 — Data from Cloud Storage Object | ATT&CK Enterprise | FHIR `$export` Bulk Data over-broad scopes; cloud data warehouse (Snowflake / BigQuery / Redshift) credential theft from clinician laptop; AWS S3 misconfiguration on de-identification staging buckets | HIPAA §164.312(c) integrity controls do not address bulk-API exfil semantics; HITRUST CSF 09.l information-transfer-policies treats bulk data flow at a policy layer. CWE-200 (Information Exposure), CWE-862 (Missing Authorization). |
113
113
  | PHI exfiltration via clinician prompt to consumer LLM | T1567 — Exfiltration Over Web Service | ATT&CK Enterprise | Clinician pastes patient note into ChatGPT / Claude / Gemini for differential diagnosis or letter drafting; ambient-doc tool retains and forwards transcript to vendor cloud outside BAA | No HIPAA control specifically names this channel; HHS-OCR Bulletin reasoning applies. Hand off to dlp-gap-analysis. CWE-200 (Information Exposure). |
114
- | Prompt injection of clinical decision-support copilot | AML.T0051 — LLM Prompt Injection (with .000/.001/.002 sub-techniques) | ATLAS v5.6.0 | Indirect prompt injection via referenced lab report PDF, OCR'd intake form, or patient-portal message that exploits an EHR-integrated copilot; instruction to suppress allergy alert, reorder medications, or fabricate trend in vital signs | EU AI Act Art 15 cybersecurity obligation applies but lacks concrete healthcare-AI threshold; HIPAA silent on prompt-injection-as-disclosure-vector. CWE-1426 (Improper Validation of Generative AI Output). |
115
- | Model extraction / membership inference against clinical AI | AML.T0017 — Discover ML Model Ontology (inference-API probing for system-prompt, guardrail, training-data signal); AML.T0016 — Obtain Capabilities: Develop Capabilities (adversarial-ML weaponization) | ATLAS v5.6.0 | Adversarial probing of a clinical-decision-support API to determine whether specific patient records were in training set; reconstruction of de-identified training examples from inference behaviour | EU AI Act Art 10 data-governance applies to training-data quality; does not codify membership-inference defence. CWE-1426 covers output-validation gap. |
114
+ | Prompt injection of clinical decision-support copilot | AML.T0051 — LLM Prompt Injection (with .000/.001/.002 sub-techniques) | ATLAS v2026.05 | Indirect prompt injection via referenced lab report PDF, OCR'd intake form, or patient-portal message that exploits an EHR-integrated copilot; instruction to suppress allergy alert, reorder medications, or fabricate trend in vital signs | EU AI Act Art 15 cybersecurity obligation applies but lacks concrete healthcare-AI threshold; HIPAA silent on prompt-injection-as-disclosure-vector. CWE-1426 (Improper Validation of Generative AI Output). |
115
+ | Model extraction / membership inference against clinical AI | AML.T0017 — Discover ML Model Ontology (inference-API probing for system-prompt, guardrail, training-data signal); AML.T0016 — Obtain Capabilities: Develop Capabilities (adversarial-ML weaponization) | ATLAS v2026.05 | Adversarial probing of a clinical-decision-support API to determine whether specific patient records were in training set; reconstruction of de-identified training examples from inference behaviour | EU AI Act Art 10 data-governance applies to training-data quality; does not codify membership-inference defence. CWE-1426 covers output-validation gap. |
116
116
  | Medical-device firmware tamper / exploit | T1190 (IT-side initial access to device-network) chained with vendor-specific device CVEs | ATT&CK Enterprise + ICS where applicable | Insulin pumps, cardiac monitors, infusion pumps (BD Alaris), sequencers (Illumina firmware), patient-monitoring (BD, Philips, GE Healthcare), bedside imaging | FDA 524B PMA/510(k) cyber obligations only apply to devices submitted after March 2023; brownfield fleet pre-dates it. EU MDR Annex I 17.2 silent on AI-augmented devices. Hand off to ot-ics-security for device-network treatment, and coordinated-vuln-disclosure for vendor reporting. |
117
117
  | FHIR / SMART on FHIR session token theft | T1078 chained with T1530 | ATT&CK Enterprise | Stolen JWT / OAuth2 bearer for SMART-on-FHIR launch; over-broad scopes (`*/*.read`, `patient/*.read`); refresh-token theft persists access; CWE-287 (improper authentication) and CWE-862 (missing authorization) | RFC-7519 JWT validation must enforce `iss`, `aud`, `exp`, signature algorithm, key rotation; RFC-9421 HTTP message signatures for FHIR API integrity in flight; HL7 FHIR R5 does not mandate either. |
118
118
  | EHR over-privileged break-glass / shared-account access | T1078.002 — Valid Accounts: Domain Accounts | ATT&CK Enterprise | Shared "Nurse" account on med-cart Windows; break-glass clinician account auditing gap; service account for EHR-integrated copilot with patient/* scope rather than encounter-bound | HIPAA §164.312(a)(2)(i) unique user identification is met technically by user-account-per-clinician but break-glass and AI-service-principals are commonly outside that boundary. NIST 800-53 AC-2 account management does not codify AI-service-principal scoping. |
@@ -452,7 +452,7 @@ The divergences above are surfaced against US, EU, UK, AU and ISO 27001:2022 —
452
452
 
453
453
  ## TTP Mapping
454
454
 
455
- Per-tier TTP coverage is cumulative: Practical includes MVP's coverage plus additions; Overkill includes both plus additions. Source-of-truth: `data/atlas-ttps.json` (MITRE ATLAS v5.6.0) and ATT&CK references in `data/cve-catalog.json`.
455
+ Per-tier TTP coverage is cumulative: Practical includes MVP's coverage plus additions; Overkill includes both plus additions. Source-of-truth: `data/atlas-ttps.json` (MITRE ATLAS v2026.05) and ATT&CK references in `data/cve-catalog.json`.
456
456
 
457
457
  | Tier | Must cover | TTP | Source | Tier-specific control element |
458
458
  |---|---|---|---|---|
@@ -33,7 +33,7 @@ forward_watch:
33
33
  - AI/MCP platform CVEs (GitHub Security Advisories, OSV database)
34
34
  - Framework publication updates (NIST SP updates, ISO amendments, NIS2 implementing acts)
35
35
  - IETF RFC publications and draft status changes (datatracker.ietf.org, rfc-editor.org); run `npm run validate-rfcs` quarterly
36
- last_threat_review: "2026-05-22"
36
+ last_threat_review: "2026-06-10"
37
37
  discovery_mode: "standalone" # operator-reached via `exceptd brief skill-update-loop` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
38
38
  ---
39
39
 
@@ -55,7 +55,7 @@ The threat context this skill defends against is not a specific adversary techni
55
55
 
56
56
  Real-world manifestations in mid-2026:
57
57
 
58
- - ATLAS v5.6.0 (May 2026) added TTPs that bind to operational reality (AML.T0096 AI-API C2, AML.T0048 erode-integrity-via-drift). A skill pinned to ATLAS v4 cannot route these. **AML.T0010** family was expanded to cover MCP supply-chain compromise mid-cycle.
58
+ - ATLAS v2026.05 (May 2026) added TTPs that bind to operational reality (AML.T0096 AI-API C2, AML.T0048 erode-integrity-via-drift). A skill pinned to ATLAS v4 cannot route these. **AML.T0010** family was expanded to cover MCP supply-chain compromise mid-cycle.
59
59
  - CVE-2026-31431 (Copy Fail) joined CISA KEV on 2026-05-01 with a 2026-05-15 federal due date. Any skill whose `last_threat_review` predates that listing and whose body recommends "patch on 30-day SLA" is recommending against a threat model that KEV escalated to days, not weeks.
60
60
  - NIST SP 800-63B updated PBKDF2 iteration guidance to ≥ 600,000 in 2022; many compliance attestations still cite the 2017 numbers. A skill that does not track that lag perpetuates the theater.
61
61
  - IETF RFC 9116 (security.txt) and the CSAF 2.0 transition both have hard cutover signals that change how `coordinated-vuln-disclosure` should advise.
@@ -283,7 +283,7 @@ When drift is detected:
283
283
 
284
284
  **Monitor:** Microsoft STRIDE updates (microsoft.com/en-us/securityengineering/sdl/threatmodeling), Linddun-go updates (linddun.org), Pol's Unified Kill Chain repository (https://www.unifiedkillchain.com/), MITRE D3FEND ontology releases (d3fend.mitre.org).
285
285
 
286
- Threat modeling methodologies evolve. STRIDE has periodic Microsoft revisions; LINDDUN's privacy-extension catalog grows as new privacy-violating AI patterns are documented; the Unified Kill Chain is versioned by Pol et al. and absorbs new phase definitions as adversary behavior shifts; MITRE D3FEND adds defensive-technique IDs and reorganizes its ontology on a published release cadence. A skill that names a methodology without tracking its version is the same drift class as a skill that names ATLAS without pinning v5.6.0.
286
+ Threat modeling methodologies evolve. STRIDE has periodic Microsoft revisions; LINDDUN's privacy-extension catalog grows as new privacy-violating AI patterns are documented; the Unified Kill Chain is versioned by Pol et al. and absorbs new phase definitions as adversary behavior shifts; MITRE D3FEND adds defensive-technique IDs and reorganizes its ontology on a published release cadence. A skill that names a methodology without tracking its version is the same drift class as a skill that names ATLAS without pinning v2026.05.
287
287
 
288
288
  When a new methodology version drops:
289
289
  1. Update `threat-modeling-methodology` skill body — refresh the methodology-version table, the DFD templates, and the attack-tree templates in its Output Format section to match the new release.
@@ -482,10 +482,10 @@ This skill does not have a single exploited target — its "exploit surface" is
482
482
  | Source | What It Provides | Cadence | Pinned Version / Anchor | Tracked In |
483
483
  |---|---|---|---|---|
484
484
  | CISA KEV catalog | Confirmed in-the-wild exploitation flag per CVE | Real-time (RSS / JSON API) | cisa.gov/known-exploited-vulnerabilities-catalog | `data/exploit-availability.json` (`cisa_kev`, `cisa_kev_date`) |
485
- | MITRE ATLAS changelog | TTP additions, renames, removals for AI/ML threat domain | Quarterly check; immediate on minor-version release | ATLAS v5.6.0 (May 2026) — pinned in AGENTS.md and `data/atlas-ttps.json._meta.atlas_version` | `_meta.atlas_version` |
485
+ | MITRE ATLAS changelog | TTP additions, renames, removals for AI/ML threat domain | Quarterly check; immediate on minor-version release | ATLAS v2026.05 (May 2026) — pinned in AGENTS.md and `data/atlas-ttps.json._meta.atlas_version` | `_meta.atlas_version` |
486
486
  | NVD CVE 2.0 API | Authoritative CVE metadata, CVSS vectors, references | Real-time on new CVE in covered domain | services.nvd.nist.gov/rest/json/cves/2.0 | `data/cve-catalog.json` |
487
487
  | NIST FIPS publication tracker | PQC and crypto-standard finalizations | Per-publication (event-driven) | csrc.nist.gov/publications | pqc-first `forward_watch` + manifest `last_threat_review` |
488
- | MITRE ATT&CK Enterprise | Non-AI TTP additions/renames | Per ATT&CK version release | attack.mitre.org (current pinned: v19.0, 2026-04-28) | Skill `attack_refs` fields |
488
+ | MITRE ATT&CK Enterprise | Non-AI TTP additions/renames | Per ATT&CK version release | attack.mitre.org (current pinned: v19.1, 2026-05-12) | Skill `attack_refs` fields |
489
489
  | GitHub Security Advisories / OSV | CVEs for AI assistants, MCP clients/servers, supply-chain JS/Python packages | Real-time on covered repos | osv.dev, github.com/advisories | `data/cve-catalog.json` |
490
490
  | Framework publisher feeds | NIST SP revisions, ISO amendments, NIS2 implementing acts, EU Official Journal, ENISA, NCSC, ASD | RSS / changelog per publisher | csrc.nist.gov, iso.org, eur-lex.europa.eu | `data/framework-control-gaps.json`, `data/global-frameworks.json` |
491
491
  | Kernel CNA / distro advisories | Kernel LPE, container-escape, page-cache CVEs | Per advisory | kernel.org, RHEL/Ubuntu/Debian security advisories | `data/cve-catalog.json`, kernel-lpe-triage |
@@ -518,4 +518,4 @@ The drift attack against skill currency is structural, not technical — there i
518
518
  | **D3-IOPR** (Input/Output Profiling Resource) | Lint-skills body / frontmatter parsing is the profiling step: every skill body is parsed against the canonical section template (Threat Context, TTP Mapping, Framework Lag Declaration, Exploit Availability Matrix, Analysis Procedure, Output Format, Compliance Theater Check, DCM). A drifted skill that drops a required section is caught at lint time. | Layer 2 (Harden — schema). | Per-skill — schema is per-skill body. | Default-deny missing sections; the v0.13.0 lint upgrade makes DCM a hard-fail. |
519
519
  | **D3-PA** (Process Analysis) | The watchlist / dispatch / scan log every load and signature-check event so a forensic reader can reconstruct which skill version produced which finding. Without a per-invocation evidence stream, a stale skill body whose timestamp says "current" cannot be detected after the fact. | Layer 5 (Detect — runtime). | Per-invocation — every CLI invocation emits a structured log entry. | Treat every invocation as untrusted until the signature chain is verified at load time; persist the verification result alongside the finding. |
520
520
 
521
- **Defense-in-depth posture:** signature integrity (D3-CA) and snapshot-pinning (D3-EHB) are the hard gates that prevent a tampered skill body from shipping; lint-schema (D3-IOPR) and currency timestamps (D3-FAPA) are the audit gates that catch silent drift inside an intentional release; D3-PA is the per-invocation evidence stream that lets the operator answer "which version of the skill produced this finding" post-hoc. Because the ATLAS / ATT&CK version is pinned, every layer's evidence is keyed off the pinned version — a manifest snapshot taken against ATLAS v5.6.0 is not interchangeable with one taken against a later release.
521
+ **Defense-in-depth posture:** signature integrity (D3-CA) and snapshot-pinning (D3-EHB) are the hard gates that prevent a tampered skill body from shipping; lint-schema (D3-IOPR) and currency timestamps (D3-FAPA) are the audit gates that catch silent drift inside an intentional release; D3-PA is the per-invocation evidence stream that lets the operator answer "which version of the skill produced this finding" post-hoc. Because the ATLAS / ATT&CK version is pinned, every layer's evidence is keyed off the pinned version — a manifest snapshot taken against ATLAS v2026.05 is not interchangeable with one taken against a later release.
@@ -67,7 +67,7 @@ d3fend_refs:
67
67
  - D3-CBAN
68
68
  - D3-EAL
69
69
  - D3-EHB
70
- last_threat_review: "2026-05-15"
70
+ last_threat_review: "2026-06-10"
71
71
  ---
72
72
 
73
73
  # Supply-Chain Integrity Assessment
@@ -142,7 +142,7 @@ The catalog's expansion means a supply-chain assessment that names only NIST 800
142
142
 
143
143
  | ATLAS / ATT&CK ID | Technique | Supply-Chain Relevance | Gap |
144
144
  |---|---|---|---|
145
- | AML.T0010 | ML Supply Chain Compromise | Direct: malicious model, malicious MCP server, malicious ML library — the umbrella attack class for AI artifact compromise | ATLAS v5.6.0 classifies the attack; no framework mandates the cryptographic control that would detect it at load |
145
+ | AML.T0010 | ML Supply Chain Compromise | Direct: malicious model, malicious MCP server, malicious ML library — the umbrella attack class for AI artifact compromise | ATLAS v2026.05 classifies the attack; no framework mandates the cryptographic control that would detect it at load |
146
146
  | AML.T0018 | Backdoor ML Model | Specific: a model weight file with an embedded backdoor (trojaned weights, data poisoning persisted into weights, or executable payload in a code-executing serialization format) is loaded at inference | No framework requires model-weight signature verification; CWE-502 deserialization risk is not mapped to a compliance control |
147
147
  | T1195.001 | Supply Chain Compromise: Compromise Software Dependencies and Development Tools | The XZ Utils class, the typosquat class, the dependency-confusion class — directly addressable by SLSA L3 provenance + in-toto attestation chain | Standard SCA tooling detects known-vulnerable dependencies but does not detect novel compromise of an authentic-looking dependency. SLSA L3 + reproducible builds closes this; not required by any framework |
148
148
  | T1195.002 | Supply Chain Compromise: Compromise Software Supply Chain | Build pipeline compromise (CI runner, build-time toolchain, signing-key compromise). Defense: hardened builder per SLSA L3, key custody in HSM or cloud KMS, ephemeral CI tokens | NIST 800-218 PS practices are process-level. No framework prescribes hardened-builder requirements. |
@@ -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-18"
25
+ last_threat_review: "2026-06-10"
26
26
  discovery_mode: "standalone" # operator-reached via `exceptd brief threat-model-currency` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
27
27
  ---
28
28
 
@@ -199,14 +199,14 @@ This skill produces a currency score and a specific update roadmap. Currency is
199
199
 
200
200
  ---
201
201
 
202
- ### Class 13: MITRE ATLAS v5.6.0 Coverage
202
+ ### Class 13: MITRE ATLAS v2026.05 Coverage
203
203
 
204
- **2026 reality:** MITRE ATLAS (May 2026, v5.6.0) is the primary AI threat framework. Most SOC detection engineering programs are built on ATT&CK, not ATLAS. AI-specific TTPs have zero detection coverage in ATT&CK-only programs.
204
+ **2026 reality:** MITRE ATLAS (May 2026, v2026.05) is the primary AI threat framework. Most SOC detection engineering programs are built on ATT&CK, not ATLAS. AI-specific TTPs have zero detection coverage in ATT&CK-only programs.
205
205
 
206
206
  **Currency check questions:**
207
- - Is MITRE ATLAS v5.6.0 incorporated into the threat model?
207
+ - Is MITRE ATLAS v2026.05 incorporated into the threat model?
208
208
  - Are ATLAS TTPs mapped to detection controls?
209
- - What is the current ATLAS version in use? (Current: 5.6.0, May 2026)
209
+ - What is the current ATLAS version in use? (Current: 2026.05, May 2026)
210
210
 
211
211
  **If unchecked:** AI-specific threat techniques are not covered by the detection architecture. The SOC has no alerts for ATLAS TTPs.
212
212
 
@@ -263,7 +263,7 @@ The recurring failure across all of the above: every framework treats threat mod
263
263
 
264
264
  ## TTP Mapping
265
265
 
266
- The 14-class checklist above *is* the TTP map. Each class is a coverage requirement against the canonical sources of truth: `data/atlas-ttps.json` (MITRE ATLAS v5.6.0) and the ATT&CK techniques referenced in `data/cve-catalog.json`. A current threat model must address — explicitly or by reasoned exclusion — every TTP below.
266
+ The 14-class checklist above *is* the TTP map. Each class is a coverage requirement against the canonical sources of truth: `data/atlas-ttps.json` (MITRE ATLAS v2026.05) and the ATT&CK techniques referenced in `data/cve-catalog.json`. A current threat model must address — explicitly or by reasoned exclusion — every TTP below.
267
267
 
268
268
  | Class | Primary TTP | Catalog source | Gap if absent |
269
269
  |---|---|---|---|
@@ -400,14 +400,14 @@ The skill produces a structured Threat Model Currency Assessment that scores the
400
400
  | 10 | Model Poisoning | 0/1/2 | |
401
401
  | 11 | AI-Speed Reconnaissance | 0/1/2 | |
402
402
  | 12 | AI-Generated Credential Phishing | 0/1/2 | |
403
- | 13 | MITRE ATLAS v5.6.0 Coverage | 0/1/2 | |
403
+ | 13 | MITRE ATLAS v2026.05 Coverage | 0/1/2 | |
404
404
  | 14 | Post-Quantum Adversary Timeline | 0/1/2 | |
405
405
 
406
406
  ### Priority Update Roadmap
407
407
  [Ordered by current exposure risk: specific additions for each gap]
408
408
 
409
409
  ### ATLAS Version Check
410
- Current reference: MITRE ATLAS v5.6.0 (May 2026)
410
+ Current reference: MITRE ATLAS v2026.05 (May 2026)
411
411
  Threat model references: [version cited in document]
412
412
  Gap: [if different]
413
413
  ```
@@ -43,7 +43,7 @@ forward_watch:
43
43
  - Unified Kill Chain successor revision (Pols, post-v3.0)
44
44
  - LINDDUN-GO and LINDDUN-PRO updates incorporating LLM privacy threats
45
45
  - PASTA v2 updates incorporating AI/ML application threats
46
- last_threat_review: "2026-05-11"
46
+ last_threat_review: "2026-06-10"
47
47
  discovery_mode: "standalone" # operator-reached via `exceptd brief threat-modeling-methodology` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
48
48
  ---
49
49
 
@@ -132,7 +132,7 @@ Threat-modelling methodologies are *consumers* of the TTP catalog, not contribut
132
132
  | Cyber Kill Chain | Linear 7-stage intrusion timeline | Per stage: ATT&CK TTPs | Cloud-native / serverless / AI-pipeline scenarios fit the timeline poorly; lateral movement assumptions break in ephemeral compute. |
133
133
  | Diamond Model | Adversary–capability–infrastructure–victim diamond | Per intrusion event: TTPs become adversary capabilities; pivot to other diamonds | Built for IR / SOC, not for design-phase threat modelling — pair with STRIDE/PASTA during design and Diamond during operate phase. |
134
134
  | MITRE Unified Kill Chain (v3.0, 2024) | 18 phases spanning initial access through objectives | Per phase: ATLAS and ATT&CK TTPs assigned to phases that cover both classical and AI-augmented attacks | Most comprehensive single methodology, but weak on privacy threats — pair with LINDDUN. |
135
- | AI-system threat modeling (composite) | Augmented DFD with AI actors and AI trust boundaries | Full ATLAS v5.6.0 catalogue (every `AML.T*` key in `data/atlas-ttps.json`) | Methodology not yet standardised — this skill operationalises it. |
135
+ | AI-system threat modeling (composite) | Augmented DFD with AI actors and AI trust boundaries | Full ATLAS v2026.05 catalogue (every `AML.T*` key in `data/atlas-ttps.json`) | Methodology not yet standardised — this skill operationalises it. |
136
136
  | Agent-based threat modeling | Actor graph with autonomous agents, MCP plugins, tool-call boundaries | CVE-2026-30615 (MCP RCE), CVE-2025-53773 (prompt-injection RCE), AML.T0051, AML.T0096 | Methodology not yet standardised — this skill operationalises it. |
137
137
 
138
138
  The truth set for any composite model is: every `AML.T*` key in `data/atlas-ttps.json`, plus every `attack_refs` entry across every CVE in `data/cve-catalog.json`, plus the CWE root-cause classes in `data/cwe-catalog.json`. A model that does not address each, or document a reasoned exclusion for each, is non-current by construction (and should be re-run through `threat-model-currency`).
@@ -65,7 +65,7 @@ d3fend_refs:
65
65
  - D3-MFA
66
66
  forward_watch:
67
67
  - 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
68
- last_threat_review: "2026-05-11"
68
+ last_threat_review: "2026-06-10"
69
69
  discovery_mode: "standalone" # operator-reached via `exceptd brief webapp-security` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
70
70
  ---
71
71
 
@@ -105,7 +105,7 @@ Webapps still ship CWE-79 (Cross-Site Scripting), CWE-89 (SQL Injection), and CW
105
105
 
106
106
  ---
107
107
 
108
- ## TTP Mapping (MITRE ATT&CK Enterprise + ATLAS v5.6.0)
108
+ ## TTP Mapping (MITRE ATT&CK Enterprise + ATLAS v2026.05)
109
109
 
110
110
  | TTP ID | Technique | Webapp Manifestation | CWE Root-Causes | Framework Coverage |
111
111
  |---|---|---|---|---|
@@ -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-18"
26
+ last_threat_review: "2026-06-10"
27
27
  discovery_mode: "standalone" # operator-reached via `exceptd brief zeroday-gap-learn` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
28
28
  ---
29
29
 
@@ -79,7 +79,7 @@ This skill is meta — it does not pin to a single TTP class. The learning loop
79
79
  | Input Catalog | Role in the Learning Loop |
80
80
  |---|---|
81
81
  | `data/cve-catalog.json` | The CVE-level corpus: each entry is a candidate lesson input. New entries trigger a new loop run. |
82
- | `data/atlas-ttps.json` (MITRE ATLAS v5.6.0) | The AI/ML TTP taxonomy. Attack-vector extraction maps the CVE's mechanism to an ATLAS ID (e.g., AML.T0096 for SesameOp AI-as-C2). |
82
+ | `data/atlas-ttps.json` (MITRE ATLAS v2026.05) | The AI/ML TTP taxonomy. Attack-vector extraction maps the CVE's mechanism to an ATLAS ID (e.g., AML.T0096 for SesameOp AI-as-C2). |
83
83
  | `data/framework-control-gaps.json` | The control-gap corpus. Framework-coverage assessment writes into this file via new entries or `status` updates. |
84
84
  | `data/zeroday-lessons.json` | The output corpus. Each completed loop produces one entry here — the durable artifact of the lesson. |
85
85
 
@@ -369,7 +369,7 @@ Run through each applicable framework:
369
369
  - CIS Controls v8 (which control?)
370
370
  - ASD Essential 8 (which mitigation?)
371
371
  - ISO 27001:2022 (which control?)
372
- - MITRE ATLAS v5.6.0 (which TTP? Is it covered?)
372
+ - MITRE ATLAS v2026.05 (which TTP? Is it covered?)
373
373
 
374
374
  For each: Covered (adequate) / Covered (insufficient) / Missing entirely
375
375
 
@@ -38,6 +38,8 @@ const NVD_API = 'https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=';
38
38
  const KEV_FEED = 'https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json';
39
39
  const EPSS_API = 'https://api.first.org/data/v1/epss?cve=';
40
40
  const REQUEST_TIMEOUT_MS = 10_000;
41
+
42
+ const { selectNvdCvss } = require('../../lib/cvss');
41
43
  const EPSS_DRIFT_THRESHOLD = 0.05; // |Δscore| or |Δpercentile| > 0.05 flags drift
42
44
  const USER_AGENT = 'exceptd-security/cve-validator (+https://exceptd.com)';
43
45
 
@@ -93,22 +95,19 @@ function resetKevCache() {
93
95
  }
94
96
 
95
97
  function extractNvdCvss(nvdJson) {
96
- // NVD response: vulnerabilities[0].cve.metrics.cvssMetricV31[0].cvssData
98
+ // NVD response: vulnerabilities[0].cve.metrics.cvssMetricV3x/V2[].cvssData.
99
+ // Prefer the newest CVSS version present (Primary within it) and normalize a
100
+ // bare v2 vector to its canonical prefix — NVD tags the legacy v2 metric
101
+ // "Primary" on pre-v3 CVEs over a v3.1 "Secondary", so selecting by type
102
+ // alone would report a stale v2 score as the upstream value.
97
103
  const vuln = nvdJson?.vulnerabilities?.[0]?.cve;
98
104
  if (!vuln) return null;
99
- const metrics = vuln.metrics || {};
100
- const ordered = [
101
- ...(metrics.cvssMetricV31 || []),
102
- ...(metrics.cvssMetricV30 || []),
103
- ...(metrics.cvssMetricV2 || []),
104
- ];
105
- // Prefer Primary type if present
106
- const primary = ordered.find(m => m.type === 'Primary') || ordered[0];
107
- if (!primary?.cvssData) return null;
105
+ const up = selectNvdCvss(vuln.metrics);
106
+ if (!up) return null;
108
107
  return {
109
- score: typeof primary.cvssData.baseScore === 'number' ? primary.cvssData.baseScore : null,
110
- vector: primary.cvssData.vectorString || null,
111
- source: primary.source || null,
108
+ score: up.baseScore,
109
+ vector: up.vector,
110
+ source: up.source,
112
111
  };
113
112
  }
114
113