@blamejs/exceptd-skills 0.13.2 → 0.13.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +41 -4
- package/CHANGELOG.md +73 -0
- package/README.md +79 -13
- package/bin/exceptd.js +105 -1
- package/data/_indexes/_meta.json +47 -47
- package/data/_indexes/activity-feed.json +3 -3
- package/data/_indexes/catalog-summaries.json +3 -3
- package/data/_indexes/chains.json +125 -32
- package/data/_indexes/frequency.json +12 -0
- package/data/_indexes/handoff-dag.json +127 -57
- package/data/_indexes/section-offsets.json +541 -487
- package/data/_indexes/summary-cards.json +34 -34
- package/data/_indexes/token-budget.json +329 -299
- package/data/attack-techniques.json +2 -0
- package/data/cve-catalog.json +99 -146
- package/data/cwe-catalog.json +1 -0
- package/data/exploit-availability.json +0 -27
- package/data/framework-control-gaps.json +409 -0
- package/data/zeroday-lessons.json +71 -89
- package/lib/lint-skills.js +17 -13
- package/lib/schemas/playbook.schema.json +5 -0
- package/lib/source-advisories.js +26 -0
- package/manifest.json +82 -82
- package/orchestrator/index.js +147 -2
- package/package.json +1 -1
- package/sbom.cdx.json +61 -61
- package/skills/age-gates-child-safety/skill.md +2 -0
- package/skills/ai-attack-surface/skill.md +2 -0
- package/skills/ai-c2-detection/skill.md +2 -0
- package/skills/ai-risk-management/skill.md +2 -0
- package/skills/api-security/skill.md +16 -4
- package/skills/attack-surface-pentest/skill.md +2 -0
- package/skills/cloud-iam-incident/skill.md +1 -1
- package/skills/cloud-security/skill.md +2 -0
- package/skills/compliance-theater/skill.md +28 -2
- package/skills/container-runtime-security/skill.md +2 -0
- package/skills/coordinated-vuln-disclosure/skill.md +1 -1
- package/skills/defensive-countermeasure-mapping/skill.md +2 -0
- package/skills/dlp-gap-analysis/skill.md +2 -0
- package/skills/email-security-anti-phishing/skill.md +14 -4
- package/skills/exploit-scoring/skill.md +30 -1
- package/skills/framework-gap-analysis/skill.md +28 -1
- package/skills/fuzz-testing-strategy/skill.md +4 -2
- package/skills/global-grc/skill.md +2 -0
- package/skills/identity-assurance/skill.md +2 -0
- package/skills/kernel-lpe-triage/skill.md +2 -0
- package/skills/mcp-agent-trust/skill.md +4 -0
- package/skills/mlops-security/skill.md +2 -0
- package/skills/ot-ics-security/skill.md +2 -0
- package/skills/policy-exception-gen/skill.md +28 -1
- package/skills/pqc-first/skill.md +2 -0
- package/skills/rag-pipeline-security/skill.md +2 -0
- package/skills/researcher/skill.md +2 -0
- package/skills/sector-energy/skill.md +2 -0
- package/skills/sector-federal-government/skill.md +2 -0
- package/skills/sector-financial/skill.md +2 -0
- package/skills/sector-healthcare/skill.md +2 -0
- package/skills/security-maturity-tiers/skill.md +2 -0
- package/skills/skill-update-loop/skill.md +2 -0
- package/skills/supply-chain-integrity/skill.md +2 -0
- package/skills/threat-model-currency/skill.md +37 -1
- package/skills/threat-modeling-methodology/skill.md +2 -0
- package/skills/webapp-security/skill.md +2 -0
- package/skills/zeroday-gap-learn/skill.md +33 -1
|
@@ -916,95 +916,6 @@
|
|
|
916
916
|
"ai_discovery_date": "2024-03-29",
|
|
917
917
|
"ai_assist_factor": "low"
|
|
918
918
|
},
|
|
919
|
-
"CVE-2026-GTIG-AI-2FA": {
|
|
920
|
-
"name": "GTIG-tracked AI-built 2FA-bypass zero-day",
|
|
921
|
-
"lesson_date": "2026-05-15",
|
|
922
|
-
"attack_vector": {
|
|
923
|
-
"description": "Authentication state-machine confusion in an unnamed enterprise 2FA service. Exploit payload bypasses the second-factor challenge by manipulating session token at the post-primary-auth / pre-2FA-challenge boundary. Notable as the first documented AI-BUILT (not just AI-discovered) zero-day observed in-the-wild — threat actor used a frontier LLM to construct the exploit payload.",
|
|
924
|
-
"privileges_required": "remote unauthenticated, requires valid primary-auth credentials (assumed phished or credential-stuffed)",
|
|
925
|
-
"complexity": "moderate to develop, low to use",
|
|
926
|
-
"ai_factor": "First documented AI-BUILT ITW zero-day per GTIG 2026-05-11. Threat actor lacked the engineering capacity to construct the payload independently; LLM-generated exploit code shows characteristic structure, comments, and idiomatic patterns. Compresses time-to-weaponize by approximately 20x relative to human-only development for this class."
|
|
927
|
-
},
|
|
928
|
-
"defense_chain": {
|
|
929
|
-
"prevention": {
|
|
930
|
-
"what_would_have_worked": "Out-of-band MFA (FIDO2 / passkey / push-with-number-match) that does not share a session-token boundary with the bypass surface. Hardware-anchored binding of primary-auth and 2FA challenge into a single signed assertion.",
|
|
931
|
-
"was_this_required": false,
|
|
932
|
-
"framework_requiring_it": null,
|
|
933
|
-
"adequacy": "Phishing-resistant MFA (NIST AAL3) would have blocked this class. Most organizations still operate at AAL2 with SMS or TOTP."
|
|
934
|
-
},
|
|
935
|
-
"detection": {
|
|
936
|
-
"what_would_have_worked": "Session-token mutation anomaly detection between auth phases — alert when the session-state machine receives an unexpected transition.",
|
|
937
|
-
"was_this_required": false,
|
|
938
|
-
"framework_requiring_it": null,
|
|
939
|
-
"adequacy": "Anomaly detection on auth-state transitions is not a standard control category in any framework. Most identity providers don't expose the necessary telemetry."
|
|
940
|
-
},
|
|
941
|
-
"response": {
|
|
942
|
-
"what_would_have_worked": "Vendor-side rate-limiting on the 2FA challenge endpoint + temporary global rollback of the 2FA flow to require fresh primary-auth.",
|
|
943
|
-
"was_this_required": false,
|
|
944
|
-
"framework_requiring_it": null,
|
|
945
|
-
"adequacy": "Embargoed CVE — public response capability constrained by disclosure timing."
|
|
946
|
-
}
|
|
947
|
-
},
|
|
948
|
-
"framework_coverage": {
|
|
949
|
-
"NIST-AI-RMF-MEASURE-2.7": {
|
|
950
|
-
"covered": false,
|
|
951
|
-
"adequate": false,
|
|
952
|
-
"gap": "AI-discovered + AI-built exploit class not anchored in any framework — neither NIST AI RMF nor ISO 42001 require AI-attack-development monitoring as a control category."
|
|
953
|
-
},
|
|
954
|
-
"NIS2-Art21-incident-handling": {
|
|
955
|
-
"covered": true,
|
|
956
|
-
"adequate": false,
|
|
957
|
-
"gap": "EU NIS2 incident-handling SLA does not differentiate AI-built vs human-built exploit class — but the AI-built class compresses time-to-weaponize by ~20x and time-to-mass-deployment by ~50x."
|
|
958
|
-
},
|
|
959
|
-
"FedRAMP-IA-2": {
|
|
960
|
-
"covered": true,
|
|
961
|
-
"adequate": false,
|
|
962
|
-
"gap": "MFA requirement satisfied on paper; AI-built bypass operates at a layer below the MFA control surface."
|
|
963
|
-
},
|
|
964
|
-
"EU-AI-Act-Art-15": {
|
|
965
|
-
"covered": false,
|
|
966
|
-
"adequate": false,
|
|
967
|
-
"gap": "AI Act robustness requirement applies to AI SYSTEMS not to defending against AI-built attacks on non-AI systems."
|
|
968
|
-
},
|
|
969
|
-
"ALL-FRAMEWORKS": {
|
|
970
|
-
"covered": false,
|
|
971
|
-
"adequate": false,
|
|
972
|
-
"gap": "No framework anchors on AI-attack-development as an operational threat that requires distinct controls. ATLAS documents the techniques but compliance frameworks haven't picked them up."
|
|
973
|
-
}
|
|
974
|
-
},
|
|
975
|
-
"new_control_requirements": [
|
|
976
|
-
{
|
|
977
|
-
"id": "NEW-CTRL-022",
|
|
978
|
-
"name": "AI-ATTACK-DEVELOPMENT-MONITORING",
|
|
979
|
-
"description": "Threat intelligence functions must subscribe to AI-attack-development feeds (GTIG, MITRE ATLAS, anthropic-internal threat reports). Treat AI-built exploit class as compressing the standard 30-day CISA KEV response window to 24 hours.",
|
|
980
|
-
"evidence": "CVE-2026-GTIG-AI-2FA — first documented AI-built ITW zero-day per GTIG 2026-05-11. Time from disclosure to mass-exploitation observed at ~10x faster than comparable non-AI-built cases.",
|
|
981
|
-
"gap_closes": [
|
|
982
|
-
"NIST-AI-RMF-MEASURE-2.7",
|
|
983
|
-
"ISO-27001-2022-A.5.7",
|
|
984
|
-
"NIS2-Art21-incident-handling"
|
|
985
|
-
]
|
|
986
|
-
},
|
|
987
|
-
{
|
|
988
|
-
"id": "NEW-CTRL-023",
|
|
989
|
-
"name": "PHISHING-RESISTANT-MFA-MANDATE",
|
|
990
|
-
"description": "AAL3 phishing-resistant MFA (FIDO2 / passkey / hardware-anchored push-with-number-match) required for all administrative and privileged access. SMS, TOTP, and push-to-approve are insufficient against AI-built session-confusion attacks.",
|
|
991
|
-
"evidence": "CVE-2026-GTIG-AI-2FA — bypass operates at the session-state-machine layer; AAL3 anchors the second factor to the primary-auth assertion cryptographically.",
|
|
992
|
-
"gap_closes": [
|
|
993
|
-
"FedRAMP-IA-2",
|
|
994
|
-
"NIST-800-63-AAL3"
|
|
995
|
-
]
|
|
996
|
-
}
|
|
997
|
-
],
|
|
998
|
-
"compliance_exposure_score": {
|
|
999
|
-
"percent_audit_passing_orgs_still_exposed": 92,
|
|
1000
|
-
"basis": "Most organizations operate at AAL2 with TOTP or SMS. AI-built attack class compresses development time by 20x — defenders have not yet caught up.",
|
|
1001
|
-
"theater_pattern": "mfa_aal2_satisfies_paper_aal3"
|
|
1002
|
-
},
|
|
1003
|
-
"ai_discovered_zeroday": true,
|
|
1004
|
-
"ai_discovery_source": "threat_actor_ai_built",
|
|
1005
|
-
"ai_discovery_date": "2026-05-11",
|
|
1006
|
-
"ai_assist_factor": "very_high"
|
|
1007
|
-
},
|
|
1008
919
|
"CVE-2026-42945": {
|
|
1009
920
|
"name": "NGINX Rift",
|
|
1010
921
|
"lesson_date": "2026-05-15",
|
|
@@ -2937,5 +2848,76 @@
|
|
|
2937
2848
|
"ai_discovered_zeroday": false,
|
|
2938
2849
|
"ai_discovery_source": "human_researcher",
|
|
2939
2850
|
"ai_assist_factor": "low"
|
|
2851
|
+
},
|
|
2852
|
+
"CVE-2024-21762": {
|
|
2853
|
+
"name": "Fortinet FortiOS / FortiProxy SSL-VPN out-of-bounds write (sslvpnd preauth RCE)",
|
|
2854
|
+
"lesson_date": "2026-05-17",
|
|
2855
|
+
"attack_vector": {
|
|
2856
|
+
"description": "Out-of-bounds write in the sslvpnd daemon's HTTP request handling on FortiOS and FortiProxy. An unauthenticated attacker sends a specially crafted HTTP request to the SSL-VPN web surface and executes code on the appliance. Mass-scanning began within hours of the 2024-02-08 vendor disclosure; CISA KEV-listed the next day with a 7-day federal remediation deadline. Fortinet's 2025-04-11 follow-up advisory documented a post-exploitation technique where attackers who compromised the device before patching leave behind read-only symlinks in the SSL-VPN language-file directory that grant persistent filesystem read access on fully patched firmware — patch alone is insufficient.",
|
|
2857
|
+
"privileges_required": "none (unauth network reach to the SSL-VPN web surface; SSL-VPN must be enabled on the FortiGate)",
|
|
2858
|
+
"complexity": "low — single-request preauth RCE; public PoCs available within days",
|
|
2859
|
+
"ai_factor": "Not AI-discovered — vendor-internal discovery by Fortinet PSIRT. No AI involvement on either the discovery or weaponization side."
|
|
2860
|
+
},
|
|
2861
|
+
"defense_chain": {
|
|
2862
|
+
"prevention": {
|
|
2863
|
+
"what_would_have_worked": "Upgrade to FortiOS 7.6.2 / 7.4.7 / 7.2.11 / 7.0.17 / 6.4.16 or FortiProxy 7.4.3 / 7.2.9 / 7.0.15 / 2.0.14. Pre-patch interim mitigation: disable SSL-VPN entirely (Fortinet's stated workaround). Front the SSL-VPN web surface with network ACLs restricting access to known operator IP ranges where the SSL-VPN tenancy model permits it.",
|
|
2864
|
+
"was_this_required": true,
|
|
2865
|
+
"framework_requiring_it": "CISA BOD 22-01 (KEV remediation — added 2024-02-09 with 7-day deadline)",
|
|
2866
|
+
"adequacy": "Patch is definitive for the OOB-write itself but does not remediate post-exploitation persistence (symlink-based filesystem read access seeded before the patch). Operators who patched after compromise must additionally apply the FortiGuard 2025-04 cleanup steps to remove attacker-installed symlinks."
|
|
2867
|
+
},
|
|
2868
|
+
"detection": {
|
|
2869
|
+
"what_would_have_worked": "Alerting on sslvpnd process crashes (OOB-write often triggers segfaults during exploit development); webserver log alerts on unusual HTTP request patterns to /remote/* SSL-VPN endpoints; outbound connection alerts from FortiGate appliances to non-management destinations; filesystem-state baselining on the SSL-VPN language-file directory to detect symlink-persistence artifacts.",
|
|
2870
|
+
"was_this_required": false,
|
|
2871
|
+
"framework_requiring_it": null,
|
|
2872
|
+
"adequacy": "Detection without prevention; in the case of a confirmed-in-wild preauth RCE with a 7-day KEV deadline, patching is the operative control. Filesystem-state detection is necessary to catch the post-exploitation symlink persistence on devices patched after compromise."
|
|
2873
|
+
},
|
|
2874
|
+
"response": {
|
|
2875
|
+
"what_would_have_worked": "Treat any internet-facing FortiGate with SSL-VPN enabled before 2024-02-08 as potentially compromised; capture device configuration and audit logs for forensic review; rotate every credential reachable from the device (admin credentials, VPN-user credentials, RADIUS shared secrets, LDAP bind credentials); reimage or factory-reset rather than upgrade-in-place where the compromise window is uncertain; apply the FortiGuard 2025-04 cleanup steps to remove attacker-installed symlinks even on devices that appear to be on current firmware.",
|
|
2876
|
+
"was_this_required": false,
|
|
2877
|
+
"framework_requiring_it": null,
|
|
2878
|
+
"adequacy": "Operationally expensive but necessary for any device with uncertain compromise status; many operators upgraded in place and missed the post-exploitation persistence."
|
|
2879
|
+
}
|
|
2880
|
+
},
|
|
2881
|
+
"framework_coverage": {
|
|
2882
|
+
"NIST-800-53-SI-2": {
|
|
2883
|
+
"covered": true,
|
|
2884
|
+
"adequate": false,
|
|
2885
|
+
"gap": "30-day patch SLA is multiple orders of magnitude longer than the observed exploitation window (hours from disclosure to mass-scanning). Reboot-required nature breaks the standard maintenance-window assumption; many operators delayed patching until the next scheduled window, extending exposure."
|
|
2886
|
+
},
|
|
2887
|
+
"ISO-27001-2022-A.8.8": {
|
|
2888
|
+
"covered": true,
|
|
2889
|
+
"adequate": false,
|
|
2890
|
+
"gap": "Appropriate timescales undefined; standard 30-day interpretation is unsafe for an unauthenticated preauth RCE on an internet-facing security appliance with public PoCs and confirmed in-wild exploitation."
|
|
2891
|
+
},
|
|
2892
|
+
"NIS2-Art21-network-security": {
|
|
2893
|
+
"covered": true,
|
|
2894
|
+
"adequate": false,
|
|
2895
|
+
"gap": "EU NIS2 treats VPN concentrators as essential-function infrastructure but lacks a CISA-KEV-style compressed remediation SLA. Operators in NIS2 sectors typically discovered the vulnerability via vendor advisory, not via the regulatory channel."
|
|
2896
|
+
},
|
|
2897
|
+
"DORA-Art-9": {
|
|
2898
|
+
"covered": true,
|
|
2899
|
+
"adequate": false,
|
|
2900
|
+
"gap": "ICT incident management presumes vendor-patch cadence; the appliance-reboot requirement breaks the standard SLA assumption for financial-entity SSL-VPN concentrators."
|
|
2901
|
+
},
|
|
2902
|
+
"UK-CAF-B4": {
|
|
2903
|
+
"covered": true,
|
|
2904
|
+
"adequate": false,
|
|
2905
|
+
"gap": "System security principle is silent on the operational reality that fully patched FortiGates can carry attacker persistence (symlink-based filesystem read access) seeded before the patch was applied. Patch alone is insufficient; cleanup verification is required."
|
|
2906
|
+
},
|
|
2907
|
+
"AU-ISM-1546": {
|
|
2908
|
+
"covered": true,
|
|
2909
|
+
"adequate": "closest",
|
|
2910
|
+
"gap": "Essential 8 patch-applications ML3 (48h) is closer to the operational reality than NIST SI-2 but still misses the mass-scanning window."
|
|
2911
|
+
}
|
|
2912
|
+
},
|
|
2913
|
+
"new_control_requirements": [],
|
|
2914
|
+
"compliance_exposure_score": {
|
|
2915
|
+
"percent_audit_passing_orgs_still_exposed": 60,
|
|
2916
|
+
"basis": "Internet-facing SSL-VPN concentrators are routinely deployed by SOC 2 / ISO 27001 / PCI-audited organisations without a documented compressed-SLA patching procedure for the appliance class; the standard 30-day patch SLA was active exposure for this CVE. Post-exploitation symlink cleanup is essentially never tested in compliance audits — operators who patched in place after compromise frequently retained attacker persistence.",
|
|
2917
|
+
"theater_pattern": "patch_management"
|
|
2918
|
+
},
|
|
2919
|
+
"ai_discovered_zeroday": false,
|
|
2920
|
+
"ai_discovery_source": "vendor_research",
|
|
2921
|
+
"ai_assist_factor": "low"
|
|
2940
2922
|
}
|
|
2941
2923
|
}
|
package/lib/lint-skills.js
CHANGED
|
@@ -573,18 +573,22 @@ function lintSkill(entry, ctx) {
|
|
|
573
573
|
}
|
|
574
574
|
}
|
|
575
575
|
|
|
576
|
-
//
|
|
577
|
-
//
|
|
578
|
-
//
|
|
579
|
-
//
|
|
580
|
-
//
|
|
581
|
-
// stale-intel surface Hard Rule #1 calls out at the prose layer.
|
|
576
|
+
// Hard Rule #1 enforcement at the skill-body layer. Every CVE-* /
|
|
577
|
+
// MAL-* mentioned in skill prose MUST resolve to an entry in
|
|
578
|
+
// data/cve-catalog.json. Hard Rule #1 ("no stale threat intel") is
|
|
579
|
+
// enforced for catalog ENTRIES by lib/validate-cve-catalog.js — and
|
|
580
|
+
// this body-scan extends it to the skill prose layer.
|
|
582
581
|
//
|
|
583
|
-
// v0.13.2
|
|
584
|
-
//
|
|
585
|
-
//
|
|
586
|
-
//
|
|
587
|
-
//
|
|
582
|
+
// v0.13.2 introduced this as a warning while the 2 pre-existing
|
|
583
|
+
// violations (ransomware-response cited CVE-2024-21762,
|
|
584
|
+
// cloud-iam-incident cited CVE-2026-21370) were triaged. v0.13.3
|
|
585
|
+
// flips to hard error now that both have been resolved (the
|
|
586
|
+
// Fortinet CVE landed in the catalog; the placeholder CVE was
|
|
587
|
+
// removed from the cloud-iam-incident body).
|
|
588
|
+
//
|
|
589
|
+
// Draft references stay as warnings — operators promote drafts
|
|
590
|
+
// on their own cadence and the catalog frequently carries
|
|
591
|
+
// auto-imported drafts that skills can legitimately cite.
|
|
588
592
|
if (ctx.cveCatalog && body && typeof body === 'string') {
|
|
589
593
|
const cveRefRe = /\b(CVE-(?:19|20)\d{2}-\d{4,7}|MAL-\d{4}-[A-Z0-9-]+)\b/g;
|
|
590
594
|
const seen = new Set();
|
|
@@ -595,8 +599,8 @@ function lintSkill(entry, ctx) {
|
|
|
595
599
|
seen.add(id);
|
|
596
600
|
const entry = ctx.cveCatalog[id];
|
|
597
601
|
if (!entry) {
|
|
598
|
-
|
|
599
|
-
`body cites "${id}" but no such entry in data/cve-catalog.json (Hard Rule #1 — no stale threat intel
|
|
602
|
+
skillErrors.push(
|
|
603
|
+
`body cites "${id}" but no such entry in data/cve-catalog.json (Hard Rule #1 — no stale threat intel)`,
|
|
600
604
|
);
|
|
601
605
|
} else if (entry._draft === true) {
|
|
602
606
|
skillWarnings.push(
|
|
@@ -119,6 +119,11 @@
|
|
|
119
119
|
"condition": { "type": "string", "examples": ["finding.severity == 'critical'", "theater_score < 60", "always"] }
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
+
},
|
|
123
|
+
"fed_by": {
|
|
124
|
+
"type": "array",
|
|
125
|
+
"description": "v0.13.0: reverse direction of feeds_into. Auto-populated by scripts/refresh-reverse-refs.js — operators reading this playbook see what chains INTO it without grepping every other playbook. Plain array of playbook ids; condition is recorded on the SOURCE playbook's feeds_into entry, not duplicated here.",
|
|
126
|
+
"items": { "type": "string" }
|
|
122
127
|
}
|
|
123
128
|
}
|
|
124
129
|
},
|
package/lib/source-advisories.js
CHANGED
|
@@ -79,6 +79,32 @@ const FEEDS = [
|
|
|
79
79
|
kind: 'rss',
|
|
80
80
|
description: 'Zero Day Initiative — vendor-acknowledged advisories from ZDI + Pwn2Own pipeline',
|
|
81
81
|
},
|
|
82
|
+
// v0.13.3 additions — extend coverage to 4 more primary-source venues
|
|
83
|
+
// identified in the v0.13.1 post-mortem follow-up:
|
|
84
|
+
{
|
|
85
|
+
name: 'kernel-org',
|
|
86
|
+
url: 'https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/atom?h=master',
|
|
87
|
+
kind: 'rss',
|
|
88
|
+
description: 'kernel.org torvalds/linux master commits — first-hop after a kernel CVE fix lands upstream (where ssh-keysign-pwn appeared at T+0 as commit 31e62c2ebbfd before any advisory)',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'oss-security',
|
|
92
|
+
url: 'https://www.openwall.com/lists/oss-security/feeds/atom.xml',
|
|
93
|
+
kind: 'rss',
|
|
94
|
+
description: 'oss-security mailing list — coordinated disclosure venue; many distros announce CVEs here before NVD',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'jfrog',
|
|
98
|
+
url: 'https://jfrog.com/blog/category/security-research/feed/',
|
|
99
|
+
kind: 'rss',
|
|
100
|
+
description: 'JFrog SecOps research blog — npm/PyPI/Maven supply-chain disclosures with CVE assignments (TanStack / Mini Shai-Hulud class)',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'cisa-current',
|
|
104
|
+
url: 'https://www.cisa.gov/cybersecurity-advisories/all.xml',
|
|
105
|
+
kind: 'rss',
|
|
106
|
+
description: 'CISA cybersecurity advisories feed — federal-vendor coordinated disclosures (separate from KEV which captures only exploited-in-the-wild items)',
|
|
107
|
+
},
|
|
82
108
|
];
|
|
83
109
|
|
|
84
110
|
// Permissive CVE-ID matcher. The official format is CVE-YYYY-NNNN+ but
|