@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
|
@@ -477,7 +477,7 @@
|
|
|
477
477
|
"monitor": 50,
|
|
478
478
|
"close": 30
|
|
479
479
|
},
|
|
480
|
-
"framework_lag_declaration": "NIST 800-53 SR-3/4/5, NIST 800-218 SSDF PS.3.2 / PW.4 / RV.2, ISO 27001:2022 A.8.30 / A.5.20, SOC 2 CC8.1 / CC9.2, NIS2 Art.21(2)(d), DORA Art.28,
|
|
480
|
+
"framework_lag_declaration": "NIST 800-53 SR-3/4/5, NIST 800-218 SSDF PS.3.2 / PW.4 / RV.2, ISO 27001:2022 A.8.30 / A.5.20, SOC 2 CC8.1 / CC9.2, NIS2 Art.21(2)(d), DORA Art.28, and CMMC SI.L2-3.4.4 all permit publisher posture that omits (a) OIDC-based publish, (b) Sigstore / Rekor transparency-log entries per release, (c) signed + distributed SBOM, (d) transitive completeness, (e) VEX feed for filed CVEs, (f) coordinated-disclosure intake at /.well-known/security.txt, (g) tag-protection on release refs, (h) reproducible builds, (i) skill / plugin signature verification gated in the install path. Operational tooling for (a)-(i) shipped 2023-2025; framework lag = ~540 days behind tooling and ~18 months ahead of EU CRA Art.10/13/14 binding (2027). UK CAF C1.b (Identity and Access Management — Privileged user management) is designed to govern human privileged users and does not require SLSA L3+ provenance attestation on every release artifact; the gap is that a compromised publisher token (no human-MFA gate, no provenance attestation) yields an attacker-signed release that passes C1.b's evidence surface. AU Essential 8 Strategy 5 (Restrict Admin Privileges, E8 M.5) is designed for runtime admin-account scoping and does not reach build-time admin privileges on signing-key material: a CI runner holding the publish credential is a build-time admin that E8 M.5 evidence does not enumerate. Compensating controls MUST close (a)-(i) before SSDF-only compliance can be accepted as CRA-readiness.",
|
|
481
481
|
"skill_chain": [
|
|
482
482
|
{
|
|
483
483
|
"skill": "supply-chain-integrity",
|
|
@@ -224,6 +224,30 @@
|
|
|
224
224
|
"control_id": "B3 — Data security",
|
|
225
225
|
"designed_for": "NCSC CAF outcome that data important to the essential function is protected from compromise, including credential and key material.",
|
|
226
226
|
"insufficient_because": "Outcome can be assessed against managed secret-store contents. Plaintext credentials leaked into source-code repositories, CI logs, IaC files, and AI assistant context windows do not register on the outcome's evidence surface."
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"framework": "au-essential-8",
|
|
230
|
+
"control_id": "Strategy 4 — Multi-factor authentication (E8 M.4)",
|
|
231
|
+
"designed_for": "MFA on privileged + internet-facing accounts.",
|
|
232
|
+
"insufficient_because": "MFA defends the interactive auth flow; bearer tokens / API keys / OAuth refresh tokens committed to source artifacts bypass MFA entirely — scraper-bot exploitation against cloud-provider APIs uses the static credential and never reaches an interactive auth surface. Compliance-theater test: audit the last 90 days of admin actions and count those executed by service-account tokens vs human-MFA sessions; if service tokens dominate, Strategy 4 compliance is paper."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"framework": "au-essential-8",
|
|
236
|
+
"control_id": "Strategy 1 — Application Control (E8 M.1)",
|
|
237
|
+
"designed_for": "Execution allowlisting on workstations and servers.",
|
|
238
|
+
"insufficient_because": "Application Control governs runtime execution but does not constrain build agents reading from arbitrary secret stores or environment variables at build time — CI runners with broad env-var access defeat the intent. Compliance-theater test: inventory CI runner environment variables; any token-shaped string (regex /[A-Za-z0-9]{32,}/) means ML2 compliance leaks at build time."
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"framework": "au-ism",
|
|
242
|
+
"control_id": "ISM-1546",
|
|
243
|
+
"designed_for": "Multi-factor authentication for privileged users and remote access.",
|
|
244
|
+
"insufficient_because": "ISM-1546 covers human authentication; CI/CD service identities (which now hold the actual privileges) are out of scope. Stolen GitHub Actions OIDC tokens grant identical blast radius without ever crossing the human-MFA gate. Compliance-theater test: list CI runner OIDC token TTLs and audience scopes; any token with TTL > 1h or wildcard audience defeats ISM-1546's intent."
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"framework": "au-ism",
|
|
248
|
+
"control_id": "ISM-1559",
|
|
249
|
+
"designed_for": "Privileged account credential management.",
|
|
250
|
+
"insufficient_because": "ISM-1559 names key/credential storage but treats source-code-embedded credentials as a policy violation, not a detection control. Modern exfiltration reads credentials post-decryption from /proc, container layers, or build artifacts. Compliance-theater test: run a process listing inside one production container and grep env for tokens; any hit means storage encryption was bypassed at the runtime boundary."
|
|
227
251
|
}
|
|
228
252
|
]
|
|
229
253
|
},
|
|
@@ -241,7 +265,7 @@
|
|
|
241
265
|
"monitor": 60,
|
|
242
266
|
"close": 30
|
|
243
267
|
},
|
|
244
|
-
"framework_lag_declaration": "GDPR Art.32, ISO A.8.24, PCI-DSS Req.3, SOC 2 CC6.1 collectively cover encryption + key management + access control in production storage backends. None of them name 'secret in source artifact' as a distinct exposure category, despite this being the dominant 2025-2026 cloud-compromise vector. NIS2 Art.21(2)(j) names cryptography but not development-workflow exposure. Gap = ~30 days between developer commit and framework's quarterly access-review cadence; in practice, scraper bots exploit faster than any framework cadence. UK CAF Principle B2 (Identity and Access Control) treats credential lifecycle as an outcome reviewable on cycle, not as a per-commit scanning obligation — secrets embedded in source artifacts do not register against B2 evidence. AU Essential 8
|
|
268
|
+
"framework_lag_declaration": "GDPR Art.32, ISO A.8.24, PCI-DSS Req.3, SOC 2 CC6.1 collectively cover encryption + key management + access control in production storage backends. None of them name 'secret in source artifact' as a distinct exposure category, despite this being the dominant 2025-2026 cloud-compromise vector. NIST 800-53 IA-5 (Authenticator Management) lags because it mandates authenticator protection in storage but does not require detection of authenticators committed to source repositories or build artifacts — IA-5 evidence is satisfied by a vault inventory while bearer tokens leak through `.env`, IaC tfvars, and CI logs unscanned. NIS2 Art.21(2)(j) names cryptography but not development-workflow exposure. Gap = ~30 days between developer commit and framework's quarterly access-review cadence; in practice, scraper bots exploit faster than any framework cadence. UK CAF Principle B2 (Identity and Access Control) treats credential lifecycle as an outcome reviewable on cycle, not as a per-commit scanning obligation — secrets embedded in source artifacts do not register against B2 evidence. AU Essential 8 Strategy 1 (Application Control, E8 M.1) is the relevant lever — restricting build agents from accessing arbitrary secret stores or environment variables at build time — but Essential 8 evidence does not enumerate CI-runner secret-store reachability as a sub-control; ISM-1546 covers MFA + admin-account hygiene but bearer tokens / API keys / OAuth refresh tokens in source artifacts bypass MFA entirely, never crossing the interactive auth surface ISM-1546 protects.",
|
|
245
269
|
"skill_chain": [
|
|
246
270
|
{
|
|
247
271
|
"skill": "dlp-gap-analysis",
|
package/data/rfc-references.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_meta": {
|
|
3
3
|
"schema_version": "1.0.0",
|
|
4
|
-
"last_updated": "2026-05-
|
|
4
|
+
"last_updated": "2026-05-15",
|
|
5
5
|
"note": "IETF RFCs and Internet-Drafts that exceptd skills depend on. RFCs are the layer beneath compliance frameworks: a control like 'TLS 1.3 required' implicitly references RFC 8446; a 'use strong KEM' control depends on whatever draft-ietf-tls-ecdhe-mlkem settles into. Frameworks lag RFCs; RFCs lag attacker innovation. This catalog tracks both kinds of lag.",
|
|
6
6
|
"status_values": [
|
|
7
7
|
"Internet Standard",
|
|
@@ -161,6 +161,19 @@
|
|
|
161
161
|
],
|
|
162
162
|
"last_verified": "2026-05-11"
|
|
163
163
|
},
|
|
164
|
+
"RFC-7644": {
|
|
165
|
+
"number": 7644,
|
|
166
|
+
"title": "System for Cross-domain Identity Management (SCIM) 2.0: Protocol",
|
|
167
|
+
"status": "Proposed Standard",
|
|
168
|
+
"published": "2015-09",
|
|
169
|
+
"tracker": "https://www.rfc-editor.org/info/rfc7644",
|
|
170
|
+
"relevance": "SCIM 2.0 is the dominant standard for federated identity-store synchronisation between IdPs and downstream applications (Okta, Entra ID, Workday → SaaS). Operator-facing: SCIM endpoints are a recurring credential-store soft target — bearer-token misconfigurations expose full directory enumeration + write access. AI-agent contexts add a new class: agent-identity provisioning at scale via SCIM, where over-broad attribute filters expose human identity data to agent-tenants. Pair with RFC 7643 (SCIM Schema) when implementing.",
|
|
171
|
+
"skills_referencing": [
|
|
172
|
+
"identity-assurance",
|
|
173
|
+
"cred-stores"
|
|
174
|
+
],
|
|
175
|
+
"last_verified": "2026-05-15"
|
|
176
|
+
},
|
|
164
177
|
"RFC-7970": {
|
|
165
178
|
"number": 7970,
|
|
166
179
|
"title": "The Incident Object Description Exchange Format Version 2",
|
|
@@ -217,6 +230,18 @@
|
|
|
217
230
|
],
|
|
218
231
|
"last_verified": "2026-05-11"
|
|
219
232
|
},
|
|
233
|
+
"RFC-8460": {
|
|
234
|
+
"number": 8460,
|
|
235
|
+
"title": "SMTP TLS Reporting (TLSRPT)",
|
|
236
|
+
"status": "Proposed Standard",
|
|
237
|
+
"published": "2018-09",
|
|
238
|
+
"tracker": "https://www.rfc-editor.org/info/rfc8460",
|
|
239
|
+
"relevance": "Defines a DNS-published TLSRPT policy and an aggregate-reporting mechanism (RUA endpoint) where receiving MTAs report success / failure of inbound TLS negotiation. Operator-facing: TLSRPT is the monitoring half of the MTA-STS pair (RFC 8461) — without it, an MTA-STS `enforce` policy silently degrades when downgrade attempts occur or receiver-side TLS configurations break. Phishing-defense relevance is indirect but load-bearing: visibility into STARTTLS-stripping attempts is otherwise absent.",
|
|
240
|
+
"skills_referencing": [
|
|
241
|
+
"email-security-anti-phishing"
|
|
242
|
+
],
|
|
243
|
+
"last_verified": "2026-05-15"
|
|
244
|
+
},
|
|
220
245
|
"RFC-8461": {
|
|
221
246
|
"number": 8461,
|
|
222
247
|
"title": "SMTP MTA Strict Transport Security (MTA-STS)",
|
|
@@ -241,6 +266,31 @@
|
|
|
241
266
|
],
|
|
242
267
|
"last_verified": "2026-05-13"
|
|
243
268
|
},
|
|
269
|
+
"RFC-8617": {
|
|
270
|
+
"number": 8617,
|
|
271
|
+
"title": "The Authenticated Received Chain (ARC) Protocol",
|
|
272
|
+
"status": "Experimental",
|
|
273
|
+
"published": "2019-07",
|
|
274
|
+
"tracker": "https://www.rfc-editor.org/info/rfc8617",
|
|
275
|
+
"relevance": "ARC preserves authentication results across legitimate forwarding paths (mailing lists, alias services) where SPF + DKIM alignment would otherwise break, producing false DMARC failures. Operator-facing: ARC is the load-bearing complement to DMARC for organisations that receive mail via forwarders — anti-phishing programs that publish `p=reject` without an ARC strategy face increased false-positive bounce rates that pressure operators to relax DMARC. The skill-update-loop tracks ARC adoption signals as a forward-watch indicator for email-authentication posture changes.",
|
|
276
|
+
"skills_referencing": [
|
|
277
|
+
"email-security-anti-phishing",
|
|
278
|
+
"skill-update-loop"
|
|
279
|
+
],
|
|
280
|
+
"last_verified": "2026-05-15"
|
|
281
|
+
},
|
|
282
|
+
"RFC-8705": {
|
|
283
|
+
"number": 8705,
|
|
284
|
+
"title": "OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens",
|
|
285
|
+
"status": "Proposed Standard",
|
|
286
|
+
"published": "2020-02",
|
|
287
|
+
"tracker": "https://www.rfc-editor.org/info/rfc8705",
|
|
288
|
+
"relevance": "Defines two mechanisms: mTLS client authentication to OAuth authorisation servers, and certificate-bound access tokens that prevent token theft from being exploitable without the original mTLS client certificate. Operator-facing: mTLS-bound tokens are the canonical mitigation for bearer-token theft in high-assurance contexts (open-banking under PSD2 / UK FCA SCA-RTS, FAPI 2.0, government SSO). DPoP (RFC 9449) is the lighter-weight alternative for browser / mobile contexts where client TLS certificates are impractical.",
|
|
289
|
+
"skills_referencing": [
|
|
290
|
+
"identity-assurance"
|
|
291
|
+
],
|
|
292
|
+
"last_verified": "2026-05-15"
|
|
293
|
+
},
|
|
244
294
|
"RFC-8725": {
|
|
245
295
|
"number": 8725,
|
|
246
296
|
"title": "JSON Web Token Best Current Practices",
|
|
@@ -285,6 +335,22 @@
|
|
|
285
335
|
],
|
|
286
336
|
"last_verified": "2026-05-11"
|
|
287
337
|
},
|
|
338
|
+
"RFC-9112": {
|
|
339
|
+
"number": 9112,
|
|
340
|
+
"title": "HTTP/1.1",
|
|
341
|
+
"status": "Internet Standard",
|
|
342
|
+
"published": "2022-06",
|
|
343
|
+
"std_number": 99,
|
|
344
|
+
"tracker": "https://www.rfc-editor.org/info/rfc9112",
|
|
345
|
+
"relevance": "The current authoritative HTTP/1.1 specification, supersedes RFC 7230. Operator-facing: every HTTP/1.1 deployment — including MCP server transports, AI-API client libraries, and legacy webapp middle-tiers — should reference RFC 9112 rather than the older RFC 7230. Re-specification clarified request/response framing in ways that affect smuggling-class attack surfaces (CL.TE / TE.CL / CL.CL desync) which remain the dominant HTTP/1.1 vulnerability class.",
|
|
346
|
+
"lag_notes": "Supersedes RFC 7230. Many security-tool rulesets still cite the obsolete number; check any control mapping that references 'RFC 7230' as the HTTP/1.1 authority and update to 9112.",
|
|
347
|
+
"skills_referencing": [
|
|
348
|
+
"api-security",
|
|
349
|
+
"webapp-security",
|
|
350
|
+
"mcp-agent-trust"
|
|
351
|
+
],
|
|
352
|
+
"last_verified": "2026-05-15"
|
|
353
|
+
},
|
|
288
354
|
"RFC-9114": {
|
|
289
355
|
"number": 9114,
|
|
290
356
|
"title": "HTTP/3",
|
|
@@ -361,6 +427,19 @@
|
|
|
361
427
|
],
|
|
362
428
|
"last_verified": "2026-05-11"
|
|
363
429
|
},
|
|
430
|
+
"RFC-9449": {
|
|
431
|
+
"number": 9449,
|
|
432
|
+
"title": "OAuth 2.0 Demonstrating Proof of Possession (DPoP)",
|
|
433
|
+
"status": "Proposed Standard",
|
|
434
|
+
"published": "2023-09",
|
|
435
|
+
"tracker": "https://www.rfc-editor.org/info/rfc9449",
|
|
436
|
+
"relevance": "DPoP binds OAuth access + refresh tokens to a client-held key pair via per-request JWTs, defending against bearer-token theft in contexts where mTLS (RFC 8705) is impractical (single-page apps, mobile apps, AI-agent runtimes lacking client-certificate infrastructure). Operator-facing: DPoP is the recommended sender-constraint for FAPI 2.0 + MCP server-to-client OAuth flows where the client cannot present a TLS client certificate. Pairs with RFC 9700 (OAuth 2.0 Security BCP) recommendations.",
|
|
437
|
+
"skills_referencing": [
|
|
438
|
+
"identity-assurance",
|
|
439
|
+
"api-security"
|
|
440
|
+
],
|
|
441
|
+
"last_verified": "2026-05-15"
|
|
442
|
+
},
|
|
364
443
|
"RFC-9458": {
|
|
365
444
|
"number": 9458,
|
|
366
445
|
"title": "Oblivious HTTP",
|
|
@@ -375,6 +454,19 @@
|
|
|
375
454
|
],
|
|
376
455
|
"last_verified": "2026-05-11"
|
|
377
456
|
},
|
|
457
|
+
"RFC-9622": {
|
|
458
|
+
"number": 9622,
|
|
459
|
+
"title": "An Architecture for Transport Services",
|
|
460
|
+
"status": "Proposed Standard",
|
|
461
|
+
"published": "2024-08",
|
|
462
|
+
"tracker": "https://www.rfc-editor.org/info/rfc9622",
|
|
463
|
+
"relevance": "Transport Services (TAPS) architecture — abstracts the choice of underlying transport (TCP, QUIC, SCTP) behind a unified API that selects the protocol at runtime based on path conditions. Forward-watch relevance: webapp / AI-API client libraries that adopt TAPS may transparently shift between TCP-HTTP/2 and QUIC-HTTP/3 mid-session, complicating boundary inspection assumptions that pin to a single transport. Currently tracked as a deployment-watch item rather than an operational control point.",
|
|
464
|
+
"lag_notes": "Architecture document; companion documents (TAPS implementation, TAPS programming interface) are still in progress at IETF TAPS WG. Enterprise tooling impact is forward-looking.",
|
|
465
|
+
"skills_referencing": [
|
|
466
|
+
"webapp-security"
|
|
467
|
+
],
|
|
468
|
+
"last_verified": "2026-05-15"
|
|
469
|
+
},
|
|
378
470
|
"RFC-9700": {
|
|
379
471
|
"number": 9700,
|
|
380
472
|
"title": "Best Current Practice for OAuth 2.0 Security",
|