@blamejs/exceptd-skills 0.13.2 → 0.13.3

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.
@@ -1208,6 +1208,7 @@
1208
1208
  "status": "open",
1209
1209
  "opened_date": "2026-03-15",
1210
1210
  "evidence_cves": [
1211
+ "CVE-2024-21762",
1211
1212
  "CVE-2026-0300",
1212
1213
  "CVE-2026-31431",
1213
1214
  "CVE-2026-42945",
@@ -1843,6 +1844,7 @@
1843
1844
  "opened_date": "2026-03-15",
1844
1845
  "evidence_cves": [
1845
1846
  "CVE-2023-3519",
1847
+ "CVE-2024-21762",
1846
1848
  "CVE-2025-12686",
1847
1849
  "CVE-2025-59389",
1848
1850
  "CVE-2025-62847",
@@ -2345,6 +2347,7 @@
2345
2347
  "opened_date": "2026-03-15",
2346
2348
  "evidence_cves": [
2347
2349
  "CVE-2023-3519",
2350
+ "CVE-2024-21762",
2348
2351
  "CVE-2026-31431"
2349
2352
  ],
2350
2353
  "atlas_refs": [],
@@ -3986,6 +3989,7 @@
3986
3989
  "status": "open",
3987
3990
  "opened_date": "2026-05-15",
3988
3991
  "evidence_cves": [
3992
+ "CVE-2024-21762",
3989
3993
  "CVE-2026-0300",
3990
3994
  "CVE-2026-20182",
3991
3995
  "CVE-2026-42897",
@@ -4268,6 +4272,7 @@
4268
4272
  "status": "open",
4269
4273
  "opened_date": "2026-05-17",
4270
4274
  "evidence_cves": [
4275
+ "CVE-2024-21762",
4271
4276
  "CVE-2026-46300",
4272
4277
  "CVE-2026-46333",
4273
4278
  "MAL-2026-SHAI-HULUD-OSS"
@@ -4301,6 +4306,7 @@
4301
4306
  "status": "open",
4302
4307
  "opened_date": "2026-05-17",
4303
4308
  "evidence_cves": [
4309
+ "CVE-2024-21762",
4304
4310
  "CVE-2026-46300",
4305
4311
  "CVE-2026-46333"
4306
4312
  ],
@@ -4390,5 +4396,408 @@
4390
4396
  ],
4391
4397
  "verdict_when_failed": "compliance-theater"
4392
4398
  }
4399
+ },
4400
+ "CIS-Kubernetes-Benchmark-4.2.13": {
4401
+ "framework": "CIS Kubernetes Benchmark v1.10.0",
4402
+ "control_id": "4.2.13",
4403
+ "control_name": "Minimize the admission of containers with capabilities assigned (Kubelet / AppArmor profile guidance)",
4404
+ "designed_for": "Section 4.2.13 of the CIS Kubernetes Benchmark — restricting Linux capabilities and pairing pod admission with an AppArmor profile that constrains the workload's syscall surface. Anchored on the assumption that an AppArmor profile applied at admission time bounds the worst-case behavior of a compromised container to the profile's allow-list.",
4405
+ "misses": [
4406
+ "AppArmor profile guidance in section 4.2.13 does not specifically require a deny-rule for kernel-module loading (deny capability sys_module + deny mount of /proc/sys/kernel/modules_disabled writes), leaving an arbitrary-module-load primitive available to any container whose runtime brokers the load path (CRI-O CVE-2024-3154 reference case)",
4407
+ "Profile authoring is operator-discretionary — the benchmark does not ship a reference AppArmor profile pinning kernel-module deny semantics, so a profile that meets section 4.2.13's letter can still permit kmod loading and full kernel-surface access",
4408
+ "Section 4.2.13 is evaluated at admission, not continuously — runtime-binary CVEs that brokeR module-load behavior outside the profile boundary (handler in the runtime itself rather than the workload) are out of section 4.2.13's frame entirely"
4409
+ ],
4410
+ "real_requirement": "Section 4.2.13 implementations must require an AppArmor reference profile that explicitly denies kernel-module load (deny capability sys_module, deny owner /sys/module/** rw, deny @{PROC}/sys/kernel/modules_disabled w), and pair the admission check with continuous runtime-binary currency monitoring against the container-escape CVE class. A pod-admission AppArmor profile that omits the module-load deny clause must be treated as section 4.2.13 non-compliant even when the rest of the capability allow-list is minimal.",
4411
+ "status": "open",
4412
+ "opened_date": "2026-05-18",
4413
+ "evidence_cves": [
4414
+ "CVE-2024-3154"
4415
+ ],
4416
+ "atlas_refs": [],
4417
+ "attack_refs": [
4418
+ "T1611",
4419
+ "T1547.006"
4420
+ ],
4421
+ "theater_test": {
4422
+ "claim": "Our Kubernetes posture meets CIS Benchmark section 4.2.13 — admitted pods carry minimal Linux capabilities and an AppArmor profile is enforced.",
4423
+ "test": "Sample the AppArmor profiles applied to admitted pods across production clusters. For each profile, confirm explicit deny rules for capability sys_module, /sys/module/** writes, and /proc/sys/kernel/modules_disabled writes. Cross-reference the container runtime (runc / containerd / CRI-O) inventory against the CISA KEV catalog for the past 12 months. Theater verdict if any admitted profile lacks the kernel-module deny clause, or if any KEV-listed container-runtime CVE exceeded a 24h mitigation SLA.",
4424
+ "evidence_required": [
4425
+ "AppArmor profile inventory with kernel-module deny-rule audit",
4426
+ "container-runtime version inventory per cluster",
4427
+ "KEV-listed container-runtime CVE mitigation timeline"
4428
+ ],
4429
+ "verdict_when_failed": "compliance-theater"
4430
+ }
4431
+ },
4432
+ "CIS-Kubernetes-Benchmark-5.3": {
4433
+ "framework": "CIS Kubernetes Benchmark v1.10.0",
4434
+ "control_id": "5.3",
4435
+ "control_name": "Network Policies and CNI",
4436
+ "designed_for": "Section 5.3 of the CIS Kubernetes Benchmark — enforcing NetworkPolicy objects through a CNI plugin that supports them, with the assumption that pod-to-pod and pod-to-external traffic is constrained to declared flows. Anchored on the assumption that the CNI's IPAM allocations are correct and that declared CIDR boundaries match the CNI's actual filtering behavior.",
4437
+ "misses": [
4438
+ "Section 5.3 governs NetworkPolicy authoring and CNI feature support but does not require validation of the CNI's IPAM correctness — a container-runtime IPAM bug (containerd CVE-2024-40635 integer overflow leaking IP mask) silently broadens declared CIDR boundaries below the NetworkPolicy abstraction layer, invisible to the section's audit shape",
4439
+ "NetworkPolicy effectiveness presumes the CNI's filtering decisions match the policy author's mental model; runtime IPAM defects invalidate that assumption without surfacing as a policy violation",
4440
+ "Section 5.3 evidence collection is point-in-time policy audit; does not require continuous reconciliation of CNI / runtime-binary versions against the container-runtime networking CVE class"
4441
+ ],
4442
+ "real_requirement": "Section 5.3 implementations must add CNI / container-runtime IPAM correctness verification: continuous version inventory of containerd / runc / CRI-O / CNI plugin against CISA KEV + the container-runtime networking CVE class, with a 24h mitigation SLA for KEV-listed runtime CVEs and a 72h SLA for runtime CVEs with public PoC affecting IPAM or network-namespace handling. NetworkPolicy audit alone is insufficient; runtime IPAM correctness is the load-bearing control.",
4443
+ "status": "open",
4444
+ "opened_date": "2026-05-18",
4445
+ "evidence_cves": [
4446
+ "CVE-2024-40635"
4447
+ ],
4448
+ "atlas_refs": [],
4449
+ "attack_refs": [
4450
+ "T1525",
4451
+ "T1190"
4452
+ ],
4453
+ "theater_test": {
4454
+ "claim": "Our Kubernetes posture meets CIS Benchmark section 5.3 — NetworkPolicy is enforced through a supporting CNI and pod-to-pod traffic is constrained to declared flows.",
4455
+ "test": "Pull the most recent CIS Kubernetes Benchmark assessment for section 5.3. Confirm it includes a container-runtime + CNI version inventory cross-referenced against the CISA KEV catalog and the container-runtime networking CVE class. Sample one declared NetworkPolicy and verify the CNI's actual filtering matches the policy's CIDR boundaries (no IPAM-side broadening). Theater verdict if the section-5.3 evidence pack stops at NetworkPolicy audits without a runtime-currency tier, if any KEV-listed runtime CVE exceeded a 24h mitigation SLA, or if the sampled NetworkPolicy's CIDR boundary is broader on the wire than in the declared policy.",
4456
+ "evidence_required": [
4457
+ "CIS Kubernetes Benchmark section 5.3 assessment report",
4458
+ "container-runtime + CNI version inventory per cluster",
4459
+ "on-wire CIDR boundary verification for a sampled NetworkPolicy"
4460
+ ],
4461
+ "verdict_when_failed": "compliance-theater"
4462
+ }
4463
+ },
4464
+ "CIS-Controls-v8-Control6": {
4465
+ "framework": "CIS Controls v8",
4466
+ "control_id": "Control 6",
4467
+ "control_name": "Access Control Management",
4468
+ "designed_for": "Establishing and maintaining access control across enterprise assets and software, including process and tooling for creating, assigning, managing, and revoking access credentials and privileges. IG1-IG3 maturity tiers cover MFA on remote access, role-based access, and centralized access control.",
4469
+ "misses": [
4470
+ "Control 6 governs credential lifecycle for legitimate users but does not require setup-endpoint hardening on production deployments — first-install / setup wizards (ConnectWise ScreenConnect SetupWizard.aspx CVE-2024-1709 reference case) remain reachable post-deployment, allowing unauthenticated account creation that satisfies whatever MFA policy applies to the newly-minted admin",
4471
+ "MFA-on-admin requirements presume the admin account already exists in the directory; an auth-bypass that creates a new admin account does not encounter the MFA policy because the create-account step itself is the bypass",
4472
+ "Control 6 does not enumerate setup-endpoint reachability as a measurable safeguard — IG1-IG3 evidence packs typically demonstrate MFA enrollment percentages and password-policy compliance without testing whether the deployed product exposes a privileged-account-bootstrap path to unauthenticated callers"
4473
+ ],
4474
+ "real_requirement": "CIS Control 6 implementations must add a setup-endpoint reachability safeguard: every production deployment of a third-party product is tested for reachable bootstrap / setup / install wizard endpoints from unauthenticated network positions, with explicit evidence that such endpoints are removed, gated by a deployment-time flag, or behind an authenticated proxy. MFA-on-admin coverage must be paired with admin-account-creation auditing so that a newly-minted admin from an unauthenticated path triggers an alert independent of the MFA policy.",
4475
+ "status": "open",
4476
+ "opened_date": "2026-05-18",
4477
+ "evidence_cves": [
4478
+ "CVE-2024-1709"
4479
+ ],
4480
+ "atlas_refs": [],
4481
+ "attack_refs": [
4482
+ "T1190",
4483
+ "T1078",
4484
+ "T1136"
4485
+ ],
4486
+ "theater_test": {
4487
+ "claim": "We meet CIS Control 6 for access control management — MFA enforced on admin accounts, centralized access control, least privilege applied.",
4488
+ "test": "Pull the access-control evidence pack and inventory of third-party products in the production estate. For each product, test the deployed surface for reachable setup / install / bootstrap wizard endpoints from an unauthenticated network position. Sample admin-account creation events from the past 90 days; confirm each correlates with a documented HR / change-management ticket. Theater verdict if any production deployment exposes an unauthenticated setup endpoint, if any admin account was created without a corresponding ticket, or if the evidence pack stops at MFA enrollment percentages without setup-endpoint reachability testing.",
4489
+ "evidence_required": [
4490
+ "setup-endpoint reachability test results per production product",
4491
+ "admin-account creation audit log for the past 90 days",
4492
+ "MFA enrollment evidence paired with creation-event correlation"
4493
+ ],
4494
+ "verdict_when_failed": "compliance-theater"
4495
+ }
4496
+ },
4497
+ "ISO-27001-2022-A.5.15": {
4498
+ "framework": "ISO/IEC 27001:2022",
4499
+ "control_id": "A.5.15",
4500
+ "control_name": "Access control",
4501
+ "designed_for": "Annex A.5.15 — establishing and implementing rules to control physical and logical access to information and other associated assets based on business and information security requirements. Anchored on the assumption that access control is an organizational-policy concern enforceable through identity, role, and entitlement management.",
4502
+ "misses": [
4503
+ "A.5.15 frames access control as an organizational policy concern; code-level authorization-bypass defects (URI-pattern matching flaws, path-canonicalization bugs, request-routing oversights such as the SUNBURST CVE-2020-10148 reference case) are below the policy abstraction and treated as application-vendor responsibility rather than in-scope for the ISMS",
4504
+ "The control set does not require systematic evidence that the URI / route / endpoint matching layer in deployed third-party software has been tested for pattern-bypass classes (path traversal, double-decode, alternate path separators, request-smuggling normalization mismatches)",
4505
+ "A.5.15's segregation-of-duties expectations presume the authorization layer is correct; a single-component auth-bypass collapses the role-based-access model without triggering an A.5.15 policy-evidence failure"
4506
+ ],
4507
+ "real_requirement": "A.5.15 implementations must extend access control evidence to the code-level authorization surface of deployed third-party software: documented URI/route-matching pattern-bypass testing in the vendor-risk assessment, continuous monitoring of vendor advisories for authorization-bypass CVE classes, and an explicit hand-off between the ISMS team and the application owner for authorization-layer integrity. The audit evidence pack must demonstrate that A.5.15 coverage does not stop at identity/role/entitlement and reaches the request-routing layer of in-scope software.",
4508
+ "status": "open",
4509
+ "opened_date": "2026-05-18",
4510
+ "evidence_cves": [
4511
+ "CVE-2020-10148"
4512
+ ],
4513
+ "atlas_refs": [],
4514
+ "attack_refs": [
4515
+ "T1190",
4516
+ "T1078"
4517
+ ],
4518
+ "theater_test": {
4519
+ "claim": "Our ISMS satisfies ISO 27001:2022 A.5.15 for access control across in-scope information assets.",
4520
+ "test": "Pull the A.5.15 evidence pack and the vendor-risk register. Sample one critical-path third-party product; confirm the evidence demonstrates URI/route-matching pattern-bypass testing has been performed (vendor-supplied or independent) and that authorization-bypass advisories are monitored on a defined cadence. Theater verdict if the evidence pack collapses to identity/role/entitlement evidence without reaching the request-routing layer, or if the sampled product has no documented authorization-layer integrity hand-off between the ISMS team and the application owner.",
4521
+ "evidence_required": [
4522
+ "vendor-risk register entry for the sampled product",
4523
+ "URI/route-matching pattern-bypass testing evidence",
4524
+ "authorization-bypass advisory monitoring cadence document"
4525
+ ],
4526
+ "verdict_when_failed": "compliance-theater"
4527
+ }
4528
+ },
4529
+ "ISO-27001-2022-A.8.13": {
4530
+ "framework": "ISO/IEC 27001:2022",
4531
+ "control_id": "A.8.13",
4532
+ "control_name": "Information backup",
4533
+ "designed_for": "Annex A.8.13 — maintaining backup copies of information, software, and systems with regular testing in accordance with an agreed backup policy. Anchored on the assumption that the backup appliance itself is a trustworthy operator-controlled component whose role is to hold a known-good copy of production state.",
4534
+ "misses": [
4535
+ "A.8.13 presumes backup-system integrity as a given; a vulnerable backup appliance (QNAP Hyper Data Protector CVE-2025-59389 reference case, Pwn2Own Ireland 2025) inverts the recovery assumption — the appliance becomes the attacker's pivot rather than the operator's recovery path",
4536
+ "Backup-restore testing under A.8.13 typically validates data fidelity; it does not validate that the backup-appliance management plane has not been compromised between snapshots, leaving a window where the appliance hosts attacker tooling while still passing restore tests",
4537
+ "The control does not require KEV-tied patch SLAs on the backup appliance fleet — backup infrastructure is often excluded from the production patch programme because it is treated as out-of-band, even though its compromise is a direct path to data loss + ransomware double-extortion"
4538
+ ],
4539
+ "real_requirement": "A.8.13 implementations must add backup-appliance integrity controls: KEV-tied patch SLA for backup appliances (4h for KEV+PoC, 24h for KEV-only, 72h for public-PoC without KEV) treated identically to production hosts, management-plane integrity attestation between snapshots, and an explicit threat-model entry covering the backup appliance as a compromise pivot. Restore tests must include a management-plane attestation step, not only a data-fidelity check.",
4540
+ "status": "open",
4541
+ "opened_date": "2026-05-18",
4542
+ "evidence_cves": [
4543
+ "CVE-2025-59389"
4544
+ ],
4545
+ "atlas_refs": [],
4546
+ "attack_refs": [
4547
+ "T1190",
4548
+ "T1490"
4549
+ ],
4550
+ "theater_test": {
4551
+ "claim": "We maintain information backups per ISO 27001:2022 A.8.13 with regular restore testing.",
4552
+ "test": "Pull the A.8.13 evidence pack. Confirm the backup-appliance inventory has a KEV-tied patch SLA equivalent to production hosts. Sample the most recent restore test; verify it included a management-plane integrity attestation in addition to the data-fidelity check. Cross-reference appliance versions against CISA KEV for the past 12 months. Theater verdict if backup appliances are excluded from the production patch programme, if any KEV-listed backup-appliance CVE exceeded the documented SLA, or if restore tests stop at data fidelity without management-plane attestation.",
4553
+ "evidence_required": [
4554
+ "backup-appliance inventory with KEV-tied patch SLA document",
4555
+ "most-recent restore-test report with management-plane attestation step",
4556
+ "KEV-listed backup-appliance CVE mitigation timeline"
4557
+ ],
4558
+ "verdict_when_failed": "compliance-theater"
4559
+ }
4560
+ },
4561
+ "NIST-800-53-IA-2": {
4562
+ "framework": "NIST SP 800-53 Rev 5",
4563
+ "control_id": "IA-2",
4564
+ "control_name": "Identification and Authentication (Organizational Users)",
4565
+ "designed_for": "Uniquely identifying and authenticating organizational users and processes acting on behalf of those users. Anchored on the assumption that the authentication surface (login forms, API token exchange, SSO redirect chain) is a well-defined boundary the IA-2 control governs, and that authorization decisions downstream of IA-2 are made on identities the control has verified.",
4566
+ "misses": [
4567
+ "IA-2 governs the authentication exchange but not the integrity of the URI / route / endpoint matching layer that decides which requests reach the authenticator — pattern-bypass classes (SolarWinds Orion CVE-2020-10148 URI-matching bypass, ConnectWise ScreenConnect CVE-2024-1709 setup-wizard reachability, Cisco SD-WAN CVE-2026-20182 auth-bypass) sidestep IA-2 entirely because the bypass happens before the control fires",
4568
+ "IA-2(1) MFA-on-privileged-accounts presumes the privileged-account creation path itself is gated by IA-2; an auth-bypass that creates a new privileged account satisfies whatever MFA policy applies because the bypass happened at the create-account step, not the login step",
4569
+ "IA-2 does not require evidence that downstream authorization decisions verify the IA-2 outcome at every request — single-component bypasses propagate through the application as 'satisfied IA-2' for the duration of the session/token lifetime"
4570
+ ],
4571
+ "real_requirement": "IA-2 implementations must add URI/route-matching integrity evidence: documented testing of the request-routing layer for pattern-bypass classes (path traversal, double-decode, alternate separators, request-smuggling, setup-endpoint reachability) on every in-scope deployed product, plus continuous monitoring for authentication-bypass CVE classes against the deployed software inventory. Privileged-account creation must be audited independent of the MFA policy so that newly-minted privileged accounts from non-standard paths trigger alerts.",
4572
+ "status": "open",
4573
+ "opened_date": "2026-05-18",
4574
+ "evidence_cves": [
4575
+ "CVE-2020-10148",
4576
+ "CVE-2024-1709",
4577
+ "CVE-2026-20182"
4578
+ ],
4579
+ "atlas_refs": [],
4580
+ "attack_refs": [
4581
+ "T1190",
4582
+ "T1078",
4583
+ "T1136"
4584
+ ],
4585
+ "theater_test": {
4586
+ "claim": "Organizational users are uniquely identified and authenticated per NIST 800-53 IA-2 across all in-scope systems.",
4587
+ "test": "Pull the IA-2 evidence pack and the in-scope software inventory. Sample three critical-path products; confirm evidence of URI/route-matching pattern-bypass testing for each and continuous monitoring of authentication-bypass advisories on a defined cadence. Pull the past 90 days of privileged-account creation events; confirm each correlates with a documented ticket. Theater verdict if any sampled product has no URI/route-matching integrity evidence, if any privileged account was created without a corresponding ticket, or if IA-2 evidence stops at MFA enrollment without reaching the request-routing layer.",
4588
+ "evidence_required": [
4589
+ "URI/route-matching pattern-bypass testing evidence per sampled product",
4590
+ "authentication-bypass advisory monitoring cadence document",
4591
+ "privileged-account creation audit log for the past 90 days"
4592
+ ],
4593
+ "verdict_when_failed": "compliance-theater"
4594
+ }
4595
+ },
4596
+ "NIST-AI-RMF-MEASURE-2.7": {
4597
+ "framework": "NIST AI RMF 1.0",
4598
+ "control_id": "MEASURE 2.7",
4599
+ "control_name": "AI system security and resilience evaluation",
4600
+ "designed_for": "MEASURE function 2.7 — evaluating AI system security and resilience including assessment of risks from adversarial inputs, data poisoning, model extraction, and supply chain compromise. Anchored on the assumption that AI-system security is a measurable property of the deployed system within the boundaries the deployer controls (the model, the training corpus, the inference endpoint).",
4601
+ "misses": [
4602
+ "MEASURE 2.7 scopes security evaluation to the AI system itself and does not enumerate the ML-pipeline asset chain (tracking servers, experiment registries, artifact stores like MLflow CVE-2023-43472) as in-scope measurement surface, leaving the path-traversal / unauthenticated-access exposure class outside the framework's measurement frame",
4603
+ "MCP-client trust boundary is not specifically addressed — MEASURE 2.7 does not require evaluation of operator-supplied MCP configuration as adversarial input, even though MCP STDIO command-injection (CVE-2026-30623, MAL-2026-ANTHROPIC-MCP-STDIO reference cases) demonstrates operator-config-as-input is an exploitable surface",
4604
+ "AI-discovered + AI-built exploit classes (GTIG-tracked AI-built 2FA bypass reference case) are not anchored in any MEASURE 2.7 evaluation methodology — the framework treats AI offensive capability as out-of-scope rather than as a category requiring continuous threat-model refresh against the deployed AI system's defensive measurements"
4605
+ ],
4606
+ "real_requirement": "MEASURE 2.7 implementations must extend the security-evaluation scope to: (1) the complete ML-pipeline asset chain including tracking servers, experiment registries, and artifact stores with explicit authentication-and-path-canonicalization testing, (2) MCP-client trust-boundary evaluation treating operator-supplied configuration as adversarial input with command-injection testing on the STDIO / SSE transports, (3) continuous threat-model refresh against AI-discovered and AI-built exploit classes with a defined cadence for refreshing measurement methodology when GTIG / Project Zero / equivalent surface AI-offensive-capability advances.",
4607
+ "status": "open",
4608
+ "opened_date": "2026-05-18",
4609
+ "evidence_cves": [
4610
+ "CVE-2023-43472",
4611
+ "CVE-2026-30623"
4612
+ ],
4613
+ "atlas_refs": [
4614
+ "AML.T0010",
4615
+ "AML.T0016",
4616
+ "AML.T0040",
4617
+ "AML.T0051"
4618
+ ],
4619
+ "attack_refs": [
4620
+ "T1059",
4621
+ "T1190"
4622
+ ],
4623
+ "theater_test": {
4624
+ "claim": "We evaluate AI system security and resilience per NIST AI RMF MEASURE 2.7 across all deployed AI systems.",
4625
+ "test": "Pull the MEASURE 2.7 evaluation plan and supporting evidence. Confirm scope explicitly enumerates (a) ML-pipeline asset chain (tracking servers, experiment registries, artifact stores) with authentication + path-canonicalization testing evidence, (b) MCP-client trust-boundary testing treating operator config as adversarial input, (c) a defined cadence for refreshing measurement methodology against AI-discovered / AI-built exploit advances. Sample the most recent MLflow / MCP-server / AI-offensive-advance event; verify the evaluation plan triggered a measurement-refresh activity. Theater verdict if any of (a)-(c) is absent, or if the sampled event did not trigger a refresh.",
4626
+ "evidence_required": [
4627
+ "MEASURE 2.7 evaluation plan with ML-pipeline + MCP scope",
4628
+ "authentication + path-canonicalization test evidence for ML-pipeline assets",
4629
+ "measurement-methodology refresh log triggered by AI-offensive-capability advances"
4630
+ ],
4631
+ "verdict_when_failed": "compliance-theater"
4632
+ }
4633
+ },
4634
+ "OWASP-ML-Top-10-2023-ML06": {
4635
+ "framework": "OWASP Machine Learning Security Top 10 (2023)",
4636
+ "control_id": "ML06",
4637
+ "control_name": "AI Supply Chain Attacks",
4638
+ "designed_for": "OWASP ML Top 10 ML06 — protecting the machine-learning supply chain including model artifacts, training data, pre-trained models, and third-party ML components. Anchored on the assumption that the supply chain is the model-and-data ingest path and that hardening it covers provenance, integrity, and source authenticity of artifacts entering the ML system.",
4639
+ "misses": [
4640
+ "ML06 scopes supply-chain integrity to the model and training data; ML-pipeline tooling that hosts those artifacts (MLflow tracking servers, experiment registries, artifact stores — MLflow CVE-2023-43472 reference case) is in a coverage gap because it is operator infrastructure rather than a supplied artifact",
4641
+ "ML06 does not enumerate ML-pipeline-tooling auth defaults as a supply-chain risk — MLflow tracking servers shipping with no-authentication defaults expose model + experiment IO without satisfying any of the ML06 'protect the supply chain' controls because the controls focus on what comes in, not on what holds it",
4642
+ "Threat-model evidence under ML06 typically covers model-provenance and dataset-poisoning; it does not require evidence that the ML-pipeline tooling estate has been audited for authenticated-by-default configuration or that path-canonicalization / unauthenticated-access CVE classes against the tooling are continuously monitored"
4643
+ ],
4644
+ "real_requirement": "ML06 implementations must extend the supply-chain frame to the ML-pipeline tooling estate: documented authentication enforcement on MLflow / experiment-registry / artifact-store endpoints, continuous monitoring of CVE classes affecting that tooling (path traversal, unauthenticated access, deserialization), and a documented hardening baseline applied at deployment time rather than relying on the tool's default configuration. Threat-model evidence must demonstrate that ML06 coverage reaches the operator-controlled tooling that hosts supplied artifacts, not only the supply chain feeding into it.",
4645
+ "status": "open",
4646
+ "opened_date": "2026-05-18",
4647
+ "evidence_cves": [
4648
+ "CVE-2023-43472"
4649
+ ],
4650
+ "atlas_refs": [
4651
+ "AML.T0010",
4652
+ "AML.T0016"
4653
+ ],
4654
+ "attack_refs": [
4655
+ "T1190",
4656
+ "T1083"
4657
+ ],
4658
+ "theater_test": {
4659
+ "claim": "Our ML supply chain is protected per OWASP ML Top 10 ML06 — provenance, integrity, and source authenticity validated.",
4660
+ "test": "Pull the ML06 evidence pack and the ML-pipeline tooling inventory (MLflow, experiment registries, artifact stores). For each tool, confirm authentication is enforced (not the default no-auth configuration) and that a documented hardening baseline was applied at deployment. Cross-reference tooling versions against the CVE catalog for the past 12 months for path-traversal / unauthenticated-access / deserialization classes. Theater verdict if any ML-pipeline tool runs with default no-auth configuration, if any KEV-or-public-PoC tooling CVE exceeded a 72h mitigation SLA, or if ML06 evidence collapses to model-provenance and dataset-poisoning without reaching the tooling estate.",
4661
+ "evidence_required": [
4662
+ "ML-pipeline tooling inventory with authentication-enforcement evidence",
4663
+ "deployment-time hardening baseline document",
4664
+ "ML-pipeline-tooling CVE mitigation timeline for the past 12 months"
4665
+ ],
4666
+ "verdict_when_failed": "compliance-theater"
4667
+ }
4668
+ },
4669
+ "NIS2-Art21-network-security": {
4670
+ "framework": "EU NIS2 Directive (Directive (EU) 2022/2555)",
4671
+ "control_id": "Art-21-network-security",
4672
+ "control_name": "Security of network and information systems",
4673
+ "designed_for": "Article 21(2)(a) — policies on risk analysis and information system security, with Article 21(2)(e) covering security in network and information systems acquisition, development, and maintenance. Applies to essential and important entities operating critical infrastructure including telecom, energy, water, transport, and digital infrastructure providers operating SD-WAN / network-fabric controllers.",
4674
+ "misses": [
4675
+ "Article 21 requires 'appropriate and proportionate' measures but does not specify a CISA-KEV-tied response SLA for network-fabric controllers (Cisco SD-WAN CVE-2026-20182 auth-bypass reference case) even though such controllers are essential-service infrastructure under Annex I/II — operators can claim Article 21 compliance with a generic 30-day patch SLA on infrastructure where 4h is the threat-realistic window",
4676
+ "The directive does not enumerate authentication-bypass CVE classes on network-fabric controllers as a distinct risk category requiring its own threat-modelling and incident-response treatment, leaving operators free to bucket SD-WAN / NMS controller CVEs alongside generic IT software in the risk register",
4677
+ "Cross-jurisdiction notification obligations (NIS2 24h early-warning + 72h full report) are anchored on awareness of a significant incident, but the directive does not require that the awareness pipeline tag network-fabric controller compromises as automatically significant — leaving definition discretion to the operator at exactly the moment when the clock should be ticking"
4678
+ ],
4679
+ "real_requirement": "NIS2 Art. 21 implementations covering network-fabric infrastructure must add: (1) a CISA-KEV-tied response SLA of 24h for KEV-listed authentication-bypass CVEs on SD-WAN / NMS / network-fabric controllers, (2) explicit threat-model entry for the authentication-bypass CVE class on network-fabric controllers with documented compensating controls (management-plane segmentation, controller-to-controller mutual auth audit), (3) auto-significance tagging for any network-fabric controller compromise such that the 24h early-warning clock starts at detection rather than at operator-judged significance.",
4680
+ "status": "open",
4681
+ "opened_date": "2026-05-18",
4682
+ "evidence_cves": [
4683
+ "CVE-2024-21762",
4684
+ "CVE-2026-20182"
4685
+ ],
4686
+ "atlas_refs": [],
4687
+ "attack_refs": [
4688
+ "T1190",
4689
+ "T1078"
4690
+ ],
4691
+ "theater_test": {
4692
+ "claim": "Our NIS2 Art. 21 risk-management measures cover network-fabric infrastructure with proportionate controls.",
4693
+ "test": "Pull the Art. 21 risk register and confirm an explicit entry for the authentication-bypass CVE class on SD-WAN / NMS / network-fabric controllers with a CISA-KEV-tied 24h mitigation SLA. Pull the past 12 months of KEV-listed network-fabric-controller CVEs; measure compliance with the documented SLA. Confirm the incident-classification policy auto-tags any network-fabric-controller compromise as significant for the 24h early-warning clock. Theater verdict if the risk register lacks the dedicated entry, if any KEV-listed CVE exceeded the documented SLA, or if significance tagging is operator-judgment rather than auto-significance for the asset class.",
4694
+ "evidence_required": [
4695
+ "Art. 21 risk register entry for network-fabric authentication-bypass class",
4696
+ "KEV-listed network-fabric controller CVE mitigation timeline",
4697
+ "incident-classification policy with auto-significance trigger for the asset class"
4698
+ ],
4699
+ "verdict_when_failed": "compliance-theater"
4700
+ }
4701
+ },
4702
+ "NIS2-Art21-business-continuity": {
4703
+ "framework": "EU NIS2 Directive (Directive (EU) 2022/2555)",
4704
+ "control_id": "Art-21-business-continuity",
4705
+ "control_name": "Business continuity and crisis management",
4706
+ "designed_for": "Article 21(2)(c) — business continuity, such as backup management and disaster recovery, and crisis management. Applies to essential and important entities to ensure service continuity in the face of cyber incidents including ransomware, supply-chain compromise, and infrastructure failure.",
4707
+ "misses": [
4708
+ "Article 21(2)(c) presumes backup infrastructure is part of the continuity solution; backup-appliance compromise (QNAP Hyper Data Protector CVE-2025-59389 reference case) inverts the assumption — the backup infrastructure becomes the disruption pivot rather than the recovery path, breaking the continuity plan at exactly the moment it is supposed to engage",
4709
+ "Crisis-management evidence under Art. 21(2)(c) typically validates that the continuity plan documents the backup-restore workflow; it does not validate that the backup infrastructure itself has been audited for integrity between snapshots, leaving a window where the recovery substrate is compromised but the continuity plan does not detect it",
4710
+ "The directive does not require KEV-tied patch SLAs on backup infrastructure equivalent to production-system SLAs — backup appliances are often excluded from the essential-service patch programme because they are treated as out-of-band, even though their compromise is a direct path to continuity failure plus double-extortion ransomware"
4711
+ ],
4712
+ "real_requirement": "NIS2 Art. 21(2)(c) implementations must add backup-infrastructure resilience controls: KEV-tied patch SLA for backup appliances equivalent to production-system SLAs (4h for KEV+PoC, 24h for KEV-only, 72h for public-PoC without KEV), management-plane integrity attestation between snapshots, and an explicit continuity-plan threat-model entry covering the backup infrastructure as a compromise pivot. Tabletop exercises must include a scenario where the backup substrate is the disruption pivot, not only where the production system is the target.",
4713
+ "status": "open",
4714
+ "opened_date": "2026-05-18",
4715
+ "evidence_cves": [
4716
+ "CVE-2025-59389"
4717
+ ],
4718
+ "atlas_refs": [],
4719
+ "attack_refs": [
4720
+ "T1190",
4721
+ "T1490",
4722
+ "T1491"
4723
+ ],
4724
+ "theater_test": {
4725
+ "claim": "Our NIS2 Art. 21(2)(c) business-continuity programme covers backup management and crisis scenarios.",
4726
+ "test": "Pull the Art. 21(2)(c) evidence pack and the continuity-plan threat-model. Confirm an explicit entry for backup-infrastructure compromise as a continuity-disruption pivot. Confirm backup appliances are in scope for the essential-service KEV-tied patch SLA. Pull the past 12 months of tabletop-exercise records; confirm at least one scenario exercised backup-substrate compromise (not only production-side ransomware). Theater verdict if backup infrastructure is excluded from the production patch programme, if any KEV-listed backup-appliance CVE exceeded the documented SLA, or if no tabletop in the past 12 months exercised the backup-as-pivot scenario.",
4727
+ "evidence_required": [
4728
+ "Art. 21(2)(c) continuity-plan threat-model including backup-as-pivot entry",
4729
+ "backup-appliance KEV-tied patch SLA equivalent to production",
4730
+ "tabletop-exercise record covering backup-substrate compromise scenario"
4731
+ ],
4732
+ "verdict_when_failed": "compliance-theater"
4733
+ }
4734
+ },
4735
+ "PCI-DSS-4.0-5.1": {
4736
+ "framework": "PCI DSS 4.0.1",
4737
+ "control_id": "5.1",
4738
+ "control_name": "Processes and mechanisms for protecting all systems and networks from malicious software",
4739
+ "designed_for": "Section 5.1 of PCI DSS 4.0.1 — defining processes and mechanisms for protecting systems and networks from malicious software. Underpins the anti-malware requirements in 5.2 and 5.3. Anchored on the assumption that the deployed anti-malware tooling is itself a trusted component of the cardholder-data-environment defence-in-depth posture.",
4740
+ "misses": [
4741
+ "Section 5.1 frames anti-malware as a control surface; it does not require evidence that the deployed anti-malware tooling itself (QNAP Malware Remover CVE-2025-11837 code-injection reference case) has been audited for code-injection / privilege-escalation / arbitrary-code-execution CVE classes — the tool can satisfy the deployment-coverage metric while being the exploitable component",
4742
+ "The control set does not enumerate 'deployed security tool is the vulnerability' as a recognized failure mode, leaving operators without a PCI-DSS-driven response tier when the anti-malware product itself appears on CISA KEV",
4743
+ "PCI-DSS evidence collection under 5.1 typically demonstrates anti-malware deployment percentages and definition currency; it does not require continuous monitoring of CVE classes affecting the anti-malware product line itself with KEV-tied patch SLAs equivalent to or stricter than payment-application SLAs"
4744
+ ],
4745
+ "real_requirement": "PCI DSS 5.1 implementations must add anti-malware-tooling-as-target controls: continuous monitoring of CVE classes affecting deployed anti-malware products with KEV-tied patch SLAs equivalent to payment-application SLAs (72h for KEV+PoC, 1 month residual for non-exploited critical), documented compensating controls when an in-scope anti-malware product appears on KEV (isolation, removal, vendor escalation), and an explicit recognition that anti-malware deployment coverage is necessary but insufficient when the deployed tool itself is the vulnerability.",
4746
+ "status": "open",
4747
+ "opened_date": "2026-05-18",
4748
+ "evidence_cves": [
4749
+ "CVE-2025-11837"
4750
+ ],
4751
+ "atlas_refs": [],
4752
+ "attack_refs": [
4753
+ "T1059",
4754
+ "T1554",
4755
+ "T1562.001"
4756
+ ],
4757
+ "theater_test": {
4758
+ "claim": "We protect all in-scope systems from malicious software per PCI DSS 5.1.",
4759
+ "test": "Pull the PCI DSS 5.1 evidence pack and the anti-malware tooling inventory. Cross-reference each deployed anti-malware product against the CISA KEV catalog and the CVE-class catalog for the past 12 months (code injection, privilege escalation, arbitrary code execution). Confirm a documented KEV-tied patch SLA exists for anti-malware tooling equivalent to payment-application SLAs. Sample the most recent KEV-listed anti-malware CVE (CVE-2025-11837 reference case if applicable); verify the documented response. Theater verdict if anti-malware tooling has no KEV-tied SLA distinct from generic IT patching, if any KEV-listed anti-malware CVE exceeded a 72h mitigation SLA, or if PCI-DSS 5.1 evidence stops at deployment-coverage percentages without addressing the tool-as-target failure mode.",
4760
+ "evidence_required": [
4761
+ "anti-malware tooling inventory with KEV-tied patch SLA document",
4762
+ "anti-malware product CVE mitigation timeline for the past 12 months",
4763
+ "incident record for the sampled KEV-listed anti-malware CVE"
4764
+ ],
4765
+ "verdict_when_failed": "compliance-theater"
4766
+ }
4767
+ },
4768
+ "AU-ISM-1808": {
4769
+ "framework": "Australian Government Information Security Manual (ISM)",
4770
+ "control_id": "ISM-1808",
4771
+ "control_name": "Software supply chain risk management",
4772
+ "designed_for": "ISM control 1808 — managing the risks associated with the software supply chain, including assessing the trustworthiness of software vendors, validating software integrity, and monitoring for supply-chain compromise indicators. Anchored on the assumption that vendor-side SBOM disclosures and maintainer identity are trustworthy inputs to the operator's supply-chain risk model.",
4773
+ "misses": [
4774
+ "ISM-1808 presumes maintainer identity is a reliable trust anchor; worm-class npm-registry compromises (Shai-Hulud MAL-2026-SHAI-HULUD-OSS reference case) publish malicious payloads under legitimate maintainer identity via credential theft + token replay, invalidating the maintainer-identity-as-trust-signal model that ISM-1808 evidence collection relies on",
4775
+ "Vendor-side SBOM truth is treated as authoritative; ISM-1808 does not require independent operator-side SBOM-against-installed-artefact reconciliation, so a worm-injected dependency appears in installed-package telemetry while being absent from the vendor's published SBOM for the canonical version",
4776
+ "ISM-1808 does not enumerate post-publish cooldown periods, maintainer-account-integrity monitoring (MFA enforcement, email-domain expiry tracking), or lockfile audit against known-malicious version sets during active exposure windows as standard controls — leaving operators without a baseline response posture when a worm-class incident is in progress"
4777
+ ],
4778
+ "real_requirement": "ISM-1808 implementations must add ecosystem-specific supply-chain controls: (1) operator-side SBOM-against-installed-artefact reconciliation independent of vendor-published SBOM, (2) maintainer-account-integrity monitoring on critical-path upstream packages (registry-side MFA enforcement evidence, maintainer-email-domain expiry tracking, anomalous-publish detection), (3) post-publish cooldown periods on consumption of fresh releases from systemically-important upstream maintainers, (4) lockfile audit against the known-malicious version set during the active exposure window of any worm-class incident, (5) documented response posture for the worm-class incident category distinct from the generic 'vulnerable dependency' response.",
4779
+ "status": "open",
4780
+ "opened_date": "2026-05-18",
4781
+ "evidence_cves": [
4782
+ "MAL-2026-SHAI-HULUD-OSS"
4783
+ ],
4784
+ "atlas_refs": [
4785
+ "AML.T0010"
4786
+ ],
4787
+ "attack_refs": [
4788
+ "T1195.002",
4789
+ "T1078",
4790
+ "T1567"
4791
+ ],
4792
+ "theater_test": {
4793
+ "claim": "Our software supply-chain risk management satisfies AU ISM control 1808.",
4794
+ "test": "Pull the ISM-1808 evidence pack. Confirm operator-side SBOM-against-installed-artefact reconciliation runs on a defined cadence independent of vendor-published SBOM. Confirm maintainer-account-integrity monitoring is in place for critical-path upstream packages (registry MFA, email-domain expiry, anomalous-publish detection). Confirm a documented worm-class incident-response posture exists distinct from the generic vulnerable-dependency response. Sample the most recent worm-class incident in the past 12 months; verify the response included lockfile audit against the known-malicious version set within the exposure window. Theater verdict if SBOM evidence relies solely on vendor-side data, if maintainer-account-integrity monitoring is undocumented, or if the sampled incident response did not include lockfile audit within the exposure window.",
4795
+ "evidence_required": [
4796
+ "operator-side SBOM reconciliation cadence document",
4797
+ "maintainer-account-integrity monitoring records for critical-path packages",
4798
+ "worm-class incident-response playbook + execution record for sampled incident"
4799
+ ],
4800
+ "verdict_when_failed": "compliance-theater"
4801
+ }
4393
4802
  }
4394
4803
  }
@@ -2937,5 +2937,76 @@
2937
2937
  "ai_discovered_zeroday": false,
2938
2938
  "ai_discovery_source": "human_researcher",
2939
2939
  "ai_assist_factor": "low"
2940
+ },
2941
+ "CVE-2024-21762": {
2942
+ "name": "Fortinet FortiOS / FortiProxy SSL-VPN out-of-bounds write (sslvpnd preauth RCE)",
2943
+ "lesson_date": "2026-05-17",
2944
+ "attack_vector": {
2945
+ "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.",
2946
+ "privileges_required": "none (unauth network reach to the SSL-VPN web surface; SSL-VPN must be enabled on the FortiGate)",
2947
+ "complexity": "low — single-request preauth RCE; public PoCs available within days",
2948
+ "ai_factor": "Not AI-discovered — vendor-internal discovery by Fortinet PSIRT. No AI involvement on either the discovery or weaponization side."
2949
+ },
2950
+ "defense_chain": {
2951
+ "prevention": {
2952
+ "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.",
2953
+ "was_this_required": true,
2954
+ "framework_requiring_it": "CISA BOD 22-01 (KEV remediation — added 2024-02-09 with 7-day deadline)",
2955
+ "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."
2956
+ },
2957
+ "detection": {
2958
+ "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.",
2959
+ "was_this_required": false,
2960
+ "framework_requiring_it": null,
2961
+ "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."
2962
+ },
2963
+ "response": {
2964
+ "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.",
2965
+ "was_this_required": false,
2966
+ "framework_requiring_it": null,
2967
+ "adequacy": "Operationally expensive but necessary for any device with uncertain compromise status; many operators upgraded in place and missed the post-exploitation persistence."
2968
+ }
2969
+ },
2970
+ "framework_coverage": {
2971
+ "NIST-800-53-SI-2": {
2972
+ "covered": true,
2973
+ "adequate": false,
2974
+ "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."
2975
+ },
2976
+ "ISO-27001-2022-A.8.8": {
2977
+ "covered": true,
2978
+ "adequate": false,
2979
+ "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."
2980
+ },
2981
+ "NIS2-Art21-network-security": {
2982
+ "covered": true,
2983
+ "adequate": false,
2984
+ "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."
2985
+ },
2986
+ "DORA-Art-9": {
2987
+ "covered": true,
2988
+ "adequate": false,
2989
+ "gap": "ICT incident management presumes vendor-patch cadence; the appliance-reboot requirement breaks the standard SLA assumption for financial-entity SSL-VPN concentrators."
2990
+ },
2991
+ "UK-CAF-B4": {
2992
+ "covered": true,
2993
+ "adequate": false,
2994
+ "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."
2995
+ },
2996
+ "AU-ISM-1546": {
2997
+ "covered": true,
2998
+ "adequate": "closest",
2999
+ "gap": "Essential 8 patch-applications ML3 (48h) is closer to the operational reality than NIST SI-2 but still misses the mass-scanning window."
3000
+ }
3001
+ },
3002
+ "new_control_requirements": [],
3003
+ "compliance_exposure_score": {
3004
+ "percent_audit_passing_orgs_still_exposed": 60,
3005
+ "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.",
3006
+ "theater_pattern": "patch_management"
3007
+ },
3008
+ "ai_discovered_zeroday": false,
3009
+ "ai_discovery_source": "vendor_research",
3010
+ "ai_assist_factor": "low"
2940
3011
  }
2941
3012
  }
@@ -573,18 +573,22 @@ function lintSkill(entry, ctx) {
573
573
  }
574
574
  }
575
575
 
576
- // v0.13.2 — Hard Rule #1 enforcement at the skill-body layer. Every
577
- // CVE-* / MAL-* mentioned in skill prose SHOULD resolve to an entry
578
- // in data/cve-catalog.json. Hard Rule #1 ("no stale threat intel")
579
- // is enforced for catalog ENTRIES by lib/validate-cve-catalog.js —
580
- // but a skill body that cites a CVE not in the catalog is the
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 ships these as WARNINGS so the forcing function lands
584
- // without breaking existing skill content (2 pre-existing violations:
585
- // ransomware-response cites CVE-2024-21762, cloud-iam-incident cites
586
- // CVE-2026-21370). v0.14.0 will flip body-cites-unknown-CVE to a
587
- // hard error once those two have been triaged.
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
- skillWarnings.push(
599
- `body cites "${id}" but no such entry in data/cve-catalog.json (Hard Rule #1 — no stale threat intel; will hard-fail in v0.14.0)`,
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(