@blamejs/exceptd-skills 0.15.52 → 0.15.53
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/CHANGELOG.md +6 -0
- package/data/_indexes/_meta.json +3 -3
- package/data/cve-catalog.json +91 -8
- package/lib/citation-resolve.js +23 -1
- package/lib/schemas/cve-catalog.schema.json +23 -0
- package/lib/scoring.js +33 -0
- package/manifest.json +44 -44
- package/package.json +1 -1
- package/sbom.cdx.json +20 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.15.53 — 2026-05-30
|
|
4
|
+
|
|
5
|
+
Catalog: package-class entries can now carry an optional package-confidence signal — a 0–100 supply-chain trustworthiness score with inverse polarity to RWEP (high = trustworthy provenance, low = behaves like malware), derived from maintainer, code-quality, behavioral, and provenance sub-signals. It is surfaced alongside RWEP and never feeds or replaces it: RWEP answers "how urgently must I act on this known vulnerability," while package-confidence answers "how much do I trust this package's provenance." Populated on the supply-chain malware entries (the MOIKA dependency-confusion campaign, TrapDoor, Shai-Hulud, the node-ipc credential-stealer, and the node-ipc protestware incident).
|
|
6
|
+
|
|
7
|
+
The Shai-Hulud worm entry now also covers the PyTorch Lightning PyPI compromise (CVE-2026-44484 / `lightning` 2.6.2–2.6.3) as the PyPI side of the same Mini Shai-Hulud wave, with its Bun-runtime infostealer indicators and disclosure sources.
|
|
8
|
+
|
|
3
9
|
## 0.15.52 — 2026-05-30
|
|
4
10
|
|
|
5
11
|
Supply-chain playbook: three new detection-depth checks. Typosquat / homoglyph detection flags a direct dependency whose name impersonates a popular package by edit-distance or a visually-confusable Unicode substitution (reusing the Trojan-Source codepoint tables) — a lure signal that precedes any payload. A static content red-flag screen flags packages that ship only minified/obfuscated source, carry a high ratio of high-entropy strings, are a trivial shell that nonetheless runs an install script or opens the network, or combine dynamic `eval` with dynamic `require` (CWE/ATT&CK T1027) — orthogonal to the capability screens. A dependency-confusion resolution check flags an internal-looking package name served from the public registry, or an inflated-version public squat that wins resolution over the private package — the resolution-source signature that precedes execution, correlated to the MOIKA campaign. Each ships with a paired evidence artifact and false-positive profile.
|
package/data/_indexes/_meta.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.1.0",
|
|
3
|
-
"generated_at": "2026-05-
|
|
3
|
+
"generated_at": "2026-05-31T05:03:02.966Z",
|
|
4
4
|
"generator": "scripts/build-indexes.js",
|
|
5
5
|
"source_count": 54,
|
|
6
6
|
"source_hashes": {
|
|
7
|
-
"manifest.json": "
|
|
7
|
+
"manifest.json": "4359446f2ab6bfb0484b716ca15b81755ca4075d941b0c8caa5d2d4ad1c4f0a7",
|
|
8
8
|
"data/atlas-ttps.json": "878b4a08bb73c8d20396d85cf433a88f2bc5e7a8cbf7f6ab773ce7ede0a11251",
|
|
9
9
|
"data/attack-techniques.json": "318bf8e9c5aee1d0a4a1dc37c4b211f2fbc937bf332a401a22483cc7d0547252",
|
|
10
|
-
"data/cve-catalog.json": "
|
|
10
|
+
"data/cve-catalog.json": "1aac7e75eae24ece2ef09d1c63977bdd7a1f81a9f11609ebb966109be316426c",
|
|
11
11
|
"data/cwe-catalog.json": "b0e4d8f90b655b2b35b1e91c682ee66f2aa51ae5d38efb14f0e1b77f75ec5f7b",
|
|
12
12
|
"data/d3fend-catalog.json": "9a54bccb9f24f84b32024216cc3f53819a053721ac8ab43c326859e68fc0ffaf",
|
|
13
13
|
"data/dlp-controls.json": "d2406c482dddd30e49203879999dc4b3a7fd4d0494d6a61d86b91ee76415df19",
|
package/data/cve-catalog.json
CHANGED
|
@@ -200,7 +200,20 @@
|
|
|
200
200
|
"remediation_status": "patched_upstream",
|
|
201
201
|
"remediation_note": "node-ipc 10.1.3 removed the destructive payload (2022-03-08). The 11.0.0+ peacenotwar protestware remained per NVD scoping. Novel defended class for this catalog: trusted-maintainer protestware / sabotage of a high-reach dependency (the catalog previously had account-takeover and typosquat supply-chain classes, not insider-maintainer sabotage).",
|
|
202
202
|
"remediation_status_verified_at": "2026-05-30",
|
|
203
|
-
"_editorial_note": "CVE-2022-23812 intake: first trusted-maintainer-protestware/sabotage entry in the catalog. Distinct from MAL-2026-NODE-IPC-STEALER (account-recovery takeover, credential-stealer): this is the original maintainer authoring a geo-targeted destructive payload. Paired zeroday-lesson generates NEW-CTRL-114 (main-module-payload detection — the --ignore-scripts blind spot)."
|
|
203
|
+
"_editorial_note": "CVE-2022-23812 intake: first trusted-maintainer-protestware/sabotage entry in the catalog. Distinct from MAL-2026-NODE-IPC-STEALER (account-recovery takeover, credential-stealer): this is the original maintainer authoring a geo-targeted destructive payload. Paired zeroday-lesson generates NEW-CTRL-114 (main-module-payload detection — the --ignore-scripts blind spot).",
|
|
204
|
+
"package_confidence": {
|
|
205
|
+
"score": 31,
|
|
206
|
+
"polarity": "trust",
|
|
207
|
+
"inputs": {
|
|
208
|
+
"maintainer": 25,
|
|
209
|
+
"quality": 60,
|
|
210
|
+
"behavioral": 10,
|
|
211
|
+
"provenance": 30
|
|
212
|
+
},
|
|
213
|
+
"rationale": "node-ipc was a genuine, high-quality, high-reach package (quality high) but the TRUSTED maintainer authored a geo-targeted destructive payload (behavioral collapse); maintainer-intent is the risk, not a takeover. Provenance existed pre-incident.",
|
|
214
|
+
"method": "supplementary-supply-chain-trust (equal-weight mean of present sub-signals; never feeds RWEP)",
|
|
215
|
+
"as_of": "2026-05-30"
|
|
216
|
+
}
|
|
204
217
|
},
|
|
205
218
|
"MAL-2026-TRAPDOOR-CROSS-ECOSYSTEM": {
|
|
206
219
|
"name": "TrapDoor cross-ecosystem crypto-stealer + AI-assistant poisoning campaign (npm/PyPI/crates.io)",
|
|
@@ -364,7 +377,20 @@
|
|
|
364
377
|
"npm: 19 lure packages across the campaign (10 in the GHSA-7r6r-hqg7-f6mq anchor cluster, by maintainer ddjidd5640, published 2026-05-19..21) — all published versions of the named packages are malicious (e.g. eth-wallet-sentinel@2.1.2, SHA-256 in OSV MAL-2026-4207)",
|
|
365
378
|
"PyPI: cryptowallet-safety / defi-risk-scanner / eth-security-auditor (earliest eth-security-auditor@0.1.0, 2026-05-22) — all published versions malicious (OSV MAL-2026-4259/4260/4261)",
|
|
366
379
|
"crates.io: move-* / sui-* build-helper packages — all published versions malicious; no OSV MAL-* assigned as of 2026-05-30 (UNVERIFIED pending OSV coverage)"
|
|
367
|
-
]
|
|
380
|
+
],
|
|
381
|
+
"package_confidence": {
|
|
382
|
+
"score": 6,
|
|
383
|
+
"polarity": "trust",
|
|
384
|
+
"inputs": {
|
|
385
|
+
"maintainer": 5,
|
|
386
|
+
"quality": 15,
|
|
387
|
+
"behavioral": 3,
|
|
388
|
+
"provenance": 0
|
|
389
|
+
},
|
|
390
|
+
"rationale": "Cross-ecosystem lure packages (security/crypto/AI-tooling themes) from a single actor cluster; install/import/build-time credential stealer + AI-assistant config poisoning; no provenance.",
|
|
391
|
+
"method": "supplementary-supply-chain-trust (equal-weight mean of present sub-signals; never feeds RWEP)",
|
|
392
|
+
"as_of": "2026-05-30"
|
|
393
|
+
}
|
|
368
394
|
},
|
|
369
395
|
"MAL-2026-MOIKA-DEPCONFUSION": {
|
|
370
396
|
"name": "oob.moika.tech dependency-confusion credential-exfiltration campaign (internal-scope namespace squat)",
|
|
@@ -538,7 +564,20 @@
|
|
|
538
564
|
"_editorial_note": "MOIKA (oob.moika.tech) intake: NOVEL attack class for this catalog — first dependency-confusion / internal-scope-squat entry (catalog previously had zero). Distinct from MAL-2026-NODE-IPC-STEALER (account-recovery, main-module payload, DNS-TXT exfil): MOIKA is namespace-confusion, postinstall stager, HTTPS-POST exfil, --ignore-scripts-mitigable. Likely warrants a new zeroday-lessons control (PACKAGE-INTERNAL-SCOPE-REGISTRY-PINNING). RWEP 43 (exemplar convention: live_patch_available credited -10).js (would be 43 under the exemplar's -10 convention).",
|
|
539
565
|
"remediation_status": "partially_removed_from_registry",
|
|
540
566
|
"remediation_note": "Malicious packages were reported and are being removed from npm; OSV/GHSA records published 2026-05-28/29. Removal is per-package and reactive — the structural risk (any attacker can re-publish an inflated version under an unpinned internal scope) persists until consuming orgs pin internal scopes to their private registry. UNVERIFIED: whether all ~179 packages were removed and whether all four publisher accounts were deactivated as of 2026-05-30 (no source confirms complete takedown).",
|
|
541
|
-
"remediation_status_verified_at": "2026-05-30"
|
|
567
|
+
"remediation_status_verified_at": "2026-05-30",
|
|
568
|
+
"package_confidence": {
|
|
569
|
+
"score": 5,
|
|
570
|
+
"polarity": "trust",
|
|
571
|
+
"inputs": {
|
|
572
|
+
"maintainer": 5,
|
|
573
|
+
"quality": 10,
|
|
574
|
+
"behavioral": 5,
|
|
575
|
+
"provenance": 0
|
|
576
|
+
},
|
|
577
|
+
"rationale": "Dependency-confusion squat: fresh attacker accounts (mr.4nd3r50n / t-in-one), inflated 99.99.99 semver, obfuscated postinstall stager exfiltrating process.env, no repo link, no provenance attestation.",
|
|
578
|
+
"method": "supplementary-supply-chain-trust (equal-weight mean of present sub-signals; never feeds RWEP)",
|
|
579
|
+
"as_of": "2026-05-30"
|
|
580
|
+
}
|
|
542
581
|
},
|
|
543
582
|
"CVE-2025-0282": {
|
|
544
583
|
"ai_assisted_weaponization": false,
|
|
@@ -4880,7 +4919,20 @@
|
|
|
4880
4919
|
"_editorial_note": "Cycle 13 intake (v0.12.33): cycle 13 agent C surfaced node-ipc 2026-05-14 publish event in the 24h-window check. Novel attack precondition (expired-domain re-registration + npm password-reset abuse) makes this a distinct supply-chain class from the Shai-Hulud (token-compromise) and elementary-data (typosquat + orphan-commit) precedents; warrants its own NEW-CTRL-047 in zeroday-lessons.json. RWEP factors satisfy Shape B invariant (0 + 20 + 0 + 20 + 28 - 15 - 10 + 0 = 43); discovery_attribution_note cites multiple firms with URLs.",
|
|
4881
4920
|
"remediation_status": "removed_from_registry",
|
|
4882
4921
|
"remediation_note": "npm removed all 3 malicious versions (9.1.6, 9.2.3, 12.0.1) within ~2 hours of publication on 2026-05-14. Publisher account atiertant was deactivated. The expired-domain TTP (atlantis-software.net re-registered via Namecheap on 2026-05-07 after Jan 2025 expiry) remains the novel attack class to defend against — see zeroday-lessons NEW-CTRL-047 (PACKAGE-MAINTAINER-DOMAIN-EXPIRY-MONITORING).",
|
|
4883
|
-
"remediation_status_verified_at": "2026-05-16"
|
|
4922
|
+
"remediation_status_verified_at": "2026-05-16",
|
|
4923
|
+
"package_confidence": {
|
|
4924
|
+
"score": 11,
|
|
4925
|
+
"polarity": "trust",
|
|
4926
|
+
"inputs": {
|
|
4927
|
+
"maintainer": 8,
|
|
4928
|
+
"quality": 30,
|
|
4929
|
+
"behavioral": 5,
|
|
4930
|
+
"provenance": 0
|
|
4931
|
+
},
|
|
4932
|
+
"rationale": "Account-takeover (expired-domain account-recovery) of a real 3.35M-download package: the package WAS legitimate (quality moderate) but the publish account was attacker-controlled, shipping a main-module credential stealer; provenance absent post-takeover.",
|
|
4933
|
+
"method": "supplementary-supply-chain-trust (equal-weight mean of present sub-signals; never feeds RWEP)",
|
|
4934
|
+
"as_of": "2026-05-30"
|
|
4935
|
+
}
|
|
4884
4936
|
},
|
|
4885
4937
|
"CVE-2026-46333": {
|
|
4886
4938
|
"name": "ssh-keysign-pwn",
|
|
@@ -4990,7 +5042,8 @@
|
|
|
4990
5042
|
"active_exploitation_notes": "Copycat modifications observed by Ox Security within hours of the 2026-05-12 release. Mini Shai-Hulud wave (Microsoft Security Research, 2026-05-11) compromised 170+ npm packages + 2 PyPI packages across 404 malicious versions. MAL-2026-TANSTACK-MINI in this catalog is an in-the-wild Shai-Hulud-class incident. Continuous active exploitation expected through 2026.",
|
|
4991
5043
|
"affected": "npm registry (170+ confirmed packages in May 2026 wave), PyPI (2 confirmed), GitHub Actions runners, developer workstations with credentials staged in ~/.aws, ~/.config/gcloud, ~/.kube, ~/.ssh, ~/.cursor, ~/.codeium, ~/.claude, ~/.npmrc. Any package-registry account whose maintainer workstation runs the framework. Any AI-assistant config file with API tokens or MCP server credentials.",
|
|
4992
5044
|
"affected_versions": [
|
|
4993
|
-
"shai-hulud-framework all forks post-2026-05-12"
|
|
5045
|
+
"shai-hulud-framework all forks post-2026-05-12",
|
|
5046
|
+
"PyPI lightning / pytorch-lightning 2.6.2 and 2.6.3 (Mini Shai-Hulud PyPI wave; last clean 2.6.1, 2026-01-30; CVE-2026-44484 / GHSA-w37p-236h-pfx3 / OSV MAL-2026-3201, published 2026-04-30)"
|
|
4994
5047
|
],
|
|
4995
5048
|
"vector": "Self-replicating npm worm with maintainer-account-pivot. Phase 1: credential harvest via package post-install OR require-time activation (variant-dependent) reads cloud + AI-assistant + version-control configs from operator HOME. Phase 2: stolen npm token authenticates to registry as compromised maintainer; enumerates other packages owned by same maintainer; injects malware; publishes new compromised versions. Phase 3: encrypted exfil to attacker-controlled GitHub repos matching the \"A Gift From TeamPCP\" naming pattern + secondary C2 channels. Phase 4 (variant-dependent): local-environment wipe — destructive opt-in by attacker.",
|
|
4996
5049
|
"complexity": "turnkey post-source-release",
|
|
@@ -5050,7 +5103,12 @@
|
|
|
5050
5103
|
"https://www.microsoft.com/en-us/security/blog/2025/12/09/shai-hulud-2-0-guidance-for-detecting-investigating-and-defending-against-the-supply-chain-attack/",
|
|
5051
5104
|
"https://www.cisa.gov/news-events/alerts/2025/09/23/widespread-supply-chain-compromise-impacting-npm-ecosystem",
|
|
5052
5105
|
"https://www.wiz.io/blog/shai-hulud-2-0-ongoing-supply-chain-attack",
|
|
5053
|
-
"https://snyk.io/blog/tanstack-npm-packages-compromised/"
|
|
5106
|
+
"https://snyk.io/blog/tanstack-npm-packages-compromised/",
|
|
5107
|
+
"https://osv.dev/vulnerability/MAL-2026-3201",
|
|
5108
|
+
"https://github.com/Lightning-AI/pytorch-lightning/security/advisories/GHSA-w37p-236h-pfx3",
|
|
5109
|
+
"https://www.stepsecurity.io/blog/lightning-obfuscated-javascript-credential-stealer-bundled-in-pypi-wheel",
|
|
5110
|
+
"https://www.aikido.dev/blog/pytorch-lightning-pypi-compromise-mini-shai-hulud",
|
|
5111
|
+
"https://socket.dev/blog/lightning-pypi-package-compromised"
|
|
5054
5112
|
],
|
|
5055
5113
|
"last_updated": "2026-05-17",
|
|
5056
5114
|
"discovery_attribution_note": "TeamPCP threat-actor framework, not a vulnerability discovery. The framework was open-sourced 2026-05-12 on GitHub under MIT license by the same actor group responsible for the September 2025 / November 2025 / May 2026 Shai-Hulud npm-worm waves. TeamPCP self-describes the framework as \"vibe coded\" — AI-coding-assistant-mediated authoring. Adoption-side weaponization is accelerated by AI coding assistants + the BreachForums-hosted $1,000 USD bounty contest.",
|
|
@@ -5061,8 +5119,33 @@
|
|
|
5061
5119
|
"Self-republication attempts from a package-install context and creation of attacker-controlled public repositories for exfiltration (worm propagation via maintainer-account pivot).",
|
|
5062
5120
|
"Outbound exfiltration of harvested secrets from a CI runner or developer host shortly after an affected dependency install."
|
|
5063
5121
|
],
|
|
5064
|
-
"_ioc_source_note": "Anchored to NVD/advisory references and the public Shai-Hulud worm analyses cited in verification_sources."
|
|
5065
|
-
|
|
5122
|
+
"_ioc_source_note": "Anchored to NVD/advisory references and the public Shai-Hulud worm analyses cited in verification_sources.",
|
|
5123
|
+
"pypi_lightning_subincident": [
|
|
5124
|
+
"PyPI lightning 2.6.2/2.6.3 wheel ships _runtime/start.py + _runtime/router_runtime.js (~11 MB obfuscated JS infostealer)",
|
|
5125
|
+
"Import-triggered payload downloads the Bun JavaScript runtime v1.3.13 and executes router_runtime.js (credential harvest of CI/CD, SSH keyrings, crypto wallets, PyPI publish tokens)",
|
|
5126
|
+
"Cross-ecosystem spread: injects into npm package tarballs on the developer machine for downstream npm propagation"
|
|
5127
|
+
]
|
|
5128
|
+
},
|
|
5129
|
+
"package_confidence": {
|
|
5130
|
+
"score": 3,
|
|
5131
|
+
"polarity": "trust",
|
|
5132
|
+
"inputs": {
|
|
5133
|
+
"maintainer": 3,
|
|
5134
|
+
"quality": 5,
|
|
5135
|
+
"behavioral": 2,
|
|
5136
|
+
"provenance": 0
|
|
5137
|
+
},
|
|
5138
|
+
"rationale": "Self-replicating worm framework (TeamPCP) compromising 170+ npm + PyPI packages; credential harvest + repo poisoning + self-propagation; no legitimate provenance.",
|
|
5139
|
+
"method": "supplementary-supply-chain-trust (equal-weight mean of present sub-signals; never feeds RWEP)",
|
|
5140
|
+
"as_of": "2026-05-30"
|
|
5141
|
+
},
|
|
5142
|
+
"aliases": [
|
|
5143
|
+
"CVE-2026-44484",
|
|
5144
|
+
"MAL-2026-3201",
|
|
5145
|
+
"GHSA-w37p-236h-pfx3"
|
|
5146
|
+
],
|
|
5147
|
+
"aliases_note": "CVE-2026-44484 / OSV MAL-2026-3201 / GHSA-w37p-236h-pfx3 cover the PyPI lightning (PyTorch Lightning) sub-incident of this Mini Shai-Hulud wave — distinct ids for the same campaign, tracked here rather than as a separate entry (adversarial dedup 2026-05-30 confirmed it is the PyPI side of this wave, not a distinct incident).",
|
|
5148
|
+
"_editorial_note_lightning": "PyPI lightning (PyTorch Lightning) 2.6.2/2.6.3 compromise (disclosed 2026-04-30, CVE-2026-44484) folded into this entry on 2026-05-30: an adversarial dedup found it is the PyPI side of the Mini Shai-Hulud wave already scoped here (shared Bun-runtime/router_runtime.js IoCs, same campaign/timeline), not a distinct incident warranting a separate MAL-* key."
|
|
5066
5149
|
},
|
|
5067
5150
|
"CVE-2024-21762": {
|
|
5068
5151
|
"ai_assisted_weaponization": false,
|
package/lib/citation-resolve.js
CHANGED
|
@@ -128,7 +128,8 @@ async function resolveCve(id, opts = {}) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
// 1. curated catalog (offline, authoritative for the ids it covers)
|
|
131
|
-
const
|
|
131
|
+
const catalog = cveCatalog();
|
|
132
|
+
const entry = catalog[cveId];
|
|
132
133
|
if (entry && typeof entry === "object") {
|
|
133
134
|
return {
|
|
134
135
|
...base,
|
|
@@ -141,6 +142,27 @@ async function resolveCve(id, opts = {}) {
|
|
|
141
142
|
};
|
|
142
143
|
}
|
|
143
144
|
|
|
145
|
+
// 1b. alias lookup — an id may be carried as an alias of a curated entry
|
|
146
|
+
// (e.g. a CVE for a sub-incident folded into a campaign-level MAL-* key).
|
|
147
|
+
// Catalogued-by-alias must resolve offline too, or `exceptd cve <alias>`
|
|
148
|
+
// would report unknown for an incident the catalog actually covers.
|
|
149
|
+
for (const k of Object.keys(catalog)) {
|
|
150
|
+
if (k === "_meta") continue;
|
|
151
|
+
const e = catalog[k];
|
|
152
|
+
if (e && Array.isArray(e.aliases) && e.aliases.includes(cveId)) {
|
|
153
|
+
return {
|
|
154
|
+
...base,
|
|
155
|
+
status: e.status || "published",
|
|
156
|
+
cvss: e.cvss_score ?? null,
|
|
157
|
+
kev: e.cisa_kev ?? null,
|
|
158
|
+
product: e.name || e.type || null,
|
|
159
|
+
exploitation: e.active_exploitation ?? null,
|
|
160
|
+
from: "catalog-alias",
|
|
161
|
+
aliased_to: k,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
144
166
|
// 2. resolved cache (offline, warmed by a prior agent's lookup)
|
|
145
167
|
const cached = cacheGet("cve", cveId);
|
|
146
168
|
if (cached) return { ...cached, from: "cache" };
|
|
@@ -187,6 +187,29 @@
|
|
|
187
187
|
"last_updated": {
|
|
188
188
|
"type": "string",
|
|
189
189
|
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
|
|
190
|
+
},
|
|
191
|
+
"package_confidence": {
|
|
192
|
+
"type": "object",
|
|
193
|
+
"description": "Optional supplementary supply-chain trustworthiness signal (Package-Confidence Score), surfaced ALONGSIDE rwep_score and never feeding it. Polarity is INVERSE of RWEP: high score = trustworthy provenance/behaviour, low = behaves like malware. Present only on package-class entries (MAL-*, supply-chain-* CVEs); never participates in the RWEP sum invariant.",
|
|
194
|
+
"required": ["score", "polarity"],
|
|
195
|
+
"properties": {
|
|
196
|
+
"score": { "type": "integer", "minimum": 0, "maximum": 100 },
|
|
197
|
+
"polarity": { "enum": ["trust"] },
|
|
198
|
+
"inputs": {
|
|
199
|
+
"type": "object",
|
|
200
|
+
"properties": {
|
|
201
|
+
"maintainer": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
202
|
+
"quality": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
203
|
+
"behavioral": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
204
|
+
"provenance": { "type": "number", "minimum": 0, "maximum": 100 }
|
|
205
|
+
},
|
|
206
|
+
"additionalProperties": false
|
|
207
|
+
},
|
|
208
|
+
"rationale": { "type": "string" },
|
|
209
|
+
"method": { "type": "string" },
|
|
210
|
+
"as_of": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" }
|
|
211
|
+
},
|
|
212
|
+
"additionalProperties": false
|
|
190
213
|
}
|
|
191
214
|
}
|
|
192
215
|
}
|
package/lib/scoring.js
CHANGED
|
@@ -498,11 +498,44 @@ function parseCvss31Vector(v) {
|
|
|
498
498
|
return { ok: true, version };
|
|
499
499
|
}
|
|
500
500
|
|
|
501
|
+
/**
|
|
502
|
+
* Package-Confidence Score (PCS) — a SUPPLEMENTARY 0-100 supply-chain
|
|
503
|
+
* trustworthiness signal, surfaced ALONGSIDE RWEP, never replacing it.
|
|
504
|
+
*
|
|
505
|
+
* Polarity is the INVERSE of RWEP: high PCS = trustworthy provenance/behaviour;
|
|
506
|
+
* low PCS = behaves like malware. RWEP answers "how urgently must I act on this
|
|
507
|
+
* known vulnerability"; PCS answers "how much do I trust this package's
|
|
508
|
+
* provenance/behaviour, independent of any CVE." The two are different axes and
|
|
509
|
+
* must never be summed or compared numerically (the `package_confidence.polarity:
|
|
510
|
+
* "trust"` const on catalog entries exists to assert direction before display).
|
|
511
|
+
*
|
|
512
|
+
* CRITICAL: this function is NEVER called inside validate() / scoreCustom() /
|
|
513
|
+
* deriveRwepFromFactors(). PCS lives OUTSIDE the RWEP factor key set so the
|
|
514
|
+
* RWEP sum invariant + >5 divergence gate cannot see it — adding it is purely
|
|
515
|
+
* additive and cannot perturb any stored rwep_score.
|
|
516
|
+
*
|
|
517
|
+
* Equal-weight mean of the PRESENT sub-signals (maintainer / quality /
|
|
518
|
+
* behavioral / provenance), each 0-100, clamped to [0,100]. Absent sub-signals
|
|
519
|
+
* are skipped (not treated as 0) so a partially-curated entry isn't punished
|
|
520
|
+
* for un-assessed dimensions. Returns null when no usable input is present.
|
|
521
|
+
*/
|
|
522
|
+
function packageConfidence(inputs) {
|
|
523
|
+
if (!inputs || typeof inputs !== 'object') return null;
|
|
524
|
+
const dims = ['maintainer', 'quality', 'behavioral', 'provenance'];
|
|
525
|
+
const present = dims
|
|
526
|
+
.map((d) => inputs[d])
|
|
527
|
+
.filter((v) => typeof v === 'number' && Number.isFinite(v));
|
|
528
|
+
if (!present.length) return null;
|
|
529
|
+
const mean = present.reduce((a, b) => a + b, 0) / present.length;
|
|
530
|
+
return Math.max(0, Math.min(100, Math.round(mean)));
|
|
531
|
+
}
|
|
532
|
+
|
|
501
533
|
module.exports = {
|
|
502
534
|
score,
|
|
503
535
|
scoreCustom,
|
|
504
536
|
timeline,
|
|
505
537
|
compare,
|
|
538
|
+
packageConfidence,
|
|
506
539
|
validate,
|
|
507
540
|
validateFactors,
|
|
508
541
|
deriveRwepFromFactors,
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exceptd-security",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.53",
|
|
4
4
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation",
|
|
5
5
|
"homepage": "https://exceptd.com",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
],
|
|
54
54
|
"last_threat_review": "2026-05-15",
|
|
55
55
|
"signature": "0H+JfyUVmo/pVFEi5rLENATHjlukPVUqnOWmNPEH77wm8svKGK0aNJ46k6QU5GdHb8c9X9pVJKiuhON6AxDjDw==",
|
|
56
|
-
"signed_at": "2026-05-
|
|
56
|
+
"signed_at": "2026-05-31T04:48:21.114Z",
|
|
57
57
|
"cwe_refs": [
|
|
58
58
|
"CWE-125",
|
|
59
59
|
"CWE-362",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
],
|
|
124
124
|
"last_threat_review": "2026-05-17",
|
|
125
125
|
"signature": "PHwHEsoy7ctBYOtlAfAdCDVfsq2Bpk9+qESSF+5dVkDcez2zp2v9Ihsv2vqMEs3QxMndyQ+t7NVezyt5VamSCg==",
|
|
126
|
-
"signed_at": "2026-05-
|
|
126
|
+
"signed_at": "2026-05-31T04:48:21.116Z",
|
|
127
127
|
"cwe_refs": [
|
|
128
128
|
"CWE-1039",
|
|
129
129
|
"CWE-1426",
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
],
|
|
197
197
|
"last_threat_review": "2026-05-17",
|
|
198
198
|
"signature": "dD4p7lcRtMyfITOncqLkpOeMy6x6gM0V7UlWHgLEdcxqODb1s75ar1cBtTqDWPbMv6ZAzVo2HJLDK1hVjjU2AQ==",
|
|
199
|
-
"signed_at": "2026-05-
|
|
199
|
+
"signed_at": "2026-05-31T04:48:21.116Z",
|
|
200
200
|
"cwe_refs": [
|
|
201
201
|
"CWE-22",
|
|
202
202
|
"CWE-345",
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
"framework_gaps": [],
|
|
249
249
|
"last_threat_review": "2026-05-22",
|
|
250
250
|
"signature": "wsw8Mlr/gyw6S7Iaao9BVHdU5LFPWl8WVymW17Lkq9J1Mui0+fCrTg6UbrsaeE3s7EW3TVgzBuK+8EFd1+H5AA==",
|
|
251
|
-
"signed_at": "2026-05-
|
|
251
|
+
"signed_at": "2026-05-31T04:48:21.117Z"
|
|
252
252
|
},
|
|
253
253
|
{
|
|
254
254
|
"name": "compliance-theater",
|
|
@@ -279,7 +279,7 @@
|
|
|
279
279
|
],
|
|
280
280
|
"last_threat_review": "2026-05-22",
|
|
281
281
|
"signature": "uVTc1QRKOKcIVDajBz+q2egjiEAyOQaDNsvVI2ghj5FD0VvquoUBBE5Naca2FkaZa790EHWCsVZ4hhdaSQs2DQ==",
|
|
282
|
-
"signed_at": "2026-05-
|
|
282
|
+
"signed_at": "2026-05-31T04:48:21.117Z"
|
|
283
283
|
},
|
|
284
284
|
{
|
|
285
285
|
"name": "exploit-scoring",
|
|
@@ -308,7 +308,7 @@
|
|
|
308
308
|
],
|
|
309
309
|
"last_threat_review": "2026-05-18",
|
|
310
310
|
"signature": "QuNpwnZ6HkCEAXTPC/jLbXSmMIc1JnBczqZAAIZmZj8OcEMVnw9mJYAnU3CxaEI7rvbcMkN2uS5E8yUCm/NiAg==",
|
|
311
|
-
"signed_at": "2026-05-
|
|
311
|
+
"signed_at": "2026-05-31T04:48:21.118Z"
|
|
312
312
|
},
|
|
313
313
|
{
|
|
314
314
|
"name": "rag-pipeline-security",
|
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
],
|
|
346
346
|
"last_threat_review": "2026-05-22",
|
|
347
347
|
"signature": "5rw2i39SxY2WphBbDLEP28wufnbPPE9+PWt54hmaGdwHXr9RLiVt5liL/5xp14sehlVgFsfpR/bg9vy//xV0DA==",
|
|
348
|
-
"signed_at": "2026-05-
|
|
348
|
+
"signed_at": "2026-05-31T04:48:21.118Z",
|
|
349
349
|
"cwe_refs": [
|
|
350
350
|
"CWE-1395",
|
|
351
351
|
"CWE-1426"
|
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
],
|
|
406
406
|
"last_threat_review": "2026-05-17",
|
|
407
407
|
"signature": "Vqu49nzntFWjn9A/QeJzm7q/2xk/cZJ6HFQKtiNi1zgcxzXKm+MlFdkaLgYHWj5/9HJohxyIDyBJQTvcJ20eDQ==",
|
|
408
|
-
"signed_at": "2026-05-
|
|
408
|
+
"signed_at": "2026-05-31T04:48:21.118Z",
|
|
409
409
|
"d3fend_refs": [
|
|
410
410
|
"D3-CA",
|
|
411
411
|
"D3-CSPP",
|
|
@@ -440,7 +440,7 @@
|
|
|
440
440
|
"framework_gaps": [],
|
|
441
441
|
"last_threat_review": "2026-05-22",
|
|
442
442
|
"signature": "W87VdyVdAxAdcRI6P/8StaV+MS8ZSPKM9HOCK9n/bBO6BM3ZSE3uImVoyJVpAXQlUpUGN+A3lCJZXv64LuxwDg==",
|
|
443
|
-
"signed_at": "2026-05-
|
|
443
|
+
"signed_at": "2026-05-31T04:48:21.119Z",
|
|
444
444
|
"cwe_refs": [
|
|
445
445
|
"CWE-1188"
|
|
446
446
|
],
|
|
@@ -474,7 +474,7 @@
|
|
|
474
474
|
"framework_gaps": [],
|
|
475
475
|
"last_threat_review": "2026-05-18",
|
|
476
476
|
"signature": "wdVX+edeNekpaIldqkhvtraV6DquLvIsKAjuZVwPQYn3l1vS99HXuFxmNsD7UeMlO3qgC6Dysfsto9EnuH0RBg==",
|
|
477
|
-
"signed_at": "2026-05-
|
|
477
|
+
"signed_at": "2026-05-31T04:48:21.119Z",
|
|
478
478
|
"forward_watch": [
|
|
479
479
|
"New AI attack classes as ATLAS v6 publishes",
|
|
480
480
|
"Post-quantum adversary capability timeline",
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
"framework_gaps": [],
|
|
514
514
|
"last_threat_review": "2026-05-01",
|
|
515
515
|
"signature": "b5miTiY0cnxETd2btxorfZBdJKt/fLnQx20sGYUb9zEqGqtm0LMLpghkW68j4/9k48KNyuGMtNWiKTSnodUGBw==",
|
|
516
|
-
"signed_at": "2026-05-
|
|
516
|
+
"signed_at": "2026-05-31T04:48:21.119Z"
|
|
517
517
|
},
|
|
518
518
|
{
|
|
519
519
|
"name": "zeroday-gap-learn",
|
|
@@ -540,7 +540,7 @@
|
|
|
540
540
|
"framework_gaps": [],
|
|
541
541
|
"last_threat_review": "2026-05-18",
|
|
542
542
|
"signature": "xbkip0AQtWQKAu+O6r/gYECNjezS6O9k9xkkJsYbMlr+j8CdqH3p5/0l+GZmDidImRC/DL07GCnKrk9HRR/yDQ==",
|
|
543
|
-
"signed_at": "2026-05-
|
|
543
|
+
"signed_at": "2026-05-31T04:48:21.120Z",
|
|
544
544
|
"forward_watch": [
|
|
545
545
|
"New CISA KEV entries",
|
|
546
546
|
"New ATLAS TTP additions in each ATLAS release",
|
|
@@ -604,7 +604,7 @@
|
|
|
604
604
|
],
|
|
605
605
|
"last_threat_review": "2026-05-22",
|
|
606
606
|
"signature": "li2NnC1oeVIr22ComP5QbcQoh5xpWITuaKpza1s2SsUkH6kGnnt4wFfFAzaC1ORmH9x2cr8hN8kaNANG/eIMBQ==",
|
|
607
|
-
"signed_at": "2026-05-
|
|
607
|
+
"signed_at": "2026-05-31T04:48:21.120Z",
|
|
608
608
|
"cwe_refs": [
|
|
609
609
|
"CWE-327"
|
|
610
610
|
],
|
|
@@ -652,7 +652,7 @@
|
|
|
652
652
|
],
|
|
653
653
|
"last_threat_review": "2026-05-22",
|
|
654
654
|
"signature": "sZHlJ7ueHPdtzVbR+yXQ5+wKgNyjWsa1LKVg9aWTmg/Onl71DvEILMyJiLpPQjseT56Mnr1DMYJE8xOGlffBAw==",
|
|
655
|
-
"signed_at": "2026-05-
|
|
655
|
+
"signed_at": "2026-05-31T04:48:21.121Z"
|
|
656
656
|
},
|
|
657
657
|
{
|
|
658
658
|
"name": "security-maturity-tiers",
|
|
@@ -689,7 +689,7 @@
|
|
|
689
689
|
],
|
|
690
690
|
"last_threat_review": "2026-05-01",
|
|
691
691
|
"signature": "3AwFnEJu6DukPPNep/3SnuPWEuV060fJEQIwThFm7ujmdbFk0/Ii0XwGv1dkvbbK7ymMdOQpp35l4aLONAucDA==",
|
|
692
|
-
"signed_at": "2026-05-
|
|
692
|
+
"signed_at": "2026-05-31T04:48:21.121Z",
|
|
693
693
|
"cwe_refs": [
|
|
694
694
|
"CWE-1188"
|
|
695
695
|
]
|
|
@@ -724,7 +724,7 @@
|
|
|
724
724
|
"framework_gaps": [],
|
|
725
725
|
"last_threat_review": "2026-05-11",
|
|
726
726
|
"signature": "iJWevUBurLvt2v8X+Ch2eHmZkPWpKeAtIpxTIP4MwbUHyco3igDeBywJCyaR2vURYRx8LkzzIMM8DxQM4LAXBQ==",
|
|
727
|
-
"signed_at": "2026-05-
|
|
727
|
+
"signed_at": "2026-05-31T04:48:21.121Z"
|
|
728
728
|
},
|
|
729
729
|
{
|
|
730
730
|
"name": "attack-surface-pentest",
|
|
@@ -796,7 +796,7 @@
|
|
|
796
796
|
"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"
|
|
797
797
|
],
|
|
798
798
|
"signature": "DDMzI+4En4aIkwBUCGW6nj1eEkCyLqHGn2LJ2rnwWfYatjPI1U5HrTZNAN/n9JqWtAzk8F3rmsKehaaz5iNWDA==",
|
|
799
|
-
"signed_at": "2026-05-
|
|
799
|
+
"signed_at": "2026-05-31T04:48:21.121Z"
|
|
800
800
|
},
|
|
801
801
|
{
|
|
802
802
|
"name": "fuzz-testing-strategy",
|
|
@@ -856,7 +856,7 @@
|
|
|
856
856
|
"OSS-Fuzz-Gen / AI-assisted harness generation becoming the default expectation for OSS maintainers"
|
|
857
857
|
],
|
|
858
858
|
"signature": "dJB0iAstIUbyny+udl3OIkaLScEmqS97LNP73yQ8mxt+0bcqxZjpfXaWLzLuIQblGYvUvz75/H6rO2EJuGd4AQ==",
|
|
859
|
-
"signed_at": "2026-05-
|
|
859
|
+
"signed_at": "2026-05-31T04:48:21.122Z"
|
|
860
860
|
},
|
|
861
861
|
{
|
|
862
862
|
"name": "dlp-gap-analysis",
|
|
@@ -931,7 +931,7 @@
|
|
|
931
931
|
"Quebec Law 25, India DPDPA, KSA PDPL enforcement actions naming AI-tool prompt data as in-scope personal information"
|
|
932
932
|
],
|
|
933
933
|
"signature": "KEAoMji3VcPX/ZXXqVe6OStxSkTssfY9fIRPyPcDYqh50GzOFQ6koNOTBVAiWOvjDjQ38g12xun5srbqgmvRAw==",
|
|
934
|
-
"signed_at": "2026-05-
|
|
934
|
+
"signed_at": "2026-05-31T04:48:21.122Z"
|
|
935
935
|
},
|
|
936
936
|
{
|
|
937
937
|
"name": "supply-chain-integrity",
|
|
@@ -1010,7 +1010,7 @@
|
|
|
1010
1010
|
"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"
|
|
1011
1011
|
],
|
|
1012
1012
|
"signature": "zuW8T0EMbVV83GsUP/W20Use2gBTicBW021T0sY7qsRY/U5qsPWkXYIWp3SdiKLTIKqTEd/0T7LQebjIs2QKCA==",
|
|
1013
|
-
"signed_at": "2026-05-
|
|
1013
|
+
"signed_at": "2026-05-31T04:48:21.123Z"
|
|
1014
1014
|
},
|
|
1015
1015
|
{
|
|
1016
1016
|
"name": "defensive-countermeasure-mapping",
|
|
@@ -1067,7 +1067,7 @@
|
|
|
1067
1067
|
],
|
|
1068
1068
|
"last_threat_review": "2026-05-11",
|
|
1069
1069
|
"signature": "Qe0Hg9BrX3Zm5pj0n2z/oiHbAXWdA2Dq461zc4izkkUjEX2CZ02rODjCI2ELbrVOU3GC7edxqAxA+5U/ObnHDQ==",
|
|
1070
|
-
"signed_at": "2026-05-
|
|
1070
|
+
"signed_at": "2026-05-31T04:48:21.123Z"
|
|
1071
1071
|
},
|
|
1072
1072
|
{
|
|
1073
1073
|
"name": "identity-assurance",
|
|
@@ -1134,7 +1134,7 @@
|
|
|
1134
1134
|
"d3fend_refs": [],
|
|
1135
1135
|
"last_threat_review": "2026-05-11",
|
|
1136
1136
|
"signature": "UV3458QXSkEpenzrOmdlTTfPHUD4hNyKMDHoeZDq/kiFb4mAG0ghQGTTgI9Ru8cJbSmYM1++m9N5TFIJ6JJPBg==",
|
|
1137
|
-
"signed_at": "2026-05-
|
|
1137
|
+
"signed_at": "2026-05-31T04:48:21.123Z"
|
|
1138
1138
|
},
|
|
1139
1139
|
{
|
|
1140
1140
|
"name": "ot-ics-security",
|
|
@@ -1190,7 +1190,7 @@
|
|
|
1190
1190
|
"d3fend_refs": [],
|
|
1191
1191
|
"last_threat_review": "2026-05-11",
|
|
1192
1192
|
"signature": "kIVzsPsJ72PzzWQwTuvjoHHoVEDCday5I52M9ohjB3/Ak+zlA8oyWLO/BKb/XuYY4fOApjfxTErSWv5uHQ2zDw==",
|
|
1193
|
-
"signed_at": "2026-05-
|
|
1193
|
+
"signed_at": "2026-05-31T04:48:21.123Z"
|
|
1194
1194
|
},
|
|
1195
1195
|
{
|
|
1196
1196
|
"name": "coordinated-vuln-disclosure",
|
|
@@ -1242,7 +1242,7 @@
|
|
|
1242
1242
|
"NYDFS 23 NYCRR 500 amendments potentially adding explicit CVD program requirements"
|
|
1243
1243
|
],
|
|
1244
1244
|
"signature": "bWr27Q1uN9xCe1ib4QulszBa7YIDNkGqo72k5nm2cK98LyPblicD+sO9MnGckAyB22BTN/cIB+FwFMcI5IxvBw==",
|
|
1245
|
-
"signed_at": "2026-05-
|
|
1245
|
+
"signed_at": "2026-05-31T04:48:21.124Z"
|
|
1246
1246
|
},
|
|
1247
1247
|
{
|
|
1248
1248
|
"name": "threat-modeling-methodology",
|
|
@@ -1292,7 +1292,7 @@
|
|
|
1292
1292
|
"PASTA v2 updates incorporating AI/ML application threats"
|
|
1293
1293
|
],
|
|
1294
1294
|
"signature": "Q854yzLqXdOazc6EyQbZzgAlivuq2vGFDVUCrxSldSvx/HX/ZM/uzmJyP7aBG7ZsMHxj6Lmj/H82YQoo1e+NCQ==",
|
|
1295
|
-
"signed_at": "2026-05-
|
|
1295
|
+
"signed_at": "2026-05-31T04:48:21.124Z"
|
|
1296
1296
|
},
|
|
1297
1297
|
{
|
|
1298
1298
|
"name": "webapp-security",
|
|
@@ -1366,7 +1366,7 @@
|
|
|
1366
1366
|
"d3fend_refs": [],
|
|
1367
1367
|
"last_threat_review": "2026-05-11",
|
|
1368
1368
|
"signature": "4ccahkJpGJZtwD7EBpnGcN0sEGPMEw8eqV+tvePVS04YAkLgYVWtlkasI/8n0be9xB+77x+Sjj3kIi2j2Lf9CA==",
|
|
1369
|
-
"signed_at": "2026-05-
|
|
1369
|
+
"signed_at": "2026-05-31T04:48:21.124Z",
|
|
1370
1370
|
"forward_watch": [
|
|
1371
1371
|
"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"
|
|
1372
1372
|
]
|
|
@@ -1419,7 +1419,7 @@
|
|
|
1419
1419
|
"d3fend_refs": [],
|
|
1420
1420
|
"last_threat_review": "2026-05-15",
|
|
1421
1421
|
"signature": "SBB7c3wNYfIdkyOp4g4nW0WP7xS+YokMzg32aaeJdbf14LTGQRzQUvSqb2TCj2HFUSHESOyKT1JpkAfyHLSQBQ==",
|
|
1422
|
-
"signed_at": "2026-05-
|
|
1422
|
+
"signed_at": "2026-05-31T04:48:21.125Z"
|
|
1423
1423
|
},
|
|
1424
1424
|
{
|
|
1425
1425
|
"name": "sector-healthcare",
|
|
@@ -1479,7 +1479,7 @@
|
|
|
1479
1479
|
"d3fend_refs": [],
|
|
1480
1480
|
"last_threat_review": "2026-05-11",
|
|
1481
1481
|
"signature": "U04GNLyRas1VmfEsB8khH4iqFZPwx96sPY0Kw9iVsSPU+KTeEFqwgtWK1X1pzgb+T16Pc7HSrCaXDOpTFvQEDw==",
|
|
1482
|
-
"signed_at": "2026-05-
|
|
1482
|
+
"signed_at": "2026-05-31T04:48:21.125Z"
|
|
1483
1483
|
},
|
|
1484
1484
|
{
|
|
1485
1485
|
"name": "sector-financial",
|
|
@@ -1560,7 +1560,7 @@
|
|
|
1560
1560
|
"TIBER-EU framework v2.0 alignment with DORA TLPT RTS (JC 2024/40); cross-recognition with CBEST and iCAST"
|
|
1561
1561
|
],
|
|
1562
1562
|
"signature": "xbylLqNPBuEsFE/MNVeGy/01K6yiJXMxQbzC1F4RWU5aseDGbNy5HrAv2JWI2+Aft05ozreNPjccvu66yJ5EBw==",
|
|
1563
|
-
"signed_at": "2026-05-
|
|
1563
|
+
"signed_at": "2026-05-31T04:48:21.126Z"
|
|
1564
1564
|
},
|
|
1565
1565
|
{
|
|
1566
1566
|
"name": "sector-federal-government",
|
|
@@ -1629,7 +1629,7 @@
|
|
|
1629
1629
|
"Australia PSPF 2024 revision and ISM quarterly updates — track for Essential Eight Maturity Level requirements for federal entities"
|
|
1630
1630
|
],
|
|
1631
1631
|
"signature": "C9c3JuBhUbwcb7uZpDdy+PNT8sYmYIxzD4uRHu421ePW1aSFJ8fkMvuTzSO8vD/F/jOOg5opM4kov/xSAn+qCg==",
|
|
1632
|
-
"signed_at": "2026-05-
|
|
1632
|
+
"signed_at": "2026-05-31T04:48:21.126Z"
|
|
1633
1633
|
},
|
|
1634
1634
|
{
|
|
1635
1635
|
"name": "sector-energy",
|
|
@@ -1694,7 +1694,7 @@
|
|
|
1694
1694
|
"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"
|
|
1695
1695
|
],
|
|
1696
1696
|
"signature": "oz8Q5WVaY8au4IjbaZahx/DSaC00Q44ylSL3mDkTerCEpW/EyPUeiLeGxSrWxBCwVFEKSSJvnhJjhvX5lDPcCg==",
|
|
1697
|
-
"signed_at": "2026-05-
|
|
1697
|
+
"signed_at": "2026-05-31T04:48:21.126Z"
|
|
1698
1698
|
},
|
|
1699
1699
|
{
|
|
1700
1700
|
"name": "sector-telecom",
|
|
@@ -1780,7 +1780,7 @@
|
|
|
1780
1780
|
"O-RAN SFG / WG11 security specifications"
|
|
1781
1781
|
],
|
|
1782
1782
|
"signature": "NAtyzfLPXlUuB78Snb9nWmbZalC1CNlIYN9rYhdEmtB/xQGC6vVnThgrEAHlm7v/jMCFuknvEpUHKdscUnUADw==",
|
|
1783
|
-
"signed_at": "2026-05-
|
|
1783
|
+
"signed_at": "2026-05-31T04:48:21.127Z"
|
|
1784
1784
|
},
|
|
1785
1785
|
{
|
|
1786
1786
|
"name": "api-security",
|
|
@@ -1849,7 +1849,7 @@
|
|
|
1849
1849
|
"d3fend_refs": [],
|
|
1850
1850
|
"last_threat_review": "2026-05-18",
|
|
1851
1851
|
"signature": "1UTjZNC5Lyrgw93LAizdXVeSmv3jS8YQNT1db5OKsldub50+o1FXmAH4+3MxZozaOGDCX3yXbdDJSJaaSmfuAA==",
|
|
1852
|
-
"signed_at": "2026-05-
|
|
1852
|
+
"signed_at": "2026-05-31T04:48:21.127Z",
|
|
1853
1853
|
"forward_watch": [
|
|
1854
1854
|
"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",
|
|
1855
1855
|
"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",
|
|
@@ -1935,7 +1935,7 @@
|
|
|
1935
1935
|
"CISA KEV additions for cloud-control-plane CVEs (IMDSv1 abuses, federation token mishandling, cross-tenant boundary failures); CISA Cybersecurity Advisories for cross-cloud advisories"
|
|
1936
1936
|
],
|
|
1937
1937
|
"signature": "EdsY4xe7YA8X8m+KZUbq49JwoCXgRKEz2eg3m86O37rvBmpm8ppvl9hrsekygvpBh2VmCHL2dEYiOD8OM2n7CA==",
|
|
1938
|
-
"signed_at": "2026-05-
|
|
1938
|
+
"signed_at": "2026-05-31T04:48:21.127Z"
|
|
1939
1939
|
},
|
|
1940
1940
|
{
|
|
1941
1941
|
"name": "container-runtime-security",
|
|
@@ -1997,7 +1997,7 @@
|
|
|
1997
1997
|
"d3fend_refs": [],
|
|
1998
1998
|
"last_threat_review": "2026-05-15",
|
|
1999
1999
|
"signature": "fnLKPLkjjRCJ/F9wdmZ1w1lXmqEJvTYkv6Uu+9OTd5vZTWKz3QMuxKOsas+ctCdOvTaeloqPUUprXx+ZZdDpCg==",
|
|
2000
|
-
"signed_at": "2026-05-
|
|
2000
|
+
"signed_at": "2026-05-31T04:48:21.128Z",
|
|
2001
2001
|
"forward_watch": [
|
|
2002
2002
|
"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"
|
|
2003
2003
|
]
|
|
@@ -2071,7 +2071,7 @@
|
|
|
2071
2071
|
"MITRE ATLAS v5.6.0 (released May 2026) shipped the AML.T0010 sub-technique expansion this forecast tracked plus new techniques (\"Publish Poisoned AI Agent Tool\", \"Escape to Host\"); inventory now 16 tactics, 84 techniques, 56 sub-techniques. Forward watch: subsequent ATLAS minor and major releases — track next-cadence updates to agentic-AI TTPs and MLOps-pipeline-specific techniques"
|
|
2072
2072
|
],
|
|
2073
2073
|
"signature": "t3dkdpTX04zvjitEeOJThpgjurLd1UO9GOut4LXSZgY3ULhfknI4zT7G5+m2RSZZTo7yyeZrwpg+7vEg9K6mAw==",
|
|
2074
|
-
"signed_at": "2026-05-
|
|
2074
|
+
"signed_at": "2026-05-31T04:48:21.128Z"
|
|
2075
2075
|
},
|
|
2076
2076
|
{
|
|
2077
2077
|
"name": "incident-response-playbook",
|
|
@@ -2133,7 +2133,7 @@
|
|
|
2133
2133
|
"NYDFS 23 NYCRR 500.17 amendments tightening ransom-payment 24h disclosure operationalization"
|
|
2134
2134
|
],
|
|
2135
2135
|
"signature": "+1kmtA6rAvIyDjjy+cJHK6BcfylyVsa5cUjRFijlFR9GsQfB93JnmkEJOqML50pdlcxtJI3yUodHpL3/YJGtCA==",
|
|
2136
|
-
"signed_at": "2026-05-
|
|
2136
|
+
"signed_at": "2026-05-31T04:48:21.129Z"
|
|
2137
2137
|
},
|
|
2138
2138
|
{
|
|
2139
2139
|
"name": "ransomware-response",
|
|
@@ -2213,7 +2213,7 @@
|
|
|
2213
2213
|
],
|
|
2214
2214
|
"last_threat_review": "2026-05-22",
|
|
2215
2215
|
"signature": "h48ASCz63aBfHzLKxMVDADMuT4atriK0iE6bJeVzZTsx/e8+hyv4fLP7+zYxT9Oe0Gss3v/Xy+t+Wd9uwzV+Aw==",
|
|
2216
|
-
"signed_at": "2026-05-
|
|
2216
|
+
"signed_at": "2026-05-31T04:48:21.129Z"
|
|
2217
2217
|
},
|
|
2218
2218
|
{
|
|
2219
2219
|
"name": "email-security-anti-phishing",
|
|
@@ -2266,7 +2266,7 @@
|
|
|
2266
2266
|
"d3fend_refs": [],
|
|
2267
2267
|
"last_threat_review": "2026-05-18",
|
|
2268
2268
|
"signature": "FVBn4ex2qPIo9SHMVJ6tntoz4tVwjbIq3m6wDjjZyv2JODlS+90GBYCOkNamxxkmw/6de6SMs0YHQiF/xjo/DQ==",
|
|
2269
|
-
"signed_at": "2026-05-
|
|
2269
|
+
"signed_at": "2026-05-31T04:48:21.129Z"
|
|
2270
2270
|
},
|
|
2271
2271
|
{
|
|
2272
2272
|
"name": "age-gates-child-safety",
|
|
@@ -2334,7 +2334,7 @@
|
|
|
2334
2334
|
"US state adult-site age-verification laws — 19+ states by mid-2026 (TX HB 18 upheld by SCOTUS June 2025 in Free Speech Coalition v. Paxton); track ongoing challenges in remaining states"
|
|
2335
2335
|
],
|
|
2336
2336
|
"signature": "ZHVdGWCcfG98tSVB0b9mwrsYwv71V3uUEl+6ss7omSQhmNvqV5s6MAZM5YladBt9MK/8T/zBrTYN4gAonOP+BQ==",
|
|
2337
|
-
"signed_at": "2026-05-
|
|
2337
|
+
"signed_at": "2026-05-31T04:48:21.130Z"
|
|
2338
2338
|
},
|
|
2339
2339
|
{
|
|
2340
2340
|
"name": "cloud-iam-incident",
|
|
@@ -2414,7 +2414,7 @@
|
|
|
2414
2414
|
],
|
|
2415
2415
|
"last_threat_review": "2026-05-15",
|
|
2416
2416
|
"signature": "r9ii4nb3HJELdtKCGF5qy9PHOiot3GC24yfxfGAKlLENHkdRvRkvvL99eV/6RXyfUaMyrnc2Te8tPQcNu5bsDg==",
|
|
2417
|
-
"signed_at": "2026-05-
|
|
2417
|
+
"signed_at": "2026-05-31T04:48:21.130Z",
|
|
2418
2418
|
"forward_watch": [
|
|
2419
2419
|
"AWS IAM Identity Center session-policy refresh and step-up-on-admin enforcement (anticipated 2026-H2 release)",
|
|
2420
2420
|
"GCP Workload Identity Federation principal-set attribute mapping tightening (post-2026 Q3 Federation hardening guide)",
|
|
@@ -2508,7 +2508,7 @@
|
|
|
2508
2508
|
],
|
|
2509
2509
|
"last_threat_review": "2026-05-15",
|
|
2510
2510
|
"signature": "9mfDtMApMAg9V/lmwpniNxo/6gNZoOEoYDfyFvyWvKrPMtc7H9F8uz06FVoARe/J49saAKTVXOurNE1D/KtpCQ==",
|
|
2511
|
-
"signed_at": "2026-05-
|
|
2511
|
+
"signed_at": "2026-05-31T04:48:21.130Z",
|
|
2512
2512
|
"forward_watch": [
|
|
2513
2513
|
"Entra ID conditional access evolution post-Midnight Blizzard — Microsoft's 2025-2026 commitments on legacy-tenant MFA enforcement and OAuth-app consent gating",
|
|
2514
2514
|
"Okta IPSIE (Interoperability Profile for Secure Identity in the Enterprise) OpenID Foundation working-group output and adoption timeline",
|
|
@@ -2526,6 +2526,6 @@
|
|
|
2526
2526
|
],
|
|
2527
2527
|
"manifest_signature": {
|
|
2528
2528
|
"algorithm": "Ed25519",
|
|
2529
|
-
"signature_base64": "
|
|
2529
|
+
"signature_base64": "Adyk095vyeY0icGDAti1GLURbVDE5HhVHyMtgeQ8WwncoOKIrngDjqi/VU9junhfoQtMCktYjJFE56yoi2DTCw=="
|
|
2530
2530
|
}
|
|
2531
2531
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blamejs/exceptd-skills",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.53",
|
|
4
4
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (427 CVEs / 173 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-security",
|
package/sbom.cdx.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:347093c0-9155-471a-9a22-58cb926555f2",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2053-11-17T18:58:08.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.15.
|
|
12
|
+
"version": "0.15.53"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.15.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.15.53",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.15.
|
|
19
|
+
"version": "0.15.53",
|
|
20
20
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (427 CVEs / 173 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
21
21
|
"licenses": [
|
|
22
22
|
{
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
|
-
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.15.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.15.53",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "5fde4e0c2d0ef764c883ff21dbe1f4c5dbc9e74c675e59c15a6941a7e6d68c70"
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
35
|
"externalReferences": [
|
|
36
36
|
{
|
|
37
37
|
"type": "distribution",
|
|
38
|
-
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.15.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.15.53"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"type": "vcs",
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"hashes": [
|
|
117
117
|
{
|
|
118
118
|
"alg": "SHA-256",
|
|
119
|
-
"content": "
|
|
119
|
+
"content": "3f31b297747c16270e24932a2d762bc06655b2d4d7bc2a5c9943e7eccf2a6839"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "6489d29205b4185795b070e341e3290de0368f0dafb096907c1a912ccb5576dfb096fa020cff503d24bf830a9f1c3170ca8897daebcef3542ee6af6b6fae86b4"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -326,11 +326,11 @@
|
|
|
326
326
|
"hashes": [
|
|
327
327
|
{
|
|
328
328
|
"alg": "SHA-256",
|
|
329
|
-
"content": "
|
|
329
|
+
"content": "1aac7e75eae24ece2ef09d1c63977bdd7a1f81a9f11609ebb966109be316426c"
|
|
330
330
|
},
|
|
331
331
|
{
|
|
332
332
|
"alg": "SHA3-512",
|
|
333
|
-
"content": "
|
|
333
|
+
"content": "24df35aa1e38b1d24d29957e06da86e71cce646d6b21a1e5b326e752803cca5441a0d618a763f5648a10cbda50728d8fc28e94dcee3e54eab4a081ee3ebdb156"
|
|
334
334
|
}
|
|
335
335
|
]
|
|
336
336
|
},
|
|
@@ -881,11 +881,11 @@
|
|
|
881
881
|
"hashes": [
|
|
882
882
|
{
|
|
883
883
|
"alg": "SHA-256",
|
|
884
|
-
"content": "
|
|
884
|
+
"content": "27e0665cd005f7c5b3bee0de927c8b43d7193933b44d8ca0fe832a754f0fd6f7"
|
|
885
885
|
},
|
|
886
886
|
{
|
|
887
887
|
"alg": "SHA3-512",
|
|
888
|
-
"content": "
|
|
888
|
+
"content": "c2a42a955e05a9bde003eaddba6c49fea138c215ca0ad9b0876949743fcbfe3f4753fe063a19339729a289a751bc8572f2e59d007f770ca8d1ab5e66841971e3"
|
|
889
889
|
}
|
|
890
890
|
]
|
|
891
891
|
},
|
|
@@ -1391,11 +1391,11 @@
|
|
|
1391
1391
|
"hashes": [
|
|
1392
1392
|
{
|
|
1393
1393
|
"alg": "SHA-256",
|
|
1394
|
-
"content": "
|
|
1394
|
+
"content": "b7ace475bc015e13890ed08de28a94195f7672ea7c0dbc08ca2dc62bda78d291"
|
|
1395
1395
|
},
|
|
1396
1396
|
{
|
|
1397
1397
|
"alg": "SHA3-512",
|
|
1398
|
-
"content": "
|
|
1398
|
+
"content": "216e86bd9b695771287f29797d07cbef1f7cff4bdffa30749c351ec654e62888c7857a29c48b2fe09809c610f3522219712a322437d92c00bf8b6e8954431c74"
|
|
1399
1399
|
}
|
|
1400
1400
|
]
|
|
1401
1401
|
},
|
|
@@ -1451,11 +1451,11 @@
|
|
|
1451
1451
|
"hashes": [
|
|
1452
1452
|
{
|
|
1453
1453
|
"alg": "SHA-256",
|
|
1454
|
-
"content": "
|
|
1454
|
+
"content": "ed49d69da4ef5acb4fd827deaaaf280bd6317a5defa96f6fa5696dc96c2929b4"
|
|
1455
1455
|
},
|
|
1456
1456
|
{
|
|
1457
1457
|
"alg": "SHA3-512",
|
|
1458
|
-
"content": "
|
|
1458
|
+
"content": "cee40245e9bb979c399942241faf038e95adb38ad66b6f3e70ba6034b78f774241310369773bd9ab36ceb0af1fe92e8f8b7e9b9965b3f629ab2847152f892530"
|
|
1459
1459
|
}
|
|
1460
1460
|
]
|
|
1461
1461
|
},
|
|
@@ -1751,11 +1751,11 @@
|
|
|
1751
1751
|
"hashes": [
|
|
1752
1752
|
{
|
|
1753
1753
|
"alg": "SHA-256",
|
|
1754
|
-
"content": "
|
|
1754
|
+
"content": "4359446f2ab6bfb0484b716ca15b81755ca4075d941b0c8caa5d2d4ad1c4f0a7"
|
|
1755
1755
|
},
|
|
1756
1756
|
{
|
|
1757
1757
|
"alg": "SHA3-512",
|
|
1758
|
-
"content": "
|
|
1758
|
+
"content": "26d55c25bbbc0e76e1592fd5633b87858c6cf3ba281e0d6b19ce17761af9468992564c0f040110e541a63492f384e3c982c3afd5f4a05596a08f03e9c93ca2fa"
|
|
1759
1759
|
}
|
|
1760
1760
|
]
|
|
1761
1761
|
},
|