@blamejs/exceptd-skills 0.18.16 → 0.18.18
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/ARCHITECTURE.md +1 -1
- package/CHANGELOG.md +32 -0
- package/data/_indexes/_meta.json +10 -10
- package/data/_indexes/activity-feed.json +3 -3
- package/data/_indexes/catalog-summaries.json +3 -3
- package/data/_indexes/chains.json +11378 -0
- package/data/_indexes/frequency.json +3 -0
- package/data/attack-techniques.json +48 -4
- package/data/cve-catalog.json +2117 -2
- package/data/cwe-catalog.json +105 -1
- package/data/framework-control-gaps.json +120 -4
- package/data/global-frameworks.json +1 -0
- package/data/zeroday-lessons.json +1101 -1
- package/lib/auto-discovery.js +10 -3
- package/lib/collectors/ai-api.js +10 -0
- package/lib/collectors/citation-hygiene.js +46 -4
- package/lib/collectors/cred-stores.js +10 -1
- package/lib/collectors/mcp.js +7 -1
- package/lib/collectors/runtime.js +11 -0
- package/lib/collectors/secrets.js +13 -2
- package/lib/cross-ref-api.js +56 -2
- package/lib/framework-gap.js +22 -1
- package/lib/playbook-runner.js +38 -3
- package/lib/prefetch.js +61 -15
- package/lib/refresh-external.js +16 -2
- package/lib/scoring.js +22 -3
- package/lib/source-ghsa.js +12 -4
- package/lib/source-osv.js +11 -4
- package/manifest.json +53 -53
- package/package.json +2 -2
- package/sbom.cdx.json +65 -65
- package/scripts/check-codebase-patterns.js +11 -0
- package/scripts/check-test-subjects.js +16 -1
- package/scripts/check-version-bump.js +35 -5
- package/sources/validators/cve-validator.js +5 -1
package/ARCHITECTURE.md
CHANGED
|
@@ -176,7 +176,7 @@ Tracks PoC status, weaponization stage, and AI-assist factor per CVE. Updated wh
|
|
|
176
176
|
|
|
177
177
|
### `data/cwe-catalog.json`
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
184 CWE entries pinned to **CWE v4.20**. Covers the Top 25 Most Dangerous Software Weaknesses (2024 release) plus AI- and supply-chain-relevant weakness classes (prompt-injection-as-trust-boundary failure, training data integrity, dependency confusion, untrusted artifact ingestion). Each entry records root-cause description, common consequences, mitigation patterns, and the CVEs in `cve-catalog.json` that instantiate the weakness. Skills cite CWE IDs in `cwe_refs` to anchor a finding to a stable weakness taxonomy rather than to a single CVE; the CWE provides the durable root-cause lens that survives across exploit generations.
|
|
180
180
|
|
|
181
181
|
`_meta.cwe_version` pins the version; on a CWE release, audit IDs for renames or deprecations, bump `last_threat_review` on affected skills, and update `_meta`.
|
|
182
182
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.18.18 — 2026-06-26
|
|
4
|
+
|
|
5
|
+
Twenty CISA-KEV-listed, actively-exploited CVEs are now in the catalog (459 → 479). Each is curated to the full bar: verified NVD CVSS and CWE, MITRE ATT&CK technique mapping, behavioral indicators of compromise, global-first framework-control-gap analysis (NIST 800-53, ISO 27001:2022, EU NIS2, UK CAF, AU Essential Eight), an RWEP score, and a paired zero-day lesson.
|
|
6
|
+
|
|
7
|
+
The additions cover current edge- and enterprise-exploitation activity: the Apple CoreAudio and pointer-authentication-bypass zero-days from the mid-2025 targeted-spyware chain (CVE-2025-31200, CVE-2025-31201); the Windows NTLM hash-disclosure flaw (CVE-2025-24054); the Commvault Command Center and Web Server RCEs (CVE-2025-34028, CVE-2025-3928); the SonicWall SMA100 command injection (CVE-2023-44221); the Apache HTTP Server mod_rewrite output-escaping flaw (CVE-2024-38475); the Yii framework alternate-path RCE (CVE-2024-58136); the Cisco Unified CM SSRF-to-root and Catalyst SD-WAN Manager traversal (CVE-2026-20230, CVE-2026-20262); the Splunk Enterprise missing-authentication RCE (CVE-2026-20253); the Ubiquiti UniFi OS access-control, path-traversal, and command-injection chain behind the azsxd botnet (CVE-2026-34908, CVE-2026-34909, CVE-2026-34910); and the Lantronix EDS5000 OT device-server, Broadcom Brocade Fabric OS, Qualitia Active! Mail, Joomla Content Editor, LiteSpeed cPanel plugin, and PTC Windchill/FlexPLM flaws.
|
|
8
|
+
|
|
9
|
+
## 0.18.17 — 2026-06-24
|
|
10
|
+
|
|
11
|
+
A correctness pass across the upstream-refresh pipeline, the credential and MCP collectors, scoring and framework analysis, attestation hashing, and the release gates.
|
|
12
|
+
|
|
13
|
+
The scheduled data refresh no longer fails on transient upstream throttling. The cache-warm step now separates retryable errors the upstream is asking us to back off on — a rate-limit (HTTP 429), a timeout, a 5xx — from hard data errors like a 404 or a parse failure. Only hard errors count toward the failure budget; transient throttling is surfaced in the run summary and retried on the next run. Previously a burst of NVD rate-limits failed the entire refresh and skipped the automated update PR. A feed that returns nothing at all still fails. The exported `prefetch()` API also honors `EXCEPTD_AIR_GAP=1` now, so a programmatic call from an air-gapped host no longer reaches the network.
|
|
14
|
+
|
|
15
|
+
Cleartext-credential detection covers more of what it claims. An Azure, Google, or Cohere API key found in a shell dotfile now surfaces as a confirmed finding instead of being downgraded to inconclusive. An AWS profile that carries a static access key alongside a `role_arn` — the assume-role bootstrap shape — is flagged as a static-key exposure rather than treated as fully federated. On Windows, the POSIX-permission posture checks (world-writable env files, SSH key modes) report inconclusive rather than a false "clean" for a check that cannot run there.
|
|
16
|
+
|
|
17
|
+
MCP integrity detection catches single-token launch commands. A server started with a whole pip invocation in one argument — `sh -c "pip install pkg==1.2.3"` — is now flagged as pinned-without-integrity; previously only the split-argument form was caught.
|
|
18
|
+
|
|
19
|
+
"Rejected or disputed CVE" citations no longer false-positive. The check fired on any note that mentioned a dispute — including a CVSS *scoring* dispute, a disclosure-coordination dispute, or a different CVE the note merely referenced. It now fires only when the cited CVE's own record is rejected or disputed, and no longer attaches a false attestation that suppressed the downgrade for a valid, often actively-exploited citation.
|
|
20
|
+
|
|
21
|
+
The runtime collector's `collect | run` pipe reaches analysis. The collector now attests the read-only-inventory precondition the runner cannot resolve mechanically, so `collect runtime | run runtime` no longer halts at preflight despite valid evidence.
|
|
22
|
+
|
|
23
|
+
The RWEP-vs-CVSS explanation lists every factor it counts. Suspected and unknown active-exploitation (contributing +10 and +5) and the blast-radius contribution were omitted from the "driving factors" sentence, so a divergence driven by them showed a higher score with an understated — sometimes empty — reason. Both the driving and mitigating sides now enumerate the real contributions and name the structural cause when no single factor dominates.
|
|
24
|
+
|
|
25
|
+
Framework gap analysis resolves frameworks whose catalog label differs from their formal name. The Australian Government ISM — and any framework in the same situation — reported zero control gaps and null metadata because its catalog labels did not match its registered name; a data-driven alias map now resolves both, and a framework that resolves to zero gaps is flagged instead of silently empty.
|
|
26
|
+
|
|
27
|
+
EPSS and NVD scores are matched to the requested CVE by id. The cache-diff and KEV auto-import paths fell back to the first row or record in a payload, which could attribute one CVE's EPSS or CVSS to another when a cache entry held a different CVE's response. They now match by id and skip on a mismatch.
|
|
28
|
+
|
|
29
|
+
Attestation and reattestation no longer report false drift from a relabeled observation. The evidence hash, and the deterministic session id derived from it, re-key evidence by the stable indicator it targets, so identical evidence submitted under a different observation label produces the same hash; a changed evidence value still changes it.
|
|
30
|
+
|
|
31
|
+
The GHSA and OSV regression watch stops flagging editorial fields. Curated-only fields — AI-discovery, PoC availability, active-exploitation — were treated as upstream-sourced and flagged as "dropped" on every re-import; the watch now covers only fields the feed actually populates, and the diff summary counts new entries and field regressions separately rather than labeling both as new.
|
|
32
|
+
|
|
33
|
+
Release gates fail closed on absent input. The version-cadence, test-subject, and code-pattern checks each had a path that passed without checking anything — an unreadable changelog, an empty playbook or module set, an empty scan universe. Each now fails rather than reporting clean when it has nothing to check.
|
|
34
|
+
|
|
3
35
|
## 0.18.16 — 2026-06-22
|
|
4
36
|
|
|
5
37
|
A correctness pass on the evidence-output and attestation surfaces.
|
package/data/_indexes/_meta.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.1.0",
|
|
3
|
-
"generated_at": "2026-06-
|
|
3
|
+
"generated_at": "2026-06-27T01:18:25.795Z",
|
|
4
4
|
"generator": "scripts/build-indexes.js",
|
|
5
5
|
"source_count": 64,
|
|
6
6
|
"source_hashes": {
|
|
7
|
-
"manifest.json": "
|
|
7
|
+
"manifest.json": "bc640c35c7a0edd249a986c657c816ce2aec5cbc52b237d59f64cbc7e3dfd8d6",
|
|
8
8
|
"README.md": "e7b854e7db9a364a1b368b5084b4f0c2a8282f0459ce39800ac1d1dabdc06074",
|
|
9
9
|
"data/atlas-ttps.json": "5bc59e23d6c2defa54168de161a0825299b9cc4a49c6b26df2dae70b4f42eedf",
|
|
10
|
-
"data/attack-techniques.json": "
|
|
11
|
-
"data/cve-catalog.json": "
|
|
12
|
-
"data/cwe-catalog.json": "
|
|
10
|
+
"data/attack-techniques.json": "35db05bc62be7a2db3d87bac4be67cbed3a9828779ff24e08cec8d43cc07feac",
|
|
11
|
+
"data/cve-catalog.json": "42d66a59039b964e6ed1b2c8d589de570901ff013e92d77a4e0804339b606ff6",
|
|
12
|
+
"data/cwe-catalog.json": "30a3b08ccf35d68554a480675151aa101ac7956ec018aa987926871754905be7",
|
|
13
13
|
"data/d3fend-catalog.json": "b5c1e83d216ba8ece6be1368d807d1636f3d77622fd4e9148e9ba2f5fd44ee0d",
|
|
14
14
|
"data/dlp-controls.json": "d2406c482dddd30e49203879999dc4b3a7fd4d0494d6a61d86b91ee76415df19",
|
|
15
15
|
"data/exploit-availability.json": "ec2656f0d9a893610e27b43eb6035fe9b18e057c9f6dfaac7e7d4959bbcbb795",
|
|
16
|
-
"data/framework-control-gaps.json": "
|
|
17
|
-
"data/global-frameworks.json": "
|
|
16
|
+
"data/framework-control-gaps.json": "98715e3b7172b378064a0168349beb6104fd43ec55278e7611be69a3b4989271",
|
|
17
|
+
"data/global-frameworks.json": "20b18a851b3ab82e57cd159b49476d69fe544f02523398b2015189ab81c7c3f8",
|
|
18
18
|
"data/rfc-references.json": "5db2f7006a1d7f2b8642a3e393213394e92798604576df973d0a0b8550f4b5ac",
|
|
19
|
-
"data/zeroday-lessons.json": "
|
|
19
|
+
"data/zeroday-lessons.json": "7ece7fa98582658713dc88b24fb9fc65d72148adfae7238b31e9356f1be9e711",
|
|
20
20
|
"skills/kernel-lpe-triage/skill.md": "0f79c641cef6e5f4a942eb94f43c460562bf83dfb67ae112d146c39c6b320fb0",
|
|
21
21
|
"skills/ai-attack-surface/skill.md": "6eefa7772f1faf9c8ed971f2a827cd48398a12ab3b691b258c7c8364a5deb39c",
|
|
22
22
|
"skills/mcp-agent-trust/skill.md": "bda6842bfa3b8bfd5edb3ef37751c493ff32a3ca80f771c3d988ede4176f0803",
|
|
@@ -101,8 +101,8 @@
|
|
|
101
101
|
"dlp_refs": 0
|
|
102
102
|
},
|
|
103
103
|
"trigger_table_entries": 688,
|
|
104
|
-
"chains_cve_entries":
|
|
105
|
-
"chains_cwe_entries":
|
|
104
|
+
"chains_cve_entries": 466,
|
|
105
|
+
"chains_cwe_entries": 184,
|
|
106
106
|
"jurisdictions_indexed": 34,
|
|
107
107
|
"handoff_dag_nodes": 51,
|
|
108
108
|
"summary_cards": 51,
|
|
@@ -314,7 +314,7 @@
|
|
|
314
314
|
"artifact": "data/cve-catalog.json",
|
|
315
315
|
"path": "data/cve-catalog.json",
|
|
316
316
|
"schema_version": "1.0.0",
|
|
317
|
-
"entry_count":
|
|
317
|
+
"entry_count": 479
|
|
318
318
|
},
|
|
319
319
|
{
|
|
320
320
|
"date": "2026-06-01",
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"artifact": "data/cwe-catalog.json",
|
|
323
323
|
"path": "data/cwe-catalog.json",
|
|
324
324
|
"schema_version": "1.0.0",
|
|
325
|
-
"entry_count":
|
|
325
|
+
"entry_count": 184
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
328
|
"date": "2026-06-01",
|
|
@@ -330,7 +330,7 @@
|
|
|
330
330
|
"artifact": "data/zeroday-lessons.json",
|
|
331
331
|
"path": "data/zeroday-lessons.json",
|
|
332
332
|
"schema_version": "1.1.0",
|
|
333
|
-
"entry_count":
|
|
333
|
+
"entry_count": 479
|
|
334
334
|
},
|
|
335
335
|
{
|
|
336
336
|
"date": "2026-05-27",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"rebuild_after_days": 365,
|
|
63
63
|
"note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
|
|
64
64
|
},
|
|
65
|
-
"entry_count":
|
|
65
|
+
"entry_count": 479,
|
|
66
66
|
"sample_keys": [
|
|
67
67
|
"CVE-2022-23812",
|
|
68
68
|
"MAL-2026-TRAPDOOR-CROSS-ECOSYSTEM",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"rebuild_after_days": 365,
|
|
85
85
|
"note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
|
|
86
86
|
},
|
|
87
|
-
"entry_count":
|
|
87
|
+
"entry_count": 184,
|
|
88
88
|
"sample_keys": [
|
|
89
89
|
"CWE-20",
|
|
90
90
|
"CWE-22",
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
"rebuild_after_days": 365,
|
|
239
239
|
"note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
|
|
240
240
|
},
|
|
241
|
-
"entry_count":
|
|
241
|
+
"entry_count": 479,
|
|
242
242
|
"sample_keys": [
|
|
243
243
|
"CVE-2026-31431",
|
|
244
244
|
"CVE-2025-53773",
|