Skip to content

Detection vs Scenario Coverage

Auto-generated by scripts/detection_vs_scenario_coverage.py. Do not hand-edit -- regenerate with --report.

Methodology disclosure

Methodology disclosure: This report is a technique-ID overlap check, NOT a 'queries actually fire on synthetic log artifacts' check. A detection is considered to 'cover' a scenario if at least one ATT&CK technique ID appears in both the detection's surrounding context (heading, comment, rule metadata) and the scenario's narrative. Real coverage validation requires a log-data-stream simulator plus KQL/SPL/Sigma/YARA parsers; that is a separate, larger task (1.9 in the Revolutionary Plan, full form). Detections without any extractable technique ID in their context are listed as techniques_referenced: [] and counted as uncatalogued rather than fabricated -- the same applies to scenarios with no extractable techniques. Read-only analysis: nothing in docs/ is modified to make the numbers look better.

Summary

Metric Value
Detections (total) 300
Detections catalogued (with technique ID) 160
Detections uncatalogued (no technique ID) 140
Scenarios (total) 108
Scenarios catalogued 108
Scenarios uncatalogued 0
Scenarios fully covered 1
Scenarios partially covered 103
Scenarios uncovered 4
Coverage % (of catalogued scenarios) 96.3%
Unique techniques across detections 187
Unique techniques across scenarios 262

Top 10 techniques with most detections

Detection volume per technique. High count is not always good -- it can mean genuine defence-in-depth, or it can mean the same technique is being repeated across multiple chapters. See the over-covered section below for an honest read.

Rank Technique Detection count
1 T1486 7
2 T1105 5
3 T1489 5
4 T1490 4
5 T1059 4
6 T1053.005 4
7 T1021 4
8 T1021.002 4
9 T1082 3
10 T1219 3

Top 20 scenarios with the largest detection gap

Scenarios are ranked by the count of techniques referenced in the scenario for which no detection in the corpus claims coverage. Uncatalogued scenarios (no extractable techniques) are excluded from this list because there is nothing to gap-check.

Scenario Title Gap count Missing techniques (first 8)
SC-061 SC-061: Satellite Communication Hijacking 12 T1005, T1018, T1020, T1040, T1046, T1048.003, T1498, T1498.001, ... (+4)
SC-018 SC-018: Mobile Device Compromise 11 T1078.004, T1407, T1417, T1430, T1437, T1444, T1474.001, T1521, ... (+3)
SC-068 SC-068: Election Infrastructure Manipulation -- Voter Registration Systems 11 T1005, T1036.005, T1070.004, T1078.002, T1491.002, T1498.001, T1505.003, T1530, ... (+3)
SC-103 SC-103: Healthcare IoMT Data Breach -- Operation VITAL SIGNS 10 T1018, T1030, T1040, T1046, T1048.001, T1053.003, T1074.001, T1078.001, ... (+2)
SC-013 SC-013: AI Model Poisoning → Fraud Detection Bypass 9 T0018, T0020, T0024, T0040, T0043, T1078.004, T1195.001, T1552.004, ... (+1)
SC-065 SC-065: Quantum Computing -- Harvest Now, Decrypt Later 9 T1018, T1040, T1046, T1074.002, T1114, T1530, T1552, T1552.004, ... (+1)
SC-072 SC-072: Smart Grid and Power Infrastructure Attack 9 T0826, T0831, T0836, T0855, T0857, T0882, T1040, T1078.003, ... (+1)
SC-022 SC-022: Enterprise LLM Jailbreak & Data Exfiltration 8 T0043, T0048.002, T0051, T0054, T1078.001, T1111, T1114.002, T1530
SC-023 SC-023: RAG Poisoning & Knowledge Base Compromise 8 T0020, T0043, T0054, T1070.006, T1136.001, T1213, T1491.001, T1565.001
SC-035 SC-035: BGP Hijacking -- Operation Route Phantom 8 T1040, T1114.002, T1557, T1557.002, T1565.002, T1584.001, T1590.004, T1590.005
SC-069 SC-069: Firmware Supply Chain Compromise 8 T1027.009, T1036.005, T1071, T1072, T1074.001, T1542, T1542.001, T1553.006
SC-071 SC-071: Connected and Autonomous Vehicle Attack 8 T1036.005, T1040, T1091, T1213, T1498, T1557, T1565, T1565.001
SC-106 SC-106: Industrial Control System Attack on Water Treatment -- Operation TOXIC C 8 T0816, T0831, T0836, T0846, T0855, T0878, T0888, T1046
SC-009 SC-009: Cloud Account Takeover → Data Exfiltration 7 T1070.003, T1090, T1114, T1114.003, T1530, T1537, T1552.005
SC-014 SC-014: OT Ransomware Attack -- Municipal Water Treatment Plant 7 T0829, T0831, T0836, T0840, T0855, T0880, T0886
SC-017 SC-017: Insider Threat -- Data Exfiltration 7 T1048.002, T1052.001, T1070.004, T1074.001, T1213, T1530, T1537
SC-055 SC-055: Election Infrastructure Attack 7 T1046, T1498, T1498.001, T1505.003, T1552.001, T1565.001, T1598.003
SC-058 SC-058: Quantum Cryptographic Harvest 7 T1005, T1040, T1048.001, T1114, T1530, T1542.004, T1601.001
SC-064 SC-064: Cryptocurrency Bridge Exploit 7 T1005, T1537, T1565.001, T1584, T1587.001, T1593, T1657
SC-066 SC-066: UEFI Firmware Rootkit Persistence 7 T1005, T1072, T1106, T1542, T1542.001, T1553.006, T1573.002

Techniques with more than 5 detections (potential over-coverage)

These are techniques where the corpus has many detections. Often legitimate (high-priority technique with many real-world variants) but worth a periodic review for duplicates that do not add detection diversity.

Technique Detection count
T1486 7

Uncatalogued items (no extractable technique IDs)

These items did not surface a T#### ATT&CK technique ID in their context window. They are NOT assumed to be invalid -- many are perfectly good detections / scenarios that just do not spell out the technique. They are listed here so a human can decide whether to add the missing tag.

Uncatalogued detections (140)

ID Lang Source Line Context hint
DQ-001 kql docs/tools/detection-query-library.md 23 "KQL"
DQ-002 spl docs/tools/detection-query-library.md 43 "SPL"
DQ-003 kql docs/tools/detection-query-library.md 66 "KQL"
DQ-004 spl docs/tools/detection-query-library.md 87 "SPL"
DQ-005 kql docs/tools/detection-query-library.md 109 "KQL"
DQ-006 spl docs/tools/detection-query-library.md 131 "SPL"
DQ-007 kql docs/tools/detection-query-library.md 156 "KQL"
DQ-008 spl docs/tools/detection-query-library.md 172 "SPL"
DQ-009 kql docs/tools/detection-query-library.md 194 "KQL"
DQ-010 spl docs/tools/detection-query-library.md 211 "SPL"
DQ-011 kql docs/tools/detection-query-library.md 233 "KQL"
DQ-012 spl docs/tools/detection-query-library.md 250 "SPL"
DQ-013 kql docs/tools/detection-query-library.md 274 "KQL"
DQ-014 spl docs/tools/detection-query-library.md 288 "SPL"
DQ-015 kql docs/tools/detection-query-library.md 311 "KQL"
DQ-016 spl docs/tools/detection-query-library.md 331 "SPL"
DQ-017 kql docs/tools/detection-query-library.md 353 "KQL"
DQ-018 spl docs/tools/detection-query-library.md 371 "SPL"
DQ-019 kql docs/tools/detection-query-library.md 393 "KQL"
DQ-020 spl docs/tools/detection-query-library.md 410 "SPL"
DQ-021 kql docs/tools/detection-query-library.md 434 "KQL"
DQ-022 spl docs/tools/detection-query-library.md 452 "SPL"
DQ-023 kql docs/tools/detection-query-library.md 469 "KQL"
DQ-024 spl docs/tools/detection-query-library.md 484 "SPL"
DQ-025 kql docs/tools/detection-query-library.md 505 "KQL"
DQ-026 spl docs/tools/detection-query-library.md 524 "SPL"
DQ-027 kql docs/tools/detection-query-library.md 548 "KQL"
DQ-028 spl docs/tools/detection-query-library.md 565 "SPL"
DQ-029 kql docs/tools/detection-query-library.md 584 "KQL"
DQ-030 spl docs/tools/detection-query-library.md 600 "SPL"
DQ-031 kql docs/tools/detection-query-library.md 620 "KQL"
DQ-032 spl docs/tools/detection-query-library.md 645 "SPL"
DQ-033 kql docs/tools/detection-query-library.md 669 "KQL"
DQ-034 spl docs/tools/detection-query-library.md 687 "SPL"
DQ-035 kql docs/tools/detection-query-library.md 708 "KQL"
DQ-036 spl docs/tools/detection-query-library.md 727 "SPL"
DQ-037 kql docs/tools/detection-query-library.md 752 "KQL"
DQ-038 spl docs/tools/detection-query-library.md 772 "SPL"
DQ-039 kql docs/tools/detection-query-library.md 797 "KQL"
DQ-040 spl docs/tools/detection-query-library.md 814 "SPL"
DQ-041 kql docs/tools/detection-query-library.md 834 "KQL"
DQ-042 spl docs/tools/detection-query-library.md 857 "SPL"
DQ-043 kql docs/tools/detection-query-library.md 880 "KQL"
DQ-044 spl docs/tools/detection-query-library.md 901 "SPL"
DQ-045 kql docs/tools/detection-query-library.md 926 "KQL"
DQ-046 spl docs/tools/detection-query-library.md 945 "SPL"
DQ-047 kql docs/tools/detection-query-library.md 967 "KQL"
DQ-048 spl docs/tools/detection-query-library.md 983 "SPL"
DQ-049 kql docs/tools/detection-query-library.md 1004 "KQL"
DQ-050 spl docs/tools/detection-query-library.md 1025 "SPL"

... 90 more uncatalogued detections suppressed for brevity.

Uncatalogued scenarios (0)

(none -- every scenario has at least one technique tag)


Methodology (repeated)

Methodology disclosure: This report is a technique-ID overlap check, NOT a 'queries actually fire on synthetic log artifacts' check. A detection is considered to 'cover' a scenario if at least one ATT&CK technique ID appears in both the detection's surrounding context (heading, comment, rule metadata) and the scenario's narrative. Real coverage validation requires a log-data-stream simulator plus KQL/SPL/Sigma/YARA parsers; that is a separate, larger task (1.9 in the Revolutionary Plan, full form). Detections without any extractable technique ID in their context are listed as techniques_referenced: [] and counted as uncatalogued rather than fabricated -- the same applies to scenarios with no extractable techniques. Read-only analysis: nothing in docs/ is modified to make the numbers look better.

Reproduce locally:

python scripts/detection_vs_scenario_coverage.py --report
python scripts/detection_vs_scenario_coverage.py --text
python scripts/detection_vs_scenario_coverage.py --scenario SC-009
python scripts/detection_vs_scenario_coverage.py --detection DQ-001
python scripts/detection_vs_scenario_coverage.py --export-json detection-coverage.json