@blamejs/exceptd-skills 0.18.14 → 0.18.15
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 +8 -0
- package/data/_indexes/_meta.json +2 -2
- package/data/playbooks/citation-hygiene.json +2 -2
- package/data/playbooks/crypto-codebase.json +2 -2
- package/data/playbooks/idp-incident.json +1 -1
- package/data/playbooks/mcp.json +1 -1
- package/lib/playbook-runner.js +35 -1
- package/lib/validate-playbooks.js +59 -4
- package/manifest.json +53 -53
- package/package.json +1 -1
- package/sbom.cdx.json +24 -24
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.18.15 — 2026-06-22
|
|
4
|
+
|
|
5
|
+
Indicator-gated escalations and playbook chains now fire when their indicators are detected. An escalation or `feeds_into` written as `<indicator-id> == true` (the catalog's standard form) resolved only when that id was also passed as a raw signal; the normal scan path delivers detections separately, so on a real `exceptd collect <playbook>` these escalations and downstream chains stayed silent even when the indicator was found. Fired indicators are now bound into the escalation, chain, and remediation-precondition contexts, so a detection drives the condition that gates on it. An operator can still override a specific indicator, and engine-computed values still take precedence.
|
|
6
|
+
|
|
7
|
+
Six more compound escalations now fire. Each combined a working clause (`rwep >= 90`, `blast_radius_score >= 4`, a theater verdict) with a second clause written in prose or shorthand the engine cannot evaluate; because the working clause came first and evaluation stopped at the first clause that resolved, the dead second clause went unnoticed. The compound conditions are now fully expressed in the condition language and gate on the playbook's real indicators.
|
|
8
|
+
|
|
9
|
+
The validator's condition gate now checks every sub-clause of an AND/OR condition independently, so a dead clause hidden behind a clause that happens to resolve first can no longer ship.
|
|
10
|
+
|
|
3
11
|
## 0.18.14 — 2026-06-22
|
|
4
12
|
|
|
5
13
|
Severity escalations, downstream-playbook chaining, and remediation-path preconditions now fire as authored across the playbook catalog. A number of these conditions had been written as free-text English or in a shorthand the engine does not evaluate, so they returned false for every input and silently never triggered — a raise-severity rule, a `feeds_into` chain into a deeper playbook, or a remediation precondition that looked active but never fired. Every such condition is now expressed in the engine's condition language and verified to evaluate against the indicators it gates on.
|
package/data/_indexes/_meta.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.1.0",
|
|
3
|
-
"generated_at": "2026-06-
|
|
3
|
+
"generated_at": "2026-06-22T15:58:38.839Z",
|
|
4
4
|
"generator": "scripts/build-indexes.js",
|
|
5
5
|
"source_count": 64,
|
|
6
6
|
"source_hashes": {
|
|
7
|
-
"manifest.json": "
|
|
7
|
+
"manifest.json": "06e97688670822402c8878d854e06f6790969a0a8a3c119e3aa5bef7d8c7e2d3",
|
|
8
8
|
"README.md": "e7b854e7db9a364a1b368b5084b4f0c2a8282f0459ce39800ac1d1dabdc06074",
|
|
9
9
|
"data/atlas-ttps.json": "5bc59e23d6c2defa54168de161a0825299b9cc4a49c6b26df2dae70b4f42eedf",
|
|
10
10
|
"data/attack-techniques.json": "53c6f248760eecb11a0354f74ab467a5814e95075a686b9b3bf18c34e2f7435e",
|
|
@@ -533,11 +533,11 @@
|
|
|
533
533
|
],
|
|
534
534
|
"escalation_criteria": [
|
|
535
535
|
{
|
|
536
|
-
"condition": "blast_radius_score >= 3 AND
|
|
536
|
+
"condition": "blast_radius_score >= 3 AND fabricated-cve-id == true",
|
|
537
537
|
"action": "raise_severity"
|
|
538
538
|
},
|
|
539
539
|
{
|
|
540
|
-
"condition": "compliance_theater_check.verdict == 'theater' AND
|
|
540
|
+
"condition": "compliance_theater_check.verdict == 'theater' AND (fabricated-cve-id == true OR rejected-or-disputed-cve == true)",
|
|
541
541
|
"action": "trigger_playbook",
|
|
542
542
|
"target_playbook": "framework"
|
|
543
543
|
},
|
|
@@ -930,11 +930,11 @@
|
|
|
930
930
|
],
|
|
931
931
|
"escalation_criteria": [
|
|
932
932
|
{
|
|
933
|
-
"condition": "blast_radius_score >= 4 AND
|
|
933
|
+
"condition": "blast_radius_score >= 4 AND (weak-hash-import == true OR weak-cipher-mode == true OR rsa-1024-anywhere == true OR math-random-in-security-path == true OR pbkdf2-under-iterated == true OR bcrypt-cost-low == true OR no-ml-kem-implementation == true OR fips-claim-without-runtime-activation == true OR hardcoded-key-material == true OR tls-old-protocol == true)",
|
|
934
934
|
"action": "raise_severity"
|
|
935
935
|
},
|
|
936
936
|
{
|
|
937
|
-
"condition": "rwep >= 75 AND
|
|
937
|
+
"condition": "rwep >= 75 AND blast_radius_score >= 4",
|
|
938
938
|
"action": "page_on_call"
|
|
939
939
|
},
|
|
940
940
|
{
|
package/data/playbooks/mcp.json
CHANGED
package/lib/playbook-runner.js
CHANGED
|
@@ -953,6 +953,31 @@ function detect(playbookId, directiveId, agentSubmission = {}, runOpts = {}) {
|
|
|
953
953
|
|
|
954
954
|
// --- phase 5: analyze ---
|
|
955
955
|
|
|
956
|
+
/**
|
|
957
|
+
* Mirror the FIRED detect indicators (verdict === 'hit') into a flat
|
|
958
|
+
* `{ <indicator-id>: true }` map for the escalation / feeds_into / precondition
|
|
959
|
+
* eval contexts. Indicator hits arrive from the collector / AI evidence path as
|
|
960
|
+
* `signal_overrides` (which detect() reads); the condition contexts spread
|
|
961
|
+
* `agentSubmission.signals`, NOT signal_overrides — so an escalation written as
|
|
962
|
+
* `<indicator-id> == true` (the catalog's canonical form) stayed false even when
|
|
963
|
+
* that indicator DETECTED, unless the operator redundantly re-submitted the id
|
|
964
|
+
* under `signals`. The standard `exceptd collect <playbook>` path never does
|
|
965
|
+
* that, so the entire indicator-gated escalation/chain layer was dead on the
|
|
966
|
+
* real evidence path. Mirroring fired indicators here binds the condition layer
|
|
967
|
+
* to the detect layer. Only verdict 'hit' (FP-checks satisfied) is mirrored — an
|
|
968
|
+
* 'inconclusive' indicator is unconfirmed and must not fire an escalation. The
|
|
969
|
+
* map is spread with the LOWEST precedence (before agentSignals, which is before
|
|
970
|
+
* the engine roots) so an operator can still override a specific id and the
|
|
971
|
+
* engine-computed values always win.
|
|
972
|
+
*/
|
|
973
|
+
function firedIndicatorSignals(detectIndicators) {
|
|
974
|
+
const out = {};
|
|
975
|
+
for (const ind of (detectIndicators || [])) {
|
|
976
|
+
if (ind && ind.verdict === 'hit' && typeof ind.id === 'string') out[ind.id] = true;
|
|
977
|
+
}
|
|
978
|
+
return out;
|
|
979
|
+
}
|
|
980
|
+
|
|
956
981
|
/**
|
|
957
982
|
* RWEP composition + blast-radius scoring + theater check + framework gap
|
|
958
983
|
* mapping + escalation evaluation. Inputs are the detect result + any
|
|
@@ -1490,7 +1515,7 @@ function analyze(playbookId, directiveId, detectResult, agentSignals = {}, runOp
|
|
|
1490
1515
|
findingShape = {};
|
|
1491
1516
|
}
|
|
1492
1517
|
for (const ec of an.escalation_criteria || []) {
|
|
1493
|
-
if (evalCondition(ec.condition, { ...agentSignals, ...evalCtxRoot, rwep: adjustedRwep, blast_radius_score: blastRadiusScore, theater_verdict: theaterVerdict, compliance_theater_check: result.compliance_theater_check, jurisdiction_obligations: (playbook.phases && playbook.phases.govern && playbook.phases.govern.jurisdiction_obligations) || [], analyze: result, matched_cve: result.matched_cves || [],
|
|
1518
|
+
if (evalCondition(ec.condition, { ...firedIndicatorSignals(detectResult.indicators), ...agentSignals, ...evalCtxRoot, rwep: adjustedRwep, blast_radius_score: blastRadiusScore, theater_verdict: theaterVerdict, compliance_theater_check: result.compliance_theater_check, jurisdiction_obligations: (playbook.phases && playbook.phases.govern && playbook.phases.govern.jurisdiction_obligations) || [], analyze: result, matched_cve: result.matched_cves || [],
|
|
1494
1519
|
// finding.* is two-sourced: the engine computes the CVE/severity-derived
|
|
1495
1520
|
// keys (severity, rwep_adjusted, matched_cve_*, blast_radius_score,
|
|
1496
1521
|
// active_exploitation, framework/control_id_first) via analyzeFindingShape,
|
|
@@ -1596,6 +1621,10 @@ function validate(playbookId, directiveId, analyzeResult, agentSignals = {}, run
|
|
|
1596
1621
|
let findingShape = {};
|
|
1597
1622
|
try { findingShape = analyzeFindingShape(analyzeResult || {}); } catch { findingShape = {}; }
|
|
1598
1623
|
const evalCtx = {
|
|
1624
|
+
// Fired detect indicators mirrored in (lowest precedence) so a precondition
|
|
1625
|
+
// referencing an indicator id resolves on the collector path. See
|
|
1626
|
+
// firedIndicatorSignals.
|
|
1627
|
+
...firedIndicatorSignals(analyzeResult && analyzeResult._detect_indicators),
|
|
1599
1628
|
...agentSignals,
|
|
1600
1629
|
rwep: analyzeResult && analyzeResult.rwep ? analyzeResult.rwep.adjusted : undefined,
|
|
1601
1630
|
blast_radius_score: analyzeResult ? analyzeResult.blast_radius_score : undefined,
|
|
@@ -2083,6 +2112,11 @@ function close(playbookId, directiveId, analyzeResult, validateResult, agentSign
|
|
|
2083
2112
|
// feeds_into chaining — full analyze result is exposed so conditions can
|
|
2084
2113
|
// reference `analyze.compliance_theater_check.verdict` etc.
|
|
2085
2114
|
const feedsCtx = {
|
|
2115
|
+
// Fired detect indicators (verdict 'hit') mirrored in so a feeds_into
|
|
2116
|
+
// condition written as `<indicator-id> == true` resolves on the standard
|
|
2117
|
+
// collector path (signal_overrides), not only when the id is re-submitted
|
|
2118
|
+
// under signals. Lowest precedence — operator signals and engine values win.
|
|
2119
|
+
...firedIndicatorSignals(analyzeResult && analyzeResult._detect_indicators),
|
|
2086
2120
|
// Operator-submitted signals come FIRST so the engine-computed reserved
|
|
2087
2121
|
// keys below always win — otherwise a submitted signals.rwep / finding /
|
|
2088
2122
|
// analyze would override the engine value the feeds_into condition tests
|
|
@@ -95,6 +95,55 @@ const { safeExit } = require('./exit-codes');
|
|
|
95
95
|
let _evalCondition = null;
|
|
96
96
|
try { ({ _evalCondition } = require('./playbook-runner')); } catch { /* warned at the gate */ }
|
|
97
97
|
|
|
98
|
+
// Decompose a condition into its leaf atoms the SAME way evalCondition does —
|
|
99
|
+
// strip wrapping parens, split on top-level OR (lowest precedence), then on
|
|
100
|
+
// top-level AND, quote- and depth-aware. This exists because evalCondition
|
|
101
|
+
// evaluates AND via `.every` / OR via `.some`, which SHORT-CIRCUIT: a dead
|
|
102
|
+
// (unparseable) sub-clause behind a leading clause that resolves false (AND) or
|
|
103
|
+
// true (OR) in the empty validation context is never reached, so running the
|
|
104
|
+
// whole condition once never surfaces its condition_unparsed. Atomizing and
|
|
105
|
+
// parse-checking each leaf independently catches a dead sub-clause regardless of
|
|
106
|
+
// short-circuit (e.g. `blast_radius_score >= 3 AND any deterministic indicator
|
|
107
|
+
// fires` — the first clause is false with no signals, so the dead prose second
|
|
108
|
+
// clause never parsed). Mirrors evalCondition's splitAtTopLevel / stripOuterParens.
|
|
109
|
+
function _splitTopLevel(expr, sep) {
|
|
110
|
+
const parts = []; const needle = ' ' + sep + ' ';
|
|
111
|
+
let depth = 0, buf = '', i = 0, quote = null;
|
|
112
|
+
while (i < expr.length) {
|
|
113
|
+
const ch = expr[i];
|
|
114
|
+
if (quote) { if (ch === '\\' && i + 1 < expr.length) { buf += ch + expr[i + 1]; i += 2; continue; } if (ch === quote) quote = null; buf += ch; i++; continue; }
|
|
115
|
+
if (ch === "'" || ch === '"') { quote = ch; buf += ch; i++; continue; }
|
|
116
|
+
if (ch === '(') { depth++; buf += ch; i++; continue; }
|
|
117
|
+
if (ch === ')') { depth--; buf += ch; i++; continue; }
|
|
118
|
+
if (depth === 0 && expr.startsWith(needle, i)) { parts.push(buf.trim()); buf = ''; i += needle.length; continue; }
|
|
119
|
+
buf += ch; i++;
|
|
120
|
+
}
|
|
121
|
+
parts.push(buf.trim());
|
|
122
|
+
return parts;
|
|
123
|
+
}
|
|
124
|
+
function _stripWrappingParens(e) {
|
|
125
|
+
e = e.trim();
|
|
126
|
+
while (e.startsWith('(') && e.endsWith(')')) {
|
|
127
|
+
let d = 0, wraps = true;
|
|
128
|
+
for (let i = 0; i < e.length; i++) {
|
|
129
|
+
if (e[i] === '(') d++;
|
|
130
|
+
else if (e[i] === ')') { d--; if (d === 0 && i < e.length - 1) { wraps = false; break; } }
|
|
131
|
+
}
|
|
132
|
+
if (wraps) e = e.slice(1, -1).trim(); else break;
|
|
133
|
+
}
|
|
134
|
+
return e;
|
|
135
|
+
}
|
|
136
|
+
function atomizeCondition(cond) {
|
|
137
|
+
const atoms = [];
|
|
138
|
+
(function rec(e) {
|
|
139
|
+
e = _stripWrappingParens(e);
|
|
140
|
+
const ors = _splitTopLevel(e, 'OR'); if (ors.length > 1) { ors.forEach(rec); return; }
|
|
141
|
+
const ands = _splitTopLevel(e, 'AND'); if (ands.length > 1) { ands.forEach(rec); return; }
|
|
142
|
+
atoms.push(e);
|
|
143
|
+
})(cond);
|
|
144
|
+
return atoms;
|
|
145
|
+
}
|
|
146
|
+
|
|
98
147
|
const REPO_ROOT = path.resolve(__dirname, '..');
|
|
99
148
|
const SCHEMA_PATH = path.join(REPO_ROOT, 'lib', 'schemas', 'playbook.schema.json');
|
|
100
149
|
const PLAYBOOKS_DIR = path.join(REPO_ROOT, 'data', 'playbooks');
|
|
@@ -597,10 +646,16 @@ function checkCrossRefs(playbook, ctx, playbookIds) {
|
|
|
597
646
|
const conditionParses = (cond) => {
|
|
598
647
|
if (typeof cond !== 'string' || !cond.trim()) return true;
|
|
599
648
|
if (!_evalCondition) return true; // engine unavailable — warned above, never a silent error-skip
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
649
|
+
// Check EACH atomic leaf, not the whole condition once: evalCondition's
|
|
650
|
+
// AND/OR short-circuit hides a dead sub-clause behind a leading clause that
|
|
651
|
+
// resolves false (AND) / true (OR) in the empty validation context.
|
|
652
|
+
for (const atom of atomizeCondition(cond)) {
|
|
653
|
+
const runErrors = [];
|
|
654
|
+
try { _evalCondition(atom, { _runErrors: runErrors }, { _runErrors: runErrors }); }
|
|
655
|
+
catch { continue; } // an evaluator throw is a separate concern, not "unparseable"
|
|
656
|
+
if (runErrors.some((e) => e && e.kind === 'condition_unparsed')) return false;
|
|
657
|
+
}
|
|
658
|
+
return true;
|
|
604
659
|
};
|
|
605
660
|
for (const [i, ec] of (((phases.analyze || {}).escalation_criteria) || []).entries()) {
|
|
606
661
|
if (ec && typeof ec === 'object' && !conditionParses(ec.condition)) {
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exceptd-security",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.15",
|
|
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",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
],
|
|
58
58
|
"last_threat_review": "2026-05-15",
|
|
59
59
|
"signature": "0H+JfyUVmo/pVFEi5rLENATHjlukPVUqnOWmNPEH77wm8svKGK0aNJ46k6QU5GdHb8c9X9pVJKiuhON6AxDjDw==",
|
|
60
|
-
"signed_at": "2026-06-
|
|
60
|
+
"signed_at": "2026-06-22T15:58:37.527Z",
|
|
61
61
|
"cwe_refs": [
|
|
62
62
|
"CWE-125",
|
|
63
63
|
"CWE-362",
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
],
|
|
134
134
|
"last_threat_review": "2026-06-10",
|
|
135
135
|
"signature": "WfqxU2x/feWgatYrCeO9PD3dIY0FAfs4nkVdQRac4fg5BDQPG/vhzhvYVN6Mg11oITACghbPOtZXvS37sACsCA==",
|
|
136
|
-
"signed_at": "2026-06-
|
|
136
|
+
"signed_at": "2026-06-22T15:58:37.529Z",
|
|
137
137
|
"cwe_refs": [
|
|
138
138
|
"CWE-1039",
|
|
139
139
|
"CWE-1426",
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
],
|
|
216
216
|
"last_threat_review": "2026-06-10",
|
|
217
217
|
"signature": "9bNOW4MzmUlFgkXH5tIZkq8YpzhMM+r8YVcNEM39kdEZwfRNG4Bj+Dgr7v4Qgp9D4q7hGNFpK0ywX+dPd3VWAg==",
|
|
218
|
-
"signed_at": "2026-06-
|
|
218
|
+
"signed_at": "2026-06-22T15:58:37.529Z",
|
|
219
219
|
"cwe_refs": [
|
|
220
220
|
"CWE-22",
|
|
221
221
|
"CWE-345",
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
"framework_gaps": [],
|
|
270
270
|
"last_threat_review": "2026-06-10",
|
|
271
271
|
"signature": "5A08+nAu5jwNQ1+vGbFgFAJA/kYD3oiaevhCxT4/2FeW++F070Pm4MD1+oXdv8R2DbtYr+7yXnCGM7UbUPR2AA==",
|
|
272
|
-
"signed_at": "2026-06-
|
|
272
|
+
"signed_at": "2026-06-22T15:58:37.530Z"
|
|
273
273
|
},
|
|
274
274
|
{
|
|
275
275
|
"name": "compliance-theater",
|
|
@@ -301,7 +301,7 @@
|
|
|
301
301
|
],
|
|
302
302
|
"last_threat_review": "2026-06-10",
|
|
303
303
|
"signature": "RCgbI0sMNTKAscXUtrVU25u7OuE64uQvO5JKsB8vIJFWguvT6nZyD7euKuIxIzYhLTyHBiD7Rhp70btlK+JkCg==",
|
|
304
|
-
"signed_at": "2026-06-
|
|
304
|
+
"signed_at": "2026-06-22T15:58:37.530Z"
|
|
305
305
|
},
|
|
306
306
|
{
|
|
307
307
|
"name": "exploit-scoring",
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
],
|
|
333
333
|
"last_threat_review": "2026-06-10",
|
|
334
334
|
"signature": "JJrs+B22/hYxvdYs+abmoire5PbQXPb2uVYyjInZ3UbT8gEjs/5SyfGKx7z86jbtvB3ItApQVAx1AuseIgdyAQ==",
|
|
335
|
-
"signed_at": "2026-06-
|
|
335
|
+
"signed_at": "2026-06-22T15:58:37.531Z"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"name": "rag-pipeline-security",
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
],
|
|
375
375
|
"last_threat_review": "2026-06-10",
|
|
376
376
|
"signature": "Z6WbTqG98bQVRd6+kXDb6xIEe0ZryAeGxVSuKKxdK1PoZqew7NJcMsa6sJVSq+0r7KMsFwfTEdKorp6UDdhpCA==",
|
|
377
|
-
"signed_at": "2026-06-
|
|
377
|
+
"signed_at": "2026-06-22T15:58:37.531Z",
|
|
378
378
|
"cwe_refs": [
|
|
379
379
|
"CWE-1395",
|
|
380
380
|
"CWE-1426"
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
],
|
|
442
442
|
"last_threat_review": "2026-06-10",
|
|
443
443
|
"signature": "DLKcrgon+MZrqmivlFLBH4vlzZbJSW1531RsYDm9/KdW2CgcUUHwNMSzAfU1mAsFwFkAHjy/a8e1FbS9msTvDA==",
|
|
444
|
-
"signed_at": "2026-06-
|
|
444
|
+
"signed_at": "2026-06-22T15:58:37.531Z",
|
|
445
445
|
"cwe_refs": [
|
|
446
446
|
"CWE-918"
|
|
447
447
|
],
|
|
@@ -482,7 +482,7 @@
|
|
|
482
482
|
"framework_gaps": [],
|
|
483
483
|
"last_threat_review": "2026-06-10",
|
|
484
484
|
"signature": "eWCOD+mR1c6B8vKDBot8y8UkQrKPCIEBHU3JRQET9xZnYGx8hrOyeRUElcKqCO5aG/2LISs9Atg1H+ehWDNbCw==",
|
|
485
|
-
"signed_at": "2026-06-
|
|
485
|
+
"signed_at": "2026-06-22T15:58:37.532Z",
|
|
486
486
|
"cwe_refs": [
|
|
487
487
|
"CWE-1188"
|
|
488
488
|
],
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
"framework_gaps": [],
|
|
518
518
|
"last_threat_review": "2026-06-10",
|
|
519
519
|
"signature": "kZca725/+BFr1mpxL29+cGzjqsiYhChWScf7VjU6vCTBZrmCps6W9gYYjf4lVORXaM4DAg3UVBOXyhpTst0rAw==",
|
|
520
|
-
"signed_at": "2026-06-
|
|
520
|
+
"signed_at": "2026-06-22T15:58:37.532Z",
|
|
521
521
|
"forward_watch": [
|
|
522
522
|
"New AI attack classes as ATLAS v6 publishes",
|
|
523
523
|
"Post-quantum adversary capability timeline",
|
|
@@ -557,7 +557,7 @@
|
|
|
557
557
|
"framework_gaps": [],
|
|
558
558
|
"last_threat_review": "2026-05-01",
|
|
559
559
|
"signature": "b5miTiY0cnxETd2btxorfZBdJKt/fLnQx20sGYUb9zEqGqtm0LMLpghkW68j4/9k48KNyuGMtNWiKTSnodUGBw==",
|
|
560
|
-
"signed_at": "2026-06-
|
|
560
|
+
"signed_at": "2026-06-22T15:58:37.533Z"
|
|
561
561
|
},
|
|
562
562
|
{
|
|
563
563
|
"name": "zeroday-gap-learn",
|
|
@@ -584,7 +584,7 @@
|
|
|
584
584
|
"framework_gaps": [],
|
|
585
585
|
"last_threat_review": "2026-06-10",
|
|
586
586
|
"signature": "NVBY4I5a+v2/nUeCYcy3LLVKk3Tg9gmz+sCKyvnf8t2fXMNSIGtoy+P8K4Gfos1rGzRRMaU01V7L4kh/IQ8UBQ==",
|
|
587
|
-
"signed_at": "2026-06-
|
|
587
|
+
"signed_at": "2026-06-22T15:58:37.533Z",
|
|
588
588
|
"forward_watch": [
|
|
589
589
|
"New CISA KEV entries",
|
|
590
590
|
"New ATLAS TTP additions in each ATLAS release",
|
|
@@ -652,7 +652,7 @@
|
|
|
652
652
|
],
|
|
653
653
|
"last_threat_review": "2026-06-10",
|
|
654
654
|
"signature": "U54OxIjPT+W9yafjpeFgY7klXMltLYBuSCtu/AAlXxOIPehJrbf/vbGgnBn58nqOd7RjoKjmKz9WQs4DMqWcDw==",
|
|
655
|
-
"signed_at": "2026-06-
|
|
655
|
+
"signed_at": "2026-06-22T15:58:37.534Z",
|
|
656
656
|
"cwe_refs": [
|
|
657
657
|
"CWE-327"
|
|
658
658
|
],
|
|
@@ -702,7 +702,7 @@
|
|
|
702
702
|
],
|
|
703
703
|
"last_threat_review": "2026-06-10",
|
|
704
704
|
"signature": "QsJMwvnUJXHwoBPJ4BiUx3FO9giXfos/sMbx5tyO83AJ2JxdVskeC6g/WDfO+rVkWNXRgWi4h1eSYz6T8/tpAg==",
|
|
705
|
-
"signed_at": "2026-06-
|
|
705
|
+
"signed_at": "2026-06-22T15:58:37.534Z"
|
|
706
706
|
},
|
|
707
707
|
{
|
|
708
708
|
"name": "security-maturity-tiers",
|
|
@@ -740,7 +740,7 @@
|
|
|
740
740
|
],
|
|
741
741
|
"last_threat_review": "2026-05-01",
|
|
742
742
|
"signature": "8KbLVVPI1QgYa+HAnEYvKf1cXnxQ3zsncqTGrAOrBP4rwUeZsxJm8KyFCwI0XytnZG35PZ830BFlG/okPW3sBQ==",
|
|
743
|
-
"signed_at": "2026-06-
|
|
743
|
+
"signed_at": "2026-06-22T15:58:37.535Z",
|
|
744
744
|
"cwe_refs": [
|
|
745
745
|
"CWE-1188"
|
|
746
746
|
]
|
|
@@ -776,7 +776,7 @@
|
|
|
776
776
|
"framework_gaps": [],
|
|
777
777
|
"last_threat_review": "2026-05-11",
|
|
778
778
|
"signature": "iJWevUBurLvt2v8X+Ch2eHmZkPWpKeAtIpxTIP4MwbUHyco3igDeBywJCyaR2vURYRx8LkzzIMM8DxQM4LAXBQ==",
|
|
779
|
-
"signed_at": "2026-06-
|
|
779
|
+
"signed_at": "2026-06-22T15:58:37.535Z"
|
|
780
780
|
},
|
|
781
781
|
{
|
|
782
782
|
"name": "attack-surface-pentest",
|
|
@@ -852,7 +852,7 @@
|
|
|
852
852
|
"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"
|
|
853
853
|
],
|
|
854
854
|
"signature": "ZnFi+Rk4CWrjFEVU4hC6Q66UbDmndNL/ICLWQNA1TQYFGSTnng+nboM4tfi6h0yMbbDj7dOXYqqeHNK+M5ZiBA==",
|
|
855
|
-
"signed_at": "2026-06-
|
|
855
|
+
"signed_at": "2026-06-22T15:58:37.536Z"
|
|
856
856
|
},
|
|
857
857
|
{
|
|
858
858
|
"name": "fuzz-testing-strategy",
|
|
@@ -913,7 +913,7 @@
|
|
|
913
913
|
"OSS-Fuzz-Gen / AI-assisted harness generation becoming the default expectation for OSS maintainers"
|
|
914
914
|
],
|
|
915
915
|
"signature": "45ICz7vcnmHYE1+RIDv8wQjScKj6p8hqJQ5m6I0tDdKVnGdMXCYIgZnYqFJgHBDXYAXlGx7D7UxhFz6WOCDqAQ==",
|
|
916
|
-
"signed_at": "2026-06-
|
|
916
|
+
"signed_at": "2026-06-22T15:58:37.536Z"
|
|
917
917
|
},
|
|
918
918
|
{
|
|
919
919
|
"name": "dlp-gap-analysis",
|
|
@@ -991,7 +991,7 @@
|
|
|
991
991
|
"Quebec Law 25, India DPDPA, KSA PDPL enforcement actions naming AI-tool prompt data as in-scope personal information"
|
|
992
992
|
],
|
|
993
993
|
"signature": "k6A7QcFEzgGXYWftt/elhQe7kU4F67c0ol3a8DZfj1XW4UrH99SLhPHr6ih3R3EYCl/Ey/zXt/x3a9fDT3RmAw==",
|
|
994
|
-
"signed_at": "2026-06-
|
|
994
|
+
"signed_at": "2026-06-22T15:58:37.536Z"
|
|
995
995
|
},
|
|
996
996
|
{
|
|
997
997
|
"name": "supply-chain-integrity",
|
|
@@ -1075,7 +1075,7 @@
|
|
|
1075
1075
|
"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"
|
|
1076
1076
|
],
|
|
1077
1077
|
"signature": "5shKqNcLC8Obt0EdvKnck8OwWIuRMgZuuZd12pvWqJIltsYMyTrw2M+lgbQfqg3x2KO6qsJljGAhTew5jM58DQ==",
|
|
1078
|
-
"signed_at": "2026-06-
|
|
1078
|
+
"signed_at": "2026-06-22T15:58:37.537Z"
|
|
1079
1079
|
},
|
|
1080
1080
|
{
|
|
1081
1081
|
"name": "defensive-countermeasure-mapping",
|
|
@@ -1132,7 +1132,7 @@
|
|
|
1132
1132
|
],
|
|
1133
1133
|
"last_threat_review": "2026-06-10",
|
|
1134
1134
|
"signature": "lfa5Wgep26mK3o2ZSe5qN2vVxg+xRRURRpmnqP4JdQvvecW3T2+PxHqjT48DegXJHRXJ6DPzyIElFc7no86TAg==",
|
|
1135
|
-
"signed_at": "2026-06-
|
|
1135
|
+
"signed_at": "2026-06-22T15:58:37.537Z"
|
|
1136
1136
|
},
|
|
1137
1137
|
{
|
|
1138
1138
|
"name": "identity-assurance",
|
|
@@ -1206,7 +1206,7 @@
|
|
|
1206
1206
|
],
|
|
1207
1207
|
"last_threat_review": "2026-05-11",
|
|
1208
1208
|
"signature": "UV3458QXSkEpenzrOmdlTTfPHUD4hNyKMDHoeZDq/kiFb4mAG0ghQGTTgI9Ru8cJbSmYM1++m9N5TFIJ6JJPBg==",
|
|
1209
|
-
"signed_at": "2026-06-
|
|
1209
|
+
"signed_at": "2026-06-22T15:58:37.537Z"
|
|
1210
1210
|
},
|
|
1211
1211
|
{
|
|
1212
1212
|
"name": "ot-ics-security",
|
|
@@ -1265,7 +1265,7 @@
|
|
|
1265
1265
|
"d3fend_refs": [],
|
|
1266
1266
|
"last_threat_review": "2026-06-10",
|
|
1267
1267
|
"signature": "afJ00EDXgARQJrbRqN6xe1+E/kbHF7O2fxQFVvrLLXdrKfK86RK/oJU1AwpxX6mclX9f+5ivy6FvFIuRMA4dBQ==",
|
|
1268
|
-
"signed_at": "2026-06-
|
|
1268
|
+
"signed_at": "2026-06-22T15:58:37.538Z"
|
|
1269
1269
|
},
|
|
1270
1270
|
{
|
|
1271
1271
|
"name": "coordinated-vuln-disclosure",
|
|
@@ -1325,7 +1325,7 @@
|
|
|
1325
1325
|
"NYDFS 23 NYCRR 500 amendments potentially adding explicit CVD program requirements"
|
|
1326
1326
|
],
|
|
1327
1327
|
"signature": "VzivMW82mRrG9+07ZX8sj4j9O9YjE/m07m1UHgSwEgex+FLaVPvIj3y1Vk6qeFOvDURmtVaztWlpSlk7iSn0DA==",
|
|
1328
|
-
"signed_at": "2026-06-
|
|
1328
|
+
"signed_at": "2026-06-22T15:58:37.538Z"
|
|
1329
1329
|
},
|
|
1330
1330
|
{
|
|
1331
1331
|
"name": "threat-modeling-methodology",
|
|
@@ -1379,7 +1379,7 @@
|
|
|
1379
1379
|
"PASTA v2 updates incorporating AI/ML application threats"
|
|
1380
1380
|
],
|
|
1381
1381
|
"signature": "Fk5LzzeS/bH5SQJNySgZqSdeQf1udwdRs3FVLwig5kuqyyKkuIJcF4HW+xHF/1e66HR+gjgRUoqWZGsv58lLAg==",
|
|
1382
|
-
"signed_at": "2026-06-
|
|
1382
|
+
"signed_at": "2026-06-22T15:58:37.538Z"
|
|
1383
1383
|
},
|
|
1384
1384
|
{
|
|
1385
1385
|
"name": "webapp-security",
|
|
@@ -1462,7 +1462,7 @@
|
|
|
1462
1462
|
],
|
|
1463
1463
|
"last_threat_review": "2026-06-10",
|
|
1464
1464
|
"signature": "1skHJsPPOIXLQdU5MGHirP/Q07aCYTirtDmfWDO7ZNuto58NlCttW5ZjCpyh37vASlMljIZx0/R+PIl2PfwTBw==",
|
|
1465
|
-
"signed_at": "2026-06-
|
|
1465
|
+
"signed_at": "2026-06-22T15:58:37.539Z",
|
|
1466
1466
|
"forward_watch": [
|
|
1467
1467
|
"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"
|
|
1468
1468
|
]
|
|
@@ -1522,7 +1522,7 @@
|
|
|
1522
1522
|
],
|
|
1523
1523
|
"last_threat_review": "2026-05-15",
|
|
1524
1524
|
"signature": "SBB7c3wNYfIdkyOp4g4nW0WP7xS+YokMzg32aaeJdbf14LTGQRzQUvSqb2TCj2HFUSHESOyKT1JpkAfyHLSQBQ==",
|
|
1525
|
-
"signed_at": "2026-06-
|
|
1525
|
+
"signed_at": "2026-06-22T15:58:37.539Z"
|
|
1526
1526
|
},
|
|
1527
1527
|
{
|
|
1528
1528
|
"name": "sector-healthcare",
|
|
@@ -1589,7 +1589,7 @@
|
|
|
1589
1589
|
],
|
|
1590
1590
|
"last_threat_review": "2026-06-10",
|
|
1591
1591
|
"signature": "yyAGG3nUC6/XWQGRF2ufzILfiJitMFczqWNY83lZShCgYSxfFCul0UsICClOc7Xjw76052uydm8kLH9gIzhsAg==",
|
|
1592
|
-
"signed_at": "2026-06-
|
|
1592
|
+
"signed_at": "2026-06-22T15:58:37.540Z"
|
|
1593
1593
|
},
|
|
1594
1594
|
{
|
|
1595
1595
|
"name": "sector-financial",
|
|
@@ -1678,7 +1678,7 @@
|
|
|
1678
1678
|
"TIBER-EU framework v2.0 alignment with DORA TLPT RTS (JC 2024/40); cross-recognition with CBEST and iCAST"
|
|
1679
1679
|
],
|
|
1680
1680
|
"signature": "/+df91Qhl1TIxEAqzgqB7+YJ6mneX6Dif+h6RaCbxOLGE6KRTFst1Q/Fu5SStt8Zx5JI62bkQ2BBrNOKfUlPBg==",
|
|
1681
|
-
"signed_at": "2026-06-
|
|
1681
|
+
"signed_at": "2026-06-22T15:58:37.540Z"
|
|
1682
1682
|
},
|
|
1683
1683
|
{
|
|
1684
1684
|
"name": "sector-federal-government",
|
|
@@ -1755,7 +1755,7 @@
|
|
|
1755
1755
|
"Australia PSPF 2024 revision and ISM quarterly updates — track for Essential Eight Maturity Level requirements for federal entities"
|
|
1756
1756
|
],
|
|
1757
1757
|
"signature": "k6MAPS8HJivu0DNwC1azPvyKeig2xLGz/hcqYd8T+s5GvIypPGfkeYRRKmdqMgHUe24f7bQeRZ7AxcQ9Bi6SCg==",
|
|
1758
|
-
"signed_at": "2026-06-
|
|
1758
|
+
"signed_at": "2026-06-22T15:58:37.541Z"
|
|
1759
1759
|
},
|
|
1760
1760
|
{
|
|
1761
1761
|
"name": "sector-energy",
|
|
@@ -1829,7 +1829,7 @@
|
|
|
1829
1829
|
"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"
|
|
1830
1830
|
],
|
|
1831
1831
|
"signature": "IYKXn009jfhpKdQKiGB4xb7VgxsJXa6PZawoguP42khU6S/TTemp/YsK1YQCUyabE+2biElL/PP1Hi8zCkSSBw==",
|
|
1832
|
-
"signed_at": "2026-06-
|
|
1832
|
+
"signed_at": "2026-06-22T15:58:37.541Z"
|
|
1833
1833
|
},
|
|
1834
1834
|
{
|
|
1835
1835
|
"name": "sector-telecom",
|
|
@@ -1915,7 +1915,7 @@
|
|
|
1915
1915
|
"O-RAN SFG / WG11 security specifications"
|
|
1916
1916
|
],
|
|
1917
1917
|
"signature": "NAtyzfLPXlUuB78Snb9nWmbZalC1CNlIYN9rYhdEmtB/xQGC6vVnThgrEAHlm7v/jMCFuknvEpUHKdscUnUADw==",
|
|
1918
|
-
"signed_at": "2026-06-
|
|
1918
|
+
"signed_at": "2026-06-22T15:58:37.542Z"
|
|
1919
1919
|
},
|
|
1920
1920
|
{
|
|
1921
1921
|
"name": "api-security",
|
|
@@ -1994,7 +1994,7 @@
|
|
|
1994
1994
|
],
|
|
1995
1995
|
"last_threat_review": "2026-06-10",
|
|
1996
1996
|
"signature": "HUjhPGpZeZeVi1nzBIsEAYh18x5ltlIXnt1yQ5YKz+jC2Dvxw7vV/Clx1/1gDBLAuBvRW9wcNtDr4c0RxhfGDQ==",
|
|
1997
|
-
"signed_at": "2026-06-
|
|
1997
|
+
"signed_at": "2026-06-22T15:58:37.542Z",
|
|
1998
1998
|
"forward_watch": [
|
|
1999
1999
|
"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",
|
|
2000
2000
|
"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",
|
|
@@ -2089,7 +2089,7 @@
|
|
|
2089
2089
|
"CISA KEV additions for cloud-control-plane CVEs (IMDSv1 abuses, federation token mishandling, cross-tenant boundary failures); CISA Cybersecurity Advisories for cross-cloud advisories"
|
|
2090
2090
|
],
|
|
2091
2091
|
"signature": "xa1kr/92/0fBds7LVtRy9aCM2tQRWAfNSFoC6ygbOU7QjamUo8Wt2h2n9W+nZT34STN3woYhXqtfmm8NSjXdBQ==",
|
|
2092
|
-
"signed_at": "2026-06-
|
|
2092
|
+
"signed_at": "2026-06-22T15:58:37.543Z"
|
|
2093
2093
|
},
|
|
2094
2094
|
{
|
|
2095
2095
|
"name": "container-runtime-security",
|
|
@@ -2161,7 +2161,7 @@
|
|
|
2161
2161
|
],
|
|
2162
2162
|
"last_threat_review": "2026-06-10",
|
|
2163
2163
|
"signature": "60hyXAiYfY9lI+EpHG3iFFxa+oF5n71c0tTMa6iXFLNjBJKPevTsdNgQlQsBEnmRJ+dWtOjb/GNBW1KiBx4XAQ==",
|
|
2164
|
-
"signed_at": "2026-06-
|
|
2164
|
+
"signed_at": "2026-06-22T15:58:37.543Z",
|
|
2165
2165
|
"forward_watch": [
|
|
2166
2166
|
"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"
|
|
2167
2167
|
]
|
|
@@ -2242,7 +2242,7 @@
|
|
|
2242
2242
|
"MITRE ATLAS v2026.05 (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"
|
|
2243
2243
|
],
|
|
2244
2244
|
"signature": "IEECw5lO6ZdpkE/j7Hv6/3Jg2vj9fpXlozY+h85Hrn9QYOJuI0gfBjHoBEchJ2GUTmPwUKoiBoI72PBAQw9RCQ==",
|
|
2245
|
-
"signed_at": "2026-06-
|
|
2245
|
+
"signed_at": "2026-06-22T15:58:37.544Z"
|
|
2246
2246
|
},
|
|
2247
2247
|
{
|
|
2248
2248
|
"name": "incident-response-playbook",
|
|
@@ -2316,7 +2316,7 @@
|
|
|
2316
2316
|
"NYDFS 23 NYCRR 500.17 amendments tightening ransom-payment 24h disclosure operationalization"
|
|
2317
2317
|
],
|
|
2318
2318
|
"signature": "pN1Qa5NRyNJ6h0pmbbqpy3xWdkMANDMUbBst5SKR5fmmqMFopmyrzwIGagiiNgqxjjCunj9J9Wbzs1sL48sMCQ==",
|
|
2319
|
-
"signed_at": "2026-06-
|
|
2319
|
+
"signed_at": "2026-06-22T15:58:37.544Z"
|
|
2320
2320
|
},
|
|
2321
2321
|
{
|
|
2322
2322
|
"name": "ransomware-response",
|
|
@@ -2396,7 +2396,7 @@
|
|
|
2396
2396
|
],
|
|
2397
2397
|
"last_threat_review": "2026-06-10",
|
|
2398
2398
|
"signature": "sXPA1lvWvZpf5sHxZXRkO0Kcs6gnXiYq0mWA53y1HeBwQGJ+viSPMt5IMobkjd5qLFYchg0CpW/nBUIvUE6/DA==",
|
|
2399
|
-
"signed_at": "2026-06-
|
|
2399
|
+
"signed_at": "2026-06-22T15:58:37.544Z"
|
|
2400
2400
|
},
|
|
2401
2401
|
{
|
|
2402
2402
|
"name": "email-security-anti-phishing",
|
|
@@ -2464,7 +2464,7 @@
|
|
|
2464
2464
|
],
|
|
2465
2465
|
"last_threat_review": "2026-05-18",
|
|
2466
2466
|
"signature": "FVBn4ex2qPIo9SHMVJ6tntoz4tVwjbIq3m6wDjjZyv2JODlS+90GBYCOkNamxxkmw/6de6SMs0YHQiF/xjo/DQ==",
|
|
2467
|
-
"signed_at": "2026-06-
|
|
2467
|
+
"signed_at": "2026-06-22T15:58:37.545Z"
|
|
2468
2468
|
},
|
|
2469
2469
|
{
|
|
2470
2470
|
"name": "age-gates-child-safety",
|
|
@@ -2539,7 +2539,7 @@
|
|
|
2539
2539
|
"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"
|
|
2540
2540
|
],
|
|
2541
2541
|
"signature": "7Wdii9uwYmDrzQohoWRWDa5A4aDRKOmdLPq5Jsql86O0Gm7pQANnj9tX+cHpQcQ/Ui8VLuNVP8UFdKxxHeDnBg==",
|
|
2542
|
-
"signed_at": "2026-06-
|
|
2542
|
+
"signed_at": "2026-06-22T15:58:37.545Z"
|
|
2543
2543
|
},
|
|
2544
2544
|
{
|
|
2545
2545
|
"name": "cloud-iam-incident",
|
|
@@ -2619,7 +2619,7 @@
|
|
|
2619
2619
|
],
|
|
2620
2620
|
"last_threat_review": "2026-05-15",
|
|
2621
2621
|
"signature": "r9ii4nb3HJELdtKCGF5qy9PHOiot3GC24yfxfGAKlLENHkdRvRkvvL99eV/6RXyfUaMyrnc2Te8tPQcNu5bsDg==",
|
|
2622
|
-
"signed_at": "2026-06-
|
|
2622
|
+
"signed_at": "2026-06-22T15:58:37.545Z",
|
|
2623
2623
|
"forward_watch": [
|
|
2624
2624
|
"AWS IAM Identity Center session-policy refresh and step-up-on-admin enforcement (anticipated 2026-H2 release)",
|
|
2625
2625
|
"GCP Workload Identity Federation principal-set attribute mapping tightening (post-2026 Q3 Federation hardening guide)",
|
|
@@ -2713,7 +2713,7 @@
|
|
|
2713
2713
|
],
|
|
2714
2714
|
"last_threat_review": "2026-05-15",
|
|
2715
2715
|
"signature": "9mfDtMApMAg9V/lmwpniNxo/6gNZoOEoYDfyFvyWvKrPMtc7H9F8uz06FVoARe/J49saAKTVXOurNE1D/KtpCQ==",
|
|
2716
|
-
"signed_at": "2026-06-
|
|
2716
|
+
"signed_at": "2026-06-22T15:58:37.546Z",
|
|
2717
2717
|
"forward_watch": [
|
|
2718
2718
|
"Entra ID conditional access evolution post-Midnight Blizzard — Microsoft's 2025-2026 commitments on legacy-tenant MFA enforcement and OAuth-app consent gating",
|
|
2719
2719
|
"Okta IPSIE (Interoperability Profile for Secure Identity in the Enterprise) OpenID Foundation working-group output and adoption timeline",
|
|
@@ -2785,7 +2785,7 @@
|
|
|
2785
2785
|
"d3fend_refs": [],
|
|
2786
2786
|
"last_threat_review": "2026-06-02",
|
|
2787
2787
|
"signature": "dOFgANMtHm64uSFRjMfeA0fWZS9ISwMTt59I2CbjaF1PgTtbtb8yg/f+3pC4eXcXIET0KPGxRRmENycfIz3rAw==",
|
|
2788
|
-
"signed_at": "2026-06-
|
|
2788
|
+
"signed_at": "2026-06-22T15:58:37.546Z"
|
|
2789
2789
|
},
|
|
2790
2790
|
{
|
|
2791
2791
|
"name": "mail-server-hardening",
|
|
@@ -2844,7 +2844,7 @@
|
|
|
2844
2844
|
"d3fend_refs": [],
|
|
2845
2845
|
"last_threat_review": "2026-06-02",
|
|
2846
2846
|
"signature": "5x8RGzKo/T2IbYnFkYMZs16ThD9a5FEdrKHsnwvtMuGxdyyfZsKNIJVWw2I8O0um0UOXwwkl17Z3zhch26ymCQ==",
|
|
2847
|
-
"signed_at": "2026-06-
|
|
2847
|
+
"signed_at": "2026-06-22T15:58:37.546Z"
|
|
2848
2848
|
},
|
|
2849
2849
|
{
|
|
2850
2850
|
"name": "network-trust",
|
|
@@ -2900,7 +2900,7 @@
|
|
|
2900
2900
|
"d3fend_refs": [],
|
|
2901
2901
|
"last_threat_review": "2026-06-02",
|
|
2902
2902
|
"signature": "C/RdmnGjXKreKiGkwJfUESIxUwQzisGJ9A7KBdE9cBRBHBYHkAcScV89L+Z3kOG032Qax6LeIQai7Lr3nrQBCA==",
|
|
2903
|
-
"signed_at": "2026-06-
|
|
2903
|
+
"signed_at": "2026-06-22T15:58:37.546Z"
|
|
2904
2904
|
},
|
|
2905
2905
|
{
|
|
2906
2906
|
"name": "audit-log-integrity",
|
|
@@ -2955,7 +2955,7 @@
|
|
|
2955
2955
|
"d3fend_refs": [],
|
|
2956
2956
|
"last_threat_review": "2026-06-02",
|
|
2957
2957
|
"signature": "LvUAq+rXCA8PgNy9lTKOmFqa8T9EJg4JEH0axXvEAf9MIHqbR51ergUkFMLaTuvFuApwsPu0r1C30QgScZbiAw==",
|
|
2958
|
-
"signed_at": "2026-06-
|
|
2958
|
+
"signed_at": "2026-06-22T15:58:37.546Z"
|
|
2959
2959
|
},
|
|
2960
2960
|
{
|
|
2961
2961
|
"name": "self-update-integrity",
|
|
@@ -3009,7 +3009,7 @@
|
|
|
3009
3009
|
"d3fend_refs": [],
|
|
3010
3010
|
"last_threat_review": "2026-06-02",
|
|
3011
3011
|
"signature": "BOQZ8G9LdyG/tfpz6rCU4THz5Dq2HGJkUV7uCqSTCMrqnXH6seNXKM41FWawYo0s2VUlXtRgaO7ETp5qgxw+CQ==",
|
|
3012
|
-
"signed_at": "2026-06-
|
|
3012
|
+
"signed_at": "2026-06-22T15:58:37.547Z"
|
|
3013
3013
|
},
|
|
3014
3014
|
{
|
|
3015
3015
|
"name": "multitenancy-isolation",
|
|
@@ -3067,7 +3067,7 @@
|
|
|
3067
3067
|
"d3fend_refs": [],
|
|
3068
3068
|
"last_threat_review": "2026-06-02",
|
|
3069
3069
|
"signature": "bncN0VE4ns0lxtPe48xDR33lerw54BPVkSwX7XlrLQcMHTrV94lmjO8z4ZP4Ko61n+KpuP2SNU8v9JT0bGMmAA==",
|
|
3070
|
-
"signed_at": "2026-06-
|
|
3070
|
+
"signed_at": "2026-06-22T15:58:37.547Z"
|
|
3071
3071
|
},
|
|
3072
3072
|
{
|
|
3073
3073
|
"name": "decompression-dos",
|
|
@@ -3125,7 +3125,7 @@
|
|
|
3125
3125
|
"d3fend_refs": [],
|
|
3126
3126
|
"last_threat_review": "2026-06-02",
|
|
3127
3127
|
"signature": "03i0ZO5ScHIOjGvDKUEsws6m+20fnlJrEhSBtMU7PJzQutrPpmW9gULE0wbayTD5H9URh5nSKZuuVjvjVhZNCg==",
|
|
3128
|
-
"signed_at": "2026-06-
|
|
3128
|
+
"signed_at": "2026-06-22T15:58:37.547Z"
|
|
3129
3129
|
},
|
|
3130
3130
|
{
|
|
3131
3131
|
"name": "log-injection-telemetry",
|
|
@@ -3180,7 +3180,7 @@
|
|
|
3180
3180
|
"d3fend_refs": [],
|
|
3181
3181
|
"last_threat_review": "2026-06-02",
|
|
3182
3182
|
"signature": "twTmA2l+Am2k2PCzB2DNxDQwoYlGopJp/3QgQwBsP7h2LF+uNudisqfuOVV/bYnWfrUhuYZUWbsR3mhzbJCUBw==",
|
|
3183
|
-
"signed_at": "2026-06-
|
|
3183
|
+
"signed_at": "2026-06-22T15:58:37.547Z"
|
|
3184
3184
|
},
|
|
3185
3185
|
{
|
|
3186
3186
|
"name": "privacy-consent-ops",
|
|
@@ -3235,11 +3235,11 @@
|
|
|
3235
3235
|
"d3fend_refs": [],
|
|
3236
3236
|
"last_threat_review": "2026-06-02",
|
|
3237
3237
|
"signature": "0sfKSVrIf555c9bDGkXB96fUClN52fMAMYoQsNQ9eUUSzDiWUwdou+q0gYt43nObtj3m9Yb9X6q3oCXDVMgUDg==",
|
|
3238
|
-
"signed_at": "2026-06-
|
|
3238
|
+
"signed_at": "2026-06-22T15:58:37.547Z"
|
|
3239
3239
|
}
|
|
3240
3240
|
],
|
|
3241
3241
|
"manifest_signature": {
|
|
3242
3242
|
"algorithm": "Ed25519",
|
|
3243
|
-
"signature_base64": "
|
|
3243
|
+
"signature_base64": "ZR30n0xZK4kwxyCoB+GAgj6DGNvBhTURUQtiaits9MSYcDKMmPHj0RLPZZ/ym9aCRpPtUemr0YEPxun86iFAAg=="
|
|
3244
3244
|
}
|
|
3245
3245
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blamejs/exceptd-skills",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.15",
|
|
4
4
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 51 skills, 11 catalogs (459 CVEs / 181 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:91ed9f87-03ec-4e45-8017-4f069e6a6f46",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2103-08-02T10:46:31.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.18.
|
|
12
|
+
"version": "0.18.15"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.18.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.18.15",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.18.
|
|
19
|
+
"version": "0.18.15",
|
|
20
20
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 51 skills, 11 catalogs (459 CVEs / 181 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.18.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.18.15",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "1d3582af295fcb1bb845bee7d540febffe9643d0890a3bdbc91cb1006e85a77a"
|
|
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.18.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.18.15"
|
|
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": "75af37acc132ac61508566b1f3aae6933fa591f7ea709f2991378b513143647a"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "6aa7d29979d2903e2c6b84a06cc91690af53fc1d00c3f74e16586372cfc706f5133518ceed0733ea61b9ec9ad17cbc5f8d52c4532b63d1ddca5b6058e8264c07"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -491,11 +491,11 @@
|
|
|
491
491
|
"hashes": [
|
|
492
492
|
{
|
|
493
493
|
"alg": "SHA-256",
|
|
494
|
-
"content": "
|
|
494
|
+
"content": "d346a9fdd0dc289cee02cdbd2355eb61bd31231fa3c7745af6e071de5e85f747"
|
|
495
495
|
},
|
|
496
496
|
{
|
|
497
497
|
"alg": "SHA3-512",
|
|
498
|
-
"content": "
|
|
498
|
+
"content": "ee9681ac0aef46f77dc3537eee23b472dac68d4977d700896d341338498c567b1a3323b7b80586a6956f068c8e7128b950a393ff90ebf29f4d84debb25b59d61"
|
|
499
499
|
}
|
|
500
500
|
]
|
|
501
501
|
},
|
|
@@ -551,11 +551,11 @@
|
|
|
551
551
|
"hashes": [
|
|
552
552
|
{
|
|
553
553
|
"alg": "SHA-256",
|
|
554
|
-
"content": "
|
|
554
|
+
"content": "4734aa4636acf4f5cefb4c086ca8d64d6d5c2875b5f6ec23c7304a50166f41ba"
|
|
555
555
|
},
|
|
556
556
|
{
|
|
557
557
|
"alg": "SHA3-512",
|
|
558
|
-
"content": "
|
|
558
|
+
"content": "a82387ab591eec1dff1e63c88ae0a06c6e422d98631c23ba854eb074234ae5aeb2f7de98aa9813de07c3b9769047f9ac254a9cee53f9f8d95dc20a1b17aae38e"
|
|
559
559
|
}
|
|
560
560
|
]
|
|
561
561
|
},
|
|
@@ -641,11 +641,11 @@
|
|
|
641
641
|
"hashes": [
|
|
642
642
|
{
|
|
643
643
|
"alg": "SHA-256",
|
|
644
|
-
"content": "
|
|
644
|
+
"content": "5a21e14c0c1e59f28f530f7121b7a94f096766751b01fbfa4c82c9a4ed819a4c"
|
|
645
645
|
},
|
|
646
646
|
{
|
|
647
647
|
"alg": "SHA3-512",
|
|
648
|
-
"content": "
|
|
648
|
+
"content": "f6facca12c0e27387d8c7b10064b30272782150ba7cc3cc404d52a6b4090e6b8c43aa34498454194a2230aea7a2c3fbd473dfe09ec40b6b5b2ae9ce5afdd8254"
|
|
649
649
|
}
|
|
650
650
|
]
|
|
651
651
|
},
|
|
@@ -731,11 +731,11 @@
|
|
|
731
731
|
"hashes": [
|
|
732
732
|
{
|
|
733
733
|
"alg": "SHA-256",
|
|
734
|
-
"content": "
|
|
734
|
+
"content": "78d4e0b31bf3eb161cd343df2c6f87945bb5df3dafa59fc9ec68229a2d2d2ee1"
|
|
735
735
|
},
|
|
736
736
|
{
|
|
737
737
|
"alg": "SHA3-512",
|
|
738
|
-
"content": "
|
|
738
|
+
"content": "b81137055a740d1b4504409b098b5190ff6860b0e1306425801abc0d6279c6bc327730bcc7bf65aa96b6c089ce7d7b167d5106e5b7ff08543ee1b6b93b9da9fd"
|
|
739
739
|
}
|
|
740
740
|
]
|
|
741
741
|
},
|
|
@@ -1466,11 +1466,11 @@
|
|
|
1466
1466
|
"hashes": [
|
|
1467
1467
|
{
|
|
1468
1468
|
"alg": "SHA-256",
|
|
1469
|
-
"content": "
|
|
1469
|
+
"content": "0931b9c7a334ee8233eb85eb28c58b0ce793778155e9de83a1d9a75371804eaa"
|
|
1470
1470
|
},
|
|
1471
1471
|
{
|
|
1472
1472
|
"alg": "SHA3-512",
|
|
1473
|
-
"content": "
|
|
1473
|
+
"content": "b3a3d41def2a7cd88af86df76eff2c30f6e4466c40a95dafe320614eb0b468b08d6dd0f7decc8bb1eb8f8b96dd8edac391439c6dfebee893c1d0f364d4e4dd8a"
|
|
1474
1474
|
}
|
|
1475
1475
|
]
|
|
1476
1476
|
},
|
|
@@ -1781,11 +1781,11 @@
|
|
|
1781
1781
|
"hashes": [
|
|
1782
1782
|
{
|
|
1783
1783
|
"alg": "SHA-256",
|
|
1784
|
-
"content": "
|
|
1784
|
+
"content": "67a4ea6652f8be1602acf415461ce22536b4fe07245cbb577a237709f49d1b7f"
|
|
1785
1785
|
},
|
|
1786
1786
|
{
|
|
1787
1787
|
"alg": "SHA3-512",
|
|
1788
|
-
"content": "
|
|
1788
|
+
"content": "2127dba695f401dcbae912b54e57fcea387dbd716974f807ab9a942cb43bc7cbe97a10f35d8a0daa0f8deb2aef3f82be5c651c3eeb0a46de8d546cb87a0a4598"
|
|
1789
1789
|
}
|
|
1790
1790
|
]
|
|
1791
1791
|
},
|
|
@@ -1901,11 +1901,11 @@
|
|
|
1901
1901
|
"hashes": [
|
|
1902
1902
|
{
|
|
1903
1903
|
"alg": "SHA-256",
|
|
1904
|
-
"content": "
|
|
1904
|
+
"content": "06e97688670822402c8878d854e06f6790969a0a8a3c119e3aa5bef7d8c7e2d3"
|
|
1905
1905
|
},
|
|
1906
1906
|
{
|
|
1907
1907
|
"alg": "SHA3-512",
|
|
1908
|
-
"content": "
|
|
1908
|
+
"content": "9228366acf6f48f86b97528d4cc6c2fddb7ca3edd481d6acf25067ca9e28a43fec0e051ff377df188ddedf811521a8bf1b1ccf590d3c005a6e169b4e8c329c05"
|
|
1909
1909
|
}
|
|
1910
1910
|
]
|
|
1911
1911
|
},
|