@blamejs/exceptd-skills 0.18.24 → 0.18.25
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 +4 -0
- package/data/_indexes/_meta.json +8 -8
- package/data/_indexes/activity-feed.json +10 -10
- package/data/_indexes/catalog-summaries.json +4 -4
- package/data/_indexes/chains.json +2747 -0
- package/data/attack-techniques.json +19 -2
- package/data/cve-catalog.json +404 -1
- package/data/cwe-catalog.json +5 -1
- package/data/framework-control-gaps.json +23 -3
- package/data/zeroday-lessons.json +246 -2
- package/manifest.json +53 -53
- package/package.json +2 -2
- package/sbom.cdx.json +23 -23
|
@@ -299,6 +299,7 @@
|
|
|
299
299
|
"CVE-2024-9463",
|
|
300
300
|
"CVE-2024-9680",
|
|
301
301
|
"CVE-2025-0411",
|
|
302
|
+
"CVE-2026-0770",
|
|
302
303
|
"CVE-2026-48939"
|
|
303
304
|
],
|
|
304
305
|
"atlas_refs": [
|
|
@@ -430,6 +431,7 @@
|
|
|
430
431
|
"CVE-2021-20035",
|
|
431
432
|
"CVE-2021-20124",
|
|
432
433
|
"CVE-2021-26086",
|
|
434
|
+
"CVE-2021-27137",
|
|
433
435
|
"CVE-2021-36380",
|
|
434
436
|
"CVE-2021-40407",
|
|
435
437
|
"CVE-2021-40655",
|
|
@@ -634,7 +636,9 @@
|
|
|
634
636
|
"CVE-2026-56155",
|
|
635
637
|
"CVE-2026-56164",
|
|
636
638
|
"CVE-2026-56290",
|
|
637
|
-
"CVE-2026-56291"
|
|
639
|
+
"CVE-2026-56291",
|
|
640
|
+
"CVE-2026-60137",
|
|
641
|
+
"CVE-2026-63030"
|
|
638
642
|
],
|
|
639
643
|
"atlas_refs": [],
|
|
640
644
|
"attack_refs": [
|
|
@@ -1795,6 +1799,7 @@
|
|
|
1795
1799
|
"CVE-2021-26086",
|
|
1796
1800
|
"CVE-2021-26828",
|
|
1797
1801
|
"CVE-2021-26829",
|
|
1802
|
+
"CVE-2021-27137",
|
|
1798
1803
|
"CVE-2021-30952",
|
|
1799
1804
|
"CVE-2021-31196",
|
|
1800
1805
|
"CVE-2021-3129",
|
|
@@ -2220,6 +2225,7 @@
|
|
|
2220
2225
|
"CVE-2026-0257",
|
|
2221
2226
|
"CVE-2026-0300",
|
|
2222
2227
|
"CVE-2026-0766",
|
|
2228
|
+
"CVE-2026-0770",
|
|
2223
2229
|
"CVE-2026-11645",
|
|
2224
2230
|
"CVE-2026-12569",
|
|
2225
2231
|
"CVE-2026-1281",
|
|
@@ -2309,6 +2315,8 @@
|
|
|
2309
2315
|
"CVE-2026-54420",
|
|
2310
2316
|
"CVE-2026-56291",
|
|
2311
2317
|
"CVE-2026-58644",
|
|
2318
|
+
"CVE-2026-60137",
|
|
2319
|
+
"CVE-2026-63030",
|
|
2312
2320
|
"CVE-2026-9082"
|
|
2313
2321
|
],
|
|
2314
2322
|
"atlas_refs": [],
|
|
@@ -2483,7 +2491,8 @@
|
|
|
2483
2491
|
"CVE-2025-21391",
|
|
2484
2492
|
"CVE-2026-39987",
|
|
2485
2493
|
"CVE-2026-42208",
|
|
2486
|
-
"CVE-2026-42897"
|
|
2494
|
+
"CVE-2026-42897",
|
|
2495
|
+
"CVE-2026-63030"
|
|
2487
2496
|
],
|
|
2488
2497
|
"atlas_refs": [
|
|
2489
2498
|
"AML.T0051",
|
|
@@ -3488,6 +3497,7 @@
|
|
|
3488
3497
|
"CVE-2021-26086",
|
|
3489
3498
|
"CVE-2021-26828",
|
|
3490
3499
|
"CVE-2021-26829",
|
|
3500
|
+
"CVE-2021-27137",
|
|
3491
3501
|
"CVE-2021-30952",
|
|
3492
3502
|
"CVE-2021-31196",
|
|
3493
3503
|
"CVE-2021-3129",
|
|
@@ -3968,6 +3978,7 @@
|
|
|
3968
3978
|
"CVE-2026-0257",
|
|
3969
3979
|
"CVE-2026-0300",
|
|
3970
3980
|
"CVE-2026-0766",
|
|
3981
|
+
"CVE-2026-0770",
|
|
3971
3982
|
"CVE-2026-11645",
|
|
3972
3983
|
"CVE-2026-12569",
|
|
3973
3984
|
"CVE-2026-1281",
|
|
@@ -4070,6 +4081,8 @@
|
|
|
4070
4081
|
"CVE-2026-56164",
|
|
4071
4082
|
"CVE-2026-56291",
|
|
4072
4083
|
"CVE-2026-58644",
|
|
4084
|
+
"CVE-2026-60137",
|
|
4085
|
+
"CVE-2026-63030",
|
|
4073
4086
|
"CVE-2026-6973",
|
|
4074
4087
|
"CVE-2026-7473",
|
|
4075
4088
|
"CVE-2026-9082"
|
|
@@ -6593,7 +6606,8 @@
|
|
|
6593
6606
|
"CVE-2026-54420",
|
|
6594
6607
|
"CVE-2026-55255",
|
|
6595
6608
|
"CVE-2026-56155",
|
|
6596
|
-
"CVE-2026-56291"
|
|
6609
|
+
"CVE-2026-56291",
|
|
6610
|
+
"CVE-2026-60137"
|
|
6597
6611
|
],
|
|
6598
6612
|
"atlas_refs": [],
|
|
6599
6613
|
"attack_refs": [
|
|
@@ -7429,6 +7443,7 @@
|
|
|
7429
7443
|
"CVE-2020-29574",
|
|
7430
7444
|
"CVE-2021-20035",
|
|
7431
7445
|
"CVE-2021-26086",
|
|
7446
|
+
"CVE-2021-27137",
|
|
7432
7447
|
"CVE-2021-3129",
|
|
7433
7448
|
"CVE-2021-33515",
|
|
7434
7449
|
"CVE-2021-36380",
|
|
@@ -7691,6 +7706,7 @@
|
|
|
7691
7706
|
"CVE-2025-68668",
|
|
7692
7707
|
"CVE-2025-8747",
|
|
7693
7708
|
"CVE-2026-0766",
|
|
7709
|
+
"CVE-2026-0770",
|
|
7694
7710
|
"CVE-2026-10520",
|
|
7695
7711
|
"CVE-2026-11645",
|
|
7696
7712
|
"CVE-2026-12569",
|
|
@@ -7748,6 +7764,8 @@
|
|
|
7748
7764
|
"CVE-2026-56291",
|
|
7749
7765
|
"CVE-2026-5760",
|
|
7750
7766
|
"CVE-2026-58644",
|
|
7767
|
+
"CVE-2026-60137",
|
|
7768
|
+
"CVE-2026-63030",
|
|
7751
7769
|
"CVE-2026-7473",
|
|
7752
7770
|
"CVE-2026-8398",
|
|
7753
7771
|
"CVE-2026-9082",
|
|
@@ -8417,6 +8435,7 @@
|
|
|
8417
8435
|
"CVE-2021-20035",
|
|
8418
8436
|
"CVE-2021-20123",
|
|
8419
8437
|
"CVE-2021-20124",
|
|
8438
|
+
"CVE-2021-27137",
|
|
8420
8439
|
"CVE-2021-33044",
|
|
8421
8440
|
"CVE-2021-33045",
|
|
8422
8441
|
"CVE-2021-36380",
|
|
@@ -8495,6 +8514,7 @@
|
|
|
8495
8514
|
"CVE-2025-67038",
|
|
8496
8515
|
"CVE-2025-68668",
|
|
8497
8516
|
"CVE-2026-0257",
|
|
8517
|
+
"CVE-2026-0770",
|
|
8498
8518
|
"CVE-2026-15409",
|
|
8499
8519
|
"CVE-2026-15410",
|
|
8500
8520
|
"CVE-2026-20182",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_meta": {
|
|
3
3
|
"schema_version": "1.1.0",
|
|
4
|
-
"last_updated": "2026-07-
|
|
4
|
+
"last_updated": "2026-07-22",
|
|
5
5
|
"last_threat_review": "2026-05-17",
|
|
6
6
|
"purpose": "Zero-day learning loop output. Each entry maps a CVE to: attack vector, defense chain analysis, framework coverage, new control requirements generated, and exposure scoring. v1.1.0 (2026-05-15): every entry now carries ai_discovered_zeroday boolean + ai_discovery_source enum + ai_discovery_date + ai_assist_factor ladder, per AGENTS.md Hard Rule #7.",
|
|
7
7
|
"note": "Never delete entries. Closed gaps are marked status: closed. History is data.",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"rebuild_after_days": 365,
|
|
18
18
|
"note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
|
|
19
19
|
},
|
|
20
|
-
"entry_count":
|
|
20
|
+
"entry_count": 823
|
|
21
21
|
},
|
|
22
22
|
"CVE-2026-31431": {
|
|
23
23
|
"name": "Copy Fail",
|
|
@@ -43403,5 +43403,249 @@
|
|
|
43403
43403
|
]
|
|
43404
43404
|
}
|
|
43405
43405
|
]
|
|
43406
|
+
},
|
|
43407
|
+
"CVE-2026-60137": {
|
|
43408
|
+
"name": "WordPress Core SQL Injection Vulnerability",
|
|
43409
|
+
"lesson_date": "2026-07-21",
|
|
43410
|
+
"ai_discovered_zeroday": false,
|
|
43411
|
+
"ai_discovery_source": "vendor_research",
|
|
43412
|
+
"ai_discovery_date": "2026-07-17",
|
|
43413
|
+
"ai_assist_factor": "none",
|
|
43414
|
+
"attack_vector": {
|
|
43415
|
+
"description": "A SQL injection in WP_Query’s author__not_in parameter, reachable unauthenticated only when chained with CVE-2026-63030’s REST batch-route desynchronization, forms the data-access half of the wp2shell pre-auth RCE chain against default WordPress installs.",
|
|
43416
|
+
"privileges_required": "none (unauthenticated when chained via the REST batch endpoint)",
|
|
43417
|
+
"complexity": "high standalone (needs a plugin/theme to forward untrusted input), low as part of the wp2shell chain",
|
|
43418
|
+
"ai_factor": "Not AI-discovered — responsibly disclosed by TF1T, dtro, haongo. No AI involvement documented."
|
|
43419
|
+
},
|
|
43420
|
+
"defense_chain": {
|
|
43421
|
+
"prevention": {
|
|
43422
|
+
"what_would_have_worked": "Upgrade to 6.8.6 / 6.9.5 / 7.0.2 immediately, and WAF-block /wp-json/batch/v1 so the SQLi cannot be smuggled unauthenticated",
|
|
43423
|
+
"was_this_required": true,
|
|
43424
|
+
"framework_requiring_it": "CISA BOD 22-01 (KEV remediation, added 2026-07-21, due 2026-08-04)",
|
|
43425
|
+
"adequacy": "Patch closes the SQLi, but any pre-patch internet-facing install must be treated as potentially compromised (audit for rogue admin accounts and plugins)."
|
|
43426
|
+
},
|
|
43427
|
+
"detection": {
|
|
43428
|
+
"what_would_have_worked": "Alert on unauthenticated /wp-json/batch/v1 traffic and anomalous WP_Query execution referencing author__not_in",
|
|
43429
|
+
"was_this_required": false,
|
|
43430
|
+
"framework_requiring_it": null,
|
|
43431
|
+
"adequacy": "Detection catches the injection attempt but the chain can complete in a single request before response."
|
|
43432
|
+
},
|
|
43433
|
+
"response": {
|
|
43434
|
+
"what_would_have_worked": "Remove unknown admin accounts and plugins, rotate secrets/salts, and review the database for tampering",
|
|
43435
|
+
"was_this_required": false,
|
|
43436
|
+
"framework_requiring_it": null,
|
|
43437
|
+
"adequacy": "Because the chain yields RCE, response must assume full-site compromise, not just a data-read."
|
|
43438
|
+
}
|
|
43439
|
+
},
|
|
43440
|
+
"framework_coverage": {
|
|
43441
|
+
"NIST-800-53-SI-2": {
|
|
43442
|
+
"covered": true,
|
|
43443
|
+
"adequate": false,
|
|
43444
|
+
"gap": "A 30-day flaw-remediation SLA is far slower than the observed window: public wp2shell exploitation followed the 2026-07-17 release within days, so a periodic patch cycle cannot close the SQLi half of the chain before mass compromise."
|
|
43445
|
+
},
|
|
43446
|
+
"NIS2-Art21-vulnerability-management": {
|
|
43447
|
+
"covered": true,
|
|
43448
|
+
"adequate": false,
|
|
43449
|
+
"gap": "Coordinated vulnerability-management expectations do not compel the emergency, same-week patching a KEV-listed pre-auth RCE chain on internet-facing CMS demands, nor the WAF blocking of /wp-json/batch/v1 that actually breaks the chain."
|
|
43450
|
+
},
|
|
43451
|
+
"UK-CAF-B4": {
|
|
43452
|
+
"covered": true,
|
|
43453
|
+
"adequate": false,
|
|
43454
|
+
"gap": "System-security expectations do not by themselves require validating that plugin/theme code never forwards untrusted input into WP_Query parameters like author__not_in, which is the reachability precondition this SQLi exploits."
|
|
43455
|
+
},
|
|
43456
|
+
"AU-Essential-8-Patch": {
|
|
43457
|
+
"covered": true,
|
|
43458
|
+
"adequate": false,
|
|
43459
|
+
"gap": "Essential-Eight patch maturity (48h internet-facing) still trails the same-week exploitation, and app-hardening controls do not address that this SQLi becomes unauthenticated only when combined with a separate Core routing flaw."
|
|
43460
|
+
},
|
|
43461
|
+
"ISO-27001-2022-A.8.8": {
|
|
43462
|
+
"covered": true,
|
|
43463
|
+
"adequate": false,
|
|
43464
|
+
"gap": "Periodic technical-vulnerability management does not compel the input-validation review of the WP_Query surface that would prevent untrusted data reaching author__not_in in the first place."
|
|
43465
|
+
}
|
|
43466
|
+
}
|
|
43467
|
+
},
|
|
43468
|
+
"CVE-2026-63030": {
|
|
43469
|
+
"name": "WordPress Core Interpretation Conflict Vulnerability",
|
|
43470
|
+
"lesson_date": "2026-07-21",
|
|
43471
|
+
"ai_discovered_zeroday": false,
|
|
43472
|
+
"ai_discovery_source": "vendor_research",
|
|
43473
|
+
"ai_discovery_date": "2026-07-17",
|
|
43474
|
+
"ai_assist_factor": "none",
|
|
43475
|
+
"attack_vector": {
|
|
43476
|
+
"description": "An interpretation conflict in the WordPress REST batch endpoint desynchronizes handler dispatch, letting an unauthenticated attacker bypass validation, smuggle the CVE-2026-60137 SQLi, forge an administrator, and upload a malicious plugin for RCE on default installs (wp2shell).",
|
|
43477
|
+
"privileges_required": "none (unauthenticated, network-reachable REST endpoint)",
|
|
43478
|
+
"complexity": "low — unauthenticated request chain, reliable public PoC",
|
|
43479
|
+
"ai_factor": "Not AI-discovered — reported by Adam Kues (Assetnote / Searchlight Cyber). No AI involvement documented."
|
|
43480
|
+
},
|
|
43481
|
+
"defense_chain": {
|
|
43482
|
+
"prevention": {
|
|
43483
|
+
"what_would_have_worked": "Upgrade to 6.9.5 / 7.0.2 immediately; interim, WAF-block /wp-json/batch/v1 to break the route-confusion",
|
|
43484
|
+
"was_this_required": true,
|
|
43485
|
+
"framework_requiring_it": "CISA BOD 22-01 (KEV remediation, added 2026-07-21, accelerated 3-day due date 2026-07-24)",
|
|
43486
|
+
"adequacy": "Patch removes the dispatch confusion, but the 3-day deadline reflects that default installs were being mass-exploited; pre-patch servers must be treated as compromised."
|
|
43487
|
+
},
|
|
43488
|
+
"detection": {
|
|
43489
|
+
"what_would_have_worked": "Alert on unauthenticated batch requests followed by new admin accounts or plugin uploads",
|
|
43490
|
+
"was_this_required": false,
|
|
43491
|
+
"framework_requiring_it": null,
|
|
43492
|
+
"adequacy": "The single-request chain can forge an admin and drop a plugin before monitoring reacts."
|
|
43493
|
+
},
|
|
43494
|
+
"response": {
|
|
43495
|
+
"what_would_have_worked": "Remove rogue admins and plugins, rotate all secrets, and rebuild from known-good if a shell was planted",
|
|
43496
|
+
"was_this_required": false,
|
|
43497
|
+
"framework_requiring_it": null,
|
|
43498
|
+
"adequacy": "RCE on a CMS is a full-host compromise; response must extend to everything the web user can reach."
|
|
43499
|
+
}
|
|
43500
|
+
},
|
|
43501
|
+
"framework_coverage": {
|
|
43502
|
+
"NIST-800-53-SI-2": {
|
|
43503
|
+
"covered": true,
|
|
43504
|
+
"adequate": false,
|
|
43505
|
+
"gap": "The 30-day flaw-remediation SLA is defeated by an accelerated 3-day KEV deadline: this pre-auth RCE was exploited in the wild within days of disclosure, so any periodic patch cadence leaves default installs owned before the ticket is even triaged."
|
|
43506
|
+
},
|
|
43507
|
+
"NIS2-Art21-incident-handling": {
|
|
43508
|
+
"covered": true,
|
|
43509
|
+
"adequate": false,
|
|
43510
|
+
"gap": "Incident-handling requirements assume detection of a breach, but an unauthenticated single-request chain that forges an admin and drops a plugin can complete before any monitoring fires; the control does not mandate the WAF virtual-patch of /wp-json/batch/v1 that actually blocks it pre-patch."
|
|
43511
|
+
},
|
|
43512
|
+
"UK-CAF-B4": {
|
|
43513
|
+
"covered": true,
|
|
43514
|
+
"adequate": false,
|
|
43515
|
+
"gap": "System-security expectations do not by themselves require removing or authenticating the REST batch endpoint whose handler-dispatch confusion is the entire vulnerability, leaving default internet-facing installs reachable unauthenticated."
|
|
43516
|
+
},
|
|
43517
|
+
"AU-Essential-8-Patch": {
|
|
43518
|
+
"covered": true,
|
|
43519
|
+
"adequate": false,
|
|
43520
|
+
"gap": "Essential-Eight 48h patch maturity for internet-facing systems still trails the same-week mass exploitation, and does not address that the flaw yields code execution on a DEFAULT install with no plugins, config, or credentials required."
|
|
43521
|
+
},
|
|
43522
|
+
"ISO-27001-2022-A.8.8": {
|
|
43523
|
+
"covered": true,
|
|
43524
|
+
"adequate": false,
|
|
43525
|
+
"gap": "Periodic technical-vulnerability management cannot compel the emergency out-of-band upgrade to 6.9.5 / 7.0.2 that a KEV-listed unauthenticated RCE with a 3-day remediation window demands."
|
|
43526
|
+
}
|
|
43527
|
+
}
|
|
43528
|
+
},
|
|
43529
|
+
"CVE-2026-0770": {
|
|
43530
|
+
"name": "Langflow Inclusion of Functionality from Untrusted Control Sphere Vulnerability",
|
|
43531
|
+
"lesson_date": "2026-07-21",
|
|
43532
|
+
"ai_discovered_zeroday": false,
|
|
43533
|
+
"ai_discovery_source": "vendor_research",
|
|
43534
|
+
"ai_discovery_date": "2026-01-09",
|
|
43535
|
+
"ai_assist_factor": "none",
|
|
43536
|
+
"attack_vector": {
|
|
43537
|
+
"description": "An unauthenticated POST to Langflow’s /api/v1/validate/code reaches exec() with an exec_globals context exposing importlib and builtins, giving remote code execution as the Langflow process (root in default containers); observed exploitation steals AWS credentials and cloud metadata.",
|
|
43538
|
+
"privileges_required": "none (unauthenticated, network-reachable endpoint)",
|
|
43539
|
+
"complexity": "low — single crafted HTTP request, multiple public PoCs",
|
|
43540
|
+
"ai_factor": "Not AI-discovered — reported by Trend Research via ZDI. The affected product is an LLM/agent framework, but the flaw is a conventional web-app RCE, not a model-level attack."
|
|
43541
|
+
},
|
|
43542
|
+
"defense_chain": {
|
|
43543
|
+
"prevention": {
|
|
43544
|
+
"what_would_have_worked": "Remove or authenticate the /api/v1/validate/code endpoint and network-isolate Langflow (do not expose port 7860 to untrusted networks)",
|
|
43545
|
+
"was_this_required": true,
|
|
43546
|
+
"framework_requiring_it": "CISA BOD 22-01 (KEV remediation, added 2026-07-21, due 2026-07-24)",
|
|
43547
|
+
"adequacy": "GitHub’s advisory records no patched version, so patching alone is not an option — the effective control is removing exposure and isolating the service."
|
|
43548
|
+
},
|
|
43549
|
+
"detection": {
|
|
43550
|
+
"what_would_have_worked": "Alert on unauthenticated POSTs to /api/v1/validate/code and on Langflow spawning subprocesses or reaching cloud-metadata (169.254.169.254)",
|
|
43551
|
+
"was_this_required": false,
|
|
43552
|
+
"framework_requiring_it": null,
|
|
43553
|
+
"adequacy": "Detection catches exploitation attempts but the single-request RCE executes before a response."
|
|
43554
|
+
},
|
|
43555
|
+
"response": {
|
|
43556
|
+
"what_would_have_worked": "Rotate any AWS/cloud credentials and secrets reachable from the host, rebuild the container, and audit for second-stage malware",
|
|
43557
|
+
"was_this_required": false,
|
|
43558
|
+
"framework_requiring_it": null,
|
|
43559
|
+
"adequacy": "Because exploitation harvested cloud credentials, response must extend to every credential the compromised host could reach."
|
|
43560
|
+
}
|
|
43561
|
+
},
|
|
43562
|
+
"framework_coverage": {
|
|
43563
|
+
"NIST-800-53-SI-2": {
|
|
43564
|
+
"covered": true,
|
|
43565
|
+
"adequate": false,
|
|
43566
|
+
"gap": "A flaw-remediation SLA is moot when GitHub’s advisory records no patched version: SI-2 assumes a vendor fix exists to apply, but this KEV-listed RCE had no confirmed fixed release, so the only real control is removing the exposed /api/v1/validate/code surface, which SI-2 does not compel."
|
|
43567
|
+
},
|
|
43568
|
+
"NIS2-Art21-network-security": {
|
|
43569
|
+
"covered": true,
|
|
43570
|
+
"adequate": false,
|
|
43571
|
+
"gap": "Network-security measures do not by default require isolating an internal AI-development tool like Langflow from untrusted networks, yet unauthenticated internet exposure of port 7860 is exactly what turns this into mass-scanned root RCE."
|
|
43572
|
+
},
|
|
43573
|
+
"UK-CAF-B4": {
|
|
43574
|
+
"covered": true,
|
|
43575
|
+
"adequate": false,
|
|
43576
|
+
"gap": "System-security expectations do not mandate treating an LLM-app framework as a code-execution service that must never accept untrusted input to an eval/exec endpoint, which is the design flaw the exec_globals context exposes."
|
|
43577
|
+
},
|
|
43578
|
+
"AU-Essential-8-App-Hardening": {
|
|
43579
|
+
"covered": true,
|
|
43580
|
+
"adequate": false,
|
|
43581
|
+
"gap": "Application-hardening guidance is written for browsers/office suites and does not address disabling or authenticating a code-validation endpoint that evaluates attacker Python; Essential-Eight patch maturity is also unusable here because no confirmed patched version exists."
|
|
43582
|
+
},
|
|
43583
|
+
"ISO-27001-2022-A.8.8": {
|
|
43584
|
+
"covered": true,
|
|
43585
|
+
"adequate": false,
|
|
43586
|
+
"gap": "Technical-vulnerability management cannot drive a patch that the vendor has not shipped; without a fixed release it does not compel the compensating network isolation and endpoint removal that actually stop exploitation of this unauthenticated exec() surface."
|
|
43587
|
+
}
|
|
43588
|
+
}
|
|
43589
|
+
},
|
|
43590
|
+
"CVE-2021-27137": {
|
|
43591
|
+
"name": "DD-WRT Stack-Based Buffer Overflow Vulnerability",
|
|
43592
|
+
"lesson_date": "2026-07-21",
|
|
43593
|
+
"ai_discovered_zeroday": false,
|
|
43594
|
+
"ai_discovery_source": "human_researcher",
|
|
43595
|
+
"ai_discovery_date": "2021-03-24",
|
|
43596
|
+
"ai_assist_factor": "none",
|
|
43597
|
+
"attack_vector": {
|
|
43598
|
+
"description": "An unauthenticated UDP M-SEARCH to SSDP/1900 with an oversized ST header overflows a 128-byte stack buffer in DD-WRT’s UPnP handler via unbounded strcpy, enabling code execution; weaponized in 2026 by the Gafgyt/C0XMO botnet to recruit routers as DDoS bots.",
|
|
43599
|
+
"privileges_required": "none (unauthenticated) — requires UPnP enabled (non-default) and network reachability to UDP/1900",
|
|
43600
|
+
"complexity": "high — non-default UPnP precondition and typically LAN-facing unless WAN-exposed",
|
|
43601
|
+
"ai_factor": "Not AI-discovered — reported in 2021 by Selim Enes Karaduman via SSD. No AI involvement documented."
|
|
43602
|
+
},
|
|
43603
|
+
"defense_chain": {
|
|
43604
|
+
"prevention": {
|
|
43605
|
+
"what_would_have_worked": "Flash a DD-WRT build at or after change set 45724 (patched since 2021) and disable UPnP / block UDP/1900 at the WAN edge",
|
|
43606
|
+
"was_this_required": true,
|
|
43607
|
+
"framework_requiring_it": "CISA BOD 22-01 (KEV remediation, added 2026-07-21, due 2026-07-24)",
|
|
43608
|
+
"adequacy": "The fix has existed for five years; the gap is firmware-lifecycle management on unmanaged edge devices, not the availability of a patch."
|
|
43609
|
+
},
|
|
43610
|
+
"detection": {
|
|
43611
|
+
"what_would_have_worked": "Alert on oversized SSDP datagrams to UDP/1900 and on routers beaconing to botnet C2 or generating flood traffic",
|
|
43612
|
+
"was_this_required": false,
|
|
43613
|
+
"framework_requiring_it": null,
|
|
43614
|
+
"adequacy": "Consumer/SOHO routers rarely have monitoring, so compromise is usually noticed only via downstream DDoS."
|
|
43615
|
+
},
|
|
43616
|
+
"response": {
|
|
43617
|
+
"what_would_have_worked": "Reflash to a patched build, factory-reset, disable UPnP, and rotate device credentials",
|
|
43618
|
+
"was_this_required": false,
|
|
43619
|
+
"framework_requiring_it": null,
|
|
43620
|
+
"adequacy": "A botnet-recruited router should be treated as fully untrusted until reflashed to a fixed build."
|
|
43621
|
+
}
|
|
43622
|
+
},
|
|
43623
|
+
"framework_coverage": {
|
|
43624
|
+
"NIST-800-53-SI-2": {
|
|
43625
|
+
"covered": true,
|
|
43626
|
+
"adequate": false,
|
|
43627
|
+
"gap": "A patch has existed since 2021 (changeset 45724), so SI-2 remediation should have closed this long ago; its 2026 KEV listing shows SI-2 without an enforced end-of-support/asset-refresh policy leaves abandoned consumer/SOHO firmware exploitable years after the fix shipped."
|
|
43628
|
+
},
|
|
43629
|
+
"NIS2-Art21-network-security": {
|
|
43630
|
+
"covered": true,
|
|
43631
|
+
"adequate": false,
|
|
43632
|
+
"gap": "Network-security requirements do not by themselves compel disabling UPnP or blocking UDP/1900 at the WAN edge, which is the control that removes unauthenticated reach to the vulnerable SSDP handler on internet-exposed DD-WRT devices."
|
|
43633
|
+
},
|
|
43634
|
+
"UK-CAF-B4": {
|
|
43635
|
+
"covered": true,
|
|
43636
|
+
"adequate": false,
|
|
43637
|
+
"gap": "System-security expectations rarely extend to embedded router firmware lifecycle, so unmanaged DD-WRT/Buffalo devices running change set 45723 or prior persist unpatched and get recruited into botnets."
|
|
43638
|
+
},
|
|
43639
|
+
"AU-Essential-8-Patch": {
|
|
43640
|
+
"covered": true,
|
|
43641
|
+
"adequate": false,
|
|
43642
|
+
"gap": "Essential-Eight patch maturity is written for OS/application estates and does not model consumer/SOHO router firmware, so devices no one treats as patchable assets remain vulnerable to a five-year-old overflow now weaponized by the C0XMO botnet."
|
|
43643
|
+
},
|
|
43644
|
+
"ISO-27001-2022-A.8.8": {
|
|
43645
|
+
"covered": true,
|
|
43646
|
+
"adequate": false,
|
|
43647
|
+
"gap": "Technical-vulnerability management depends on an asset inventory that enumerates the firmware build; embedded UPnP services on edge routers are routinely outside that inventory, so the fixed changeset is never applied."
|
|
43648
|
+
}
|
|
43649
|
+
}
|
|
43406
43650
|
}
|
|
43407
43651
|
}
|