46%
Of SOC alerts prove to be false positives, per Microsoft and Omdia's State of the SOC 2026 report
73%
Of security teams name false positives their top detection challenge, per the SANS 2025 Detection and Response Survey
2,992
Average daily security alerts per organization, per Vectra AI's 2026 State of Threat Detection report
63%
Of daily alerts go unaddressed by analysts, per the same Vectra AI 2026 report

SponsoredHorizon3.ai

Proactive Security for the AI Era

NodeZero continuously and autonomously pentests infrastructure, identity, cloud, and now web applications, chaining weaknesses across every domain the way real attackers do. Every finding ships with replayable proof showing exploitable business impact, not theoretical risk.

See NodeZero WebApp in action

The core mechanism: every active detection rule gets a weighted composite score built from measurable inputs, trailing 90-day true-positive rate, ATT&CK technique uniqueness against other active rules, mean analyst triage time, business criticality of the asset class it covers, and raw alert volume, and that score sorts the rule into one of four action tiers, retire, tune, keep, or promote to automated response. The point is not to build another maturity assessment for the program as a whole. Frameworks like Elastic's Detection Engineering Behavior Maturity Model and the Detection Maturity Level model already answer the question of how mature a security team's detection function is overall. What almost nobody has is a repeatable way to look at rule number 340 in a library of 600 and decide, with numbers instead of gut feel, whether it deserves to keep firing.

That gap matters more for the majority of teams that do not have a dedicated detection engineer. A two-person security operations function inherits rules from a MSSP onboarding, a vendor's default content pack, and whatever the last analyst who left thought was a good idea, and nobody ever circles back to ask whether any of it still earns its keep. This article lays out the scoring rubric, a worked example against three representative rules, the decision tiers that follow from the score, the ways teams get this wrong in practice, and how the whole approach sits next to the maturity models that already exist rather than duplicating them.

The Problem: Rules Accumulate, Nobody Scores Them

The alert fatigue numbers from 2026 are not abstract. Microsoft and Omdia's State of the SOC report found that 46% of all alerts prove to be false positives and 42% go uninvestigated entirely, meaning close to half of what a SIEM generates never gets looked at by a human. The SANS 2025 Detection and Response Survey found that 73% of security teams name false positives their single biggest detection challenge, with more than 60% encountering them frequently or very frequently. Vectra AI's 2026 State of Threat Detection report puts the daily alert count at an average of 2,992 per organization, with 63% going unaddressed.

Those numbers describe a downstream symptom. The upstream cause, in most environments that are not running a mature, staffed detection engineering function, is that detection rules get written once and then never revisited. A rule ships with a vendor's default content pack, or gets built during an incident response and left running afterward, or arrives from an MSSP's baseline configuration, and then sits in production indefinitely because removing a rule feels riskier than leaving it, even when the rule has not produced a real finding in over a year. Nobody owns the decision to retire it, so nobody makes that decision.

This is different from a log source coverage problem, though the two compound each other. A rule can be perfectly well-written and still be worthless if it is built against a source that only has partial coverage, which is why confirming the underlying telemetry is intact, covered in our SIEM log source coverage checklist, has to happen before a noisy rule gets blamed on its logic rather than its data. Once coverage is confirmed, the remaining question is purely about the rule's own track record, and that is what a scoring framework answers.

The Scoring Rubric: Five Weighted Criteria

Each active rule gets scored 0 to 4 on five criteria, multiplied by a weight, and summed into a composite out of 100 (the maximum possible weighted sum of 4.0 multiplied by 25). The weights below are a reasonable starting allocation for a team without a dedicated detection engineer; adjust them once you have a full scoring pass or two under your belt and a sense of which factor actually drove your best keep and cut decisions.

True-positive rate, trailing 90 days (weight: 35%)

Confirmed true positives divided by total alerts fired in the last 90 days, pulled from your case management or ticketing system's disposition field. Score bands: 0 = under 5% TP rate, 1 = 5 to 15%, 2 = 15 to 35%, 3 = 35 to 60%, 4 = over 60%. This is the single heaviest-weighted factor because it is the most direct measure of whether a rule is finding real activity.

ATT&CK technique uniqueness vs. other active rules (weight: 20%)

Map the rule to its MITRE ATT&CK technique or sub-technique and count how many other active rules cover the same technique from a similar data source. Score bands: 4 = no overlap, this rule is the only coverage for its technique, 3 = overlaps with one other rule, 2 = overlaps with two, 1 = overlaps with three or four, 0 = fully redundant with three or more other rules that already cover the same behavior equally well.

Mean analyst triage time (weight: 20%)

Average minutes between alert creation and analyst disposition, pulled from ticket timestamps. Score bands (shorter is better, since a rule that takes long to dismiss is expensive noise): 4 = under 5 minutes, 3 = 5 to 15 minutes, 2 = 15 to 30 minutes, 1 = 30 to 60 minutes, 0 = over 60 minutes on average.

Business criticality of the asset class monitored (weight: 15%)

Score bands: 4 = tier-0 crown jewel assets (domain controllers, certificate authorities, PAM/vaulting systems, code signing infrastructure), 3 = tier-1 business-critical systems, 2 = tier-2 general corporate endpoints, 1 = tier-3 low-value or test systems, 0 = an asset class that has since been decommissioned or deprecated.

Raw alert volume, trailing 90 days (weight: 10%)

Score bands, expressed as alerts per week: 4 = fewer than 1 per week, 3 = 1 to 5 per week, 2 = 5 to 20 per week, 1 = 20 to 50 per week, 0 = more than 50 per week. This is weighted lowest on purpose, a high-volume rule with a strong true-positive rate is doing exactly what it should, so volume alone should never dominate the score.

Free daily briefing

Briefings like this, every morning before 9am.

Threat intel, active CVEs, and campaign alerts, distilled for practitioners. 50,000+ subscribers. No noise.

Step-by-Step: Pulling the Data and Scoring Three Real Rules

Most of the inputs above already exist somewhere in your stack, they are just never assembled in one place. Here is the pull, then a worked example against three representative rules so the arithmetic is concrete rather than abstract.

Pulling the data. True-positive rate and mean triage time come from your case management or ticketing system, filtered to the rule's alert source over the last 90 days and grouped by disposition (true positive, false positive, benign true positive) and by the timestamp gap between creation and closure. In Microsoft Sentinel, this typically means querying the SecurityIncident table joined against the analytics rule name, which is exactly the kind of query covered in our guide to writing KQL queries for Microsoft Sentinel. In Splunk, the equivalent lives in the notable event index with a disposition field; in an OpenSearch-based stack, it is whatever case management index your SOAR or ticketing tool writes to. ATT&CK mapping comes from whatever field your rule already tags (Sigma rules carry this in a tags: attack.txxxx field natively), cross-referenced against every other active rule's tags to count overlap. Asset criticality comes from your CMDB or asset inventory's existing tiering, not a new exercise built for this framework.

Worked example. Three rules, scored against the rubric above using 90 days of data.

Rule A, "Suspicious PowerShell Encoded Command Execution": 400 alerts fired in 90 days, 14 confirmed true positives (3.5% TP rate, score 0). It maps to ATT&CK T1059.001 and overlaps with four other active PowerShell-related rules already in production (score 1). Mean triage time is 8 minutes, since analysts have learned to check the parent process and dismiss quickly (score 3). It covers general endpoints, not crown-jewel assets (tier 2, score 2). Volume is roughly 31 alerts per week, in the 20-to-50 band (score 1). Weighted composite: (0 x 0.35) + (1 x 0.20) + (3 x 0.20) + (2 x 0.15) + (1 x 0.10) = 1.20, scaled by 25 = 30 out of 100.

Rule B, "New Service Installation on a Domain Controller": 6 alerts in 90 days, 5 confirmed true positives during red-team and audit validation (83% TP rate, score 4). It maps to T1543.003 with no other active rule covering Windows service installation on tier-0 assets specifically (score 4). Mean triage time is 25 minutes, since each alert requires checking the service binary, its signer, and install context (score 2). It covers domain controllers, a tier-0 asset class (score 4). Volume is under 1 per week (score 4). Weighted composite: (4 x 0.35) + (4 x 0.20) + (2 x 0.20) + (4 x 0.15) + (4 x 0.10) = 3.60, scaled by 25 = 90 out of 100.

Rule C, "Password Spray Pattern (Multiple Failed Logins Followed by Success)": 85 alerts in 90 days, 20 confirmed true positives (23.5% TP rate, score 2). It maps to T1110.003 and overlaps partially with one other rule (an impossible-travel detection), score 3. Mean triage time is 12 minutes (score 3). It covers a mix of standard and privileged service accounts, tier 1 (score 3). Volume is about 6.6 per week, in the 5-to-20 band (score 2). Weighted composite: (2 x 0.35) + (3 x 0.20) + (3 x 0.20) + (3 x 0.15) + (2 x 0.10) = 2.55, scaled by 25 = 64 out of 100.

Decision Tiers: What the Score Tells You to Do

The composite score maps to four action tiers. None of these are meant to be applied mechanically without a human sanity check, which is exactly what the failure cases section below covers.

75 to 100: Promote

The rule has a strong, sustained true-positive rate, covers a distinct piece of ATT&CK real estate, and is cheap or fast to triage. These are your best candidates for elevated severity, tighter SLAs, or wiring into automated response (isolating a host, disabling an account) with reduced human-in-the-loop review. Rule B, scoring 90, sits here.

50 to 74: Keep

The rule earns its place in the ruleset. It is not free of noise, but its value clearly outweighs its cost. Revisit it on your normal quarterly review cycle rather than singling it out. Rule C, scoring 64, sits here, worth a light look at whether the impossible-travel overlap can be consolidated, but not worth retiring.

25 to 49: Tune

The rule is not pulling its weight as written, but it has enough redeeming signal (some unique coverage, some real detections, or a fast dismissal time) that a rewrite is worth trying before a retirement decision. Adjust thresholds, add suppression for the specific benign pattern driving the false positives, or narrow the logic, then re-score after a full 90-day window. Rule A, scoring 30, sits here: the redundancy with four other PowerShell rules and the near-zero true-positive rate argue for consolidation, not necessarily deletion, on the first pass.

0 to 24: Retire

Low true-positive rate, low uniqueness, and no offsetting factor. Sunset the rule, document why (this record matters for audit and for the next person who wonders why the rule disappeared), and confirm whether retiring it opens a real coverage gap or simply removes duplicate noise. If a rule this low is tied to a tier-0 asset or a rare-but-severe technique, the business-criticality override discussed in the next section applies before you pull the trigger.

Common Failure Cases and Operational Tradeoffs

A scoring framework is only as good as the judgment applied around its edges. These are the ways teams misuse a rubric like this in practice.

Retiring a rare-but-severe rule because it rarely fires. A rule watching for a specific lateral-movement technique against tier-0 infrastructure might fire twice a year and be a true positive both times. Scored purely on volume or even on a shallow reading of the composite, it can look like a retirement candidate. It is not. Business criticality exists in the rubric precisely to counterweight this, but a low-frequency, high-severity rule deserves a manual override that keeps it regardless of its raw composite score. Treat any tier-0 asset rule as exempt from automatic retirement, full stop.

Survivorship bias in what gets measured. A scoring pass only evaluates rules that exist and fire. It says nothing about the attack techniques you have no detection for at all, and a team that spends a review cycle purely trimming existing rules without asking what is missing ends up with a smaller but no more complete ruleset. Behavioral baselining approaches, covered in our UEBA guide, catch a category of anomaly that static threshold rules structurally cannot, and a scoring exercise on your existing static rules is not a substitute for asking whether behavioral coverage is missing entirely.

Tuning or retiring based on too short a data window. Thirty days of data will misrepresent a rule tied to a quarterly or seasonal pattern, a tax-season phishing detection, an annual audit-driven access review rule, or anything tied to a business cycle that does not repeat monthly. Use a full 90-day window at minimum, and for genuinely infrequent techniques, look back further before making a retirement call.

Gaming the triage-time metric. If analysts learn that fast dismissals make a rule look efficient, some will start closing tickets without real investigation just to keep the number low, which quietly erodes the value of the true-positive rate you are also measuring from the same disposition data. Spot-check a sample of fast closures periodically rather than trusting the aggregate blindly.

Treating the composite score as a substitute for judgment. The score is an input to a decision, not the decision itself. A rule scoring 26 might still deserve to stay if a recent incident postmortem specifically called for it, and a rule scoring 78 still deserves scrutiny if the underlying log source, per the coverage checklist above, turns out to be incomplete.

Scoring the rule instead of the pipeline feeding it. Sometimes a rule's poor score is really a data quality problem: duplicate events, unparsed fields, or noisy enrichment happening upstream of the SIEM. Before committing to a rewrite of the detection logic itself, it is worth checking whether a security data pipeline tool is filtering, deduplicating, and enriching that telemetry before it ever reaches the rule; our comparison of Cribl, DataBahn, and Observo AI for security data pipelines covers that layer as a complementary noise-reduction lever that operates upstream of any individual rule's logic.

How This Fits Next to DEBMM and the Detection Maturity Level Model

It is worth being precise about what this framework is not. Elastic's Detection Engineering Behavior Maturity Model describes five stages, Foundation, Basic, Intermediate, Advanced, and Expert, that assess the maturity of a team's processes and behaviors: how rules get documented, how threat modeling feeds rule creation, how telemetry gets validated, how a program improves over time. Ryan Stillions' Detection Maturity Level model takes a different axis entirely, describing nine levels (0 through 8) of what kind of intelligence an organization can actually detect against, from raw atomic indicators at the bottom up through tactics, techniques, and adversary goals at the top. The Detection Engineering Maturity Matrix at detectionengineering.io adds a third lens, three stages (Defined, Managed, Optimized) aimed specifically at helping a team figure out how to build or grow a detection engineering function as an organizational capability.

All three of those are program-level assessments. They answer "how mature is our detection function as a whole" and "what kind of intelligence can we act on." None of them hand a two-person security team a way to look at the 600 rules already running in production this afternoon and decide which ones are worth keeping. That is the gap this scoring framework fills, and it is a deliberately narrow, tactical complement rather than a competing maturity model. A team sitting at DEBMM's Foundation stage or DML level 1 can still run this scorecard against its existing ruleset today; doing so, and documenting the retire and tune decisions that result, is itself evidence of the kind of rule-management discipline that DEBMM's own criteria reward on the path toward its later stages. Use the maturity models to plan the program. Use this scorecard to clean up what the program has already accumulated. The two are not in tension, and a mature detection engineering practice, the kind that also runs a structured threat hunting program, typically ends up feeding new hypothesis-driven rules from hunting straight into this same scoring cycle once they graduate to production.

Starter Scorecard Template

A minimal, copyable set of fields to track per rule. A spreadsheet is sufficient to start; you do not need a dedicated tool to run the first scoring pass.

Rule name and unique ID

Whatever identifier your SIEM or EDR assigns internally, so the entry maps unambiguously back to production.

ATT&CK technique(s) mapped

The specific technique or sub-technique ID (for example T1059.001), pulled from the rule's existing tags where available.

90-day alert count and true-positive count

Raw counts from case management, not just the derived percentage, so you can sanity-check small sample sizes (a rule with 3 total alerts should not be scored with the same confidence as one with 300).

Overlapping active rule count

How many other currently active rules cover the same or a closely related ATT&CK technique against the same data source.

Mean triage time in minutes

Average gap between alert creation and analyst disposition, over the same 90-day window.

Asset criticality tier (0 to 3)

Pulled from your existing CMDB or asset inventory tiering, not a separate exercise built just for this scorecard.

Weighted composite score (0 to 100)

The calculated result using the five-criteria rubric and weights above, or your own adjusted weights once you have a scoring cycle or two of history.

Action tier and next review date

Retire, tune, keep, or promote, plus a specific date to revisit, generally the next full 90-day window, so tuned rules do not silently fall out of the review cycle.

The bottom line

A team without a dedicated detection engineer does not need a bigger maturity model, it needs a way to look at the rules already running and make a defensible call on each one this quarter. Score every active rule on trailing 90-day true-positive rate, ATT&CK uniqueness, mean triage time, asset criticality, and volume, weight true-positive rate heaviest since it is the most direct signal of value, and sort the result into retire, tune, keep, or promote. Run the first pass against your noisiest and highest-volume rules rather than the whole ruleset at once, since that is where the alert fatigue numbers above are actually coming from. Treat DEBMM, DML, and the detectionengineering.io matrix as the roadmap for how the program grows, and treat this scorecard as the recurring, tactical housekeeping that keeps the ruleset itself from quietly becoming the alert-fatigue problem the program is supposed to be solving.

Frequently asked questions

How often should a team re-run this scoring framework against its detection rules?

Every 90 days for the full active ruleset, aligned to the same trailing window used for the true-positive rate calculation, with an interim check sooner for any rule placed in the tune tier so it does not sit unresolved.

What data do we need in place before we can start scoring rules with this framework?

A case management or ticketing system with a disposition field (true positive, false positive, benign) and creation and closure timestamps, plus an existing asset criticality tiering from your CMDB; most teams already have both without building anything new.

Should a rule with a 0% true-positive rate always be retired immediately?

Not automatically. Check the business-criticality override first, a rule tied to tier-0 infrastructure or a rare, severe technique can score low on volume and true-positive rate simply because the behavior it watches for is genuinely rare, not because the rule is worthless.

How is this scoring framework different from Sigma's built-in level field?

Sigma's level field (informational, low, medium, high, critical) is a static, author-assigned severity set at rule creation time, while this framework produces a dynamic score recalculated from real 90-day performance data, so it captures how a rule actually behaves in your environment rather than how severe its author expected it to be.

Does this framework replace DEBMM or the Detection Maturity Level model?

No, it complements them. DEBMM and DML assess program-level maturity and intelligence depth, while this framework is a tactical, per-rule scoring method any team can apply today regardless of what maturity stage its broader program has reached.

What is the minimum data window needed to calculate a reliable true-positive rate?

Use a full 90-day trailing window at minimum; shorter windows misrepresent rules tied to quarterly or seasonal patterns and can produce a false read on both very high and very low volume rules.

Sources & references

  1. Microsoft Security Blog: State of the SOC, Unify Now or Pay Later (Feb 2026)
  2. SANS Institute: 2025 Detection and Response Survey
  3. Vectra AI: 2026 State of Threat Detection in the AI Era
  4. Elastic Security Labs: Detection Engineering Behavior Maturity Model (DEBMM)
  5. Detection Engineering Maturity Matrix (detectionengineering.io)
  6. MITRE ATT&CK
  7. SigmaHQ: Sigma Rules Specification (level field)
  8. NovaInfosec: The DML Model for Threat Intel (Ryan Stillions)

Free resources

25
Free download

Critical CVE Reference Card 2025–2026

25 actively exploited vulnerabilities with CVSS scores, exploit status, and patch availability. Print it, pin it, share it with your SOC team.

No spam. Unsubscribe anytime.

Free download

Ransomware Incident Response Playbook

Step-by-step 24-hour IR checklist covering detection, containment, eradication, and recovery. Built for SOC teams, IR leads, and CISOs.

No spam. Unsubscribe anytime.

Free newsletter

Get threat intel before your inbox does.

50,000+ security professionals read Decryption Digest for early warnings on zero-days, ransomware, and nation-state campaigns. Free, daily, no spam.

Unsubscribe anytime. We never sell your data.

Eric Bang
Author

Founder & Cybersecurity Evangelist, Decryption Digest

Cybersecurity professional with expertise in threat intelligence, vulnerability research, and enterprise security. Covers zero-days, ransomware, and nation-state operations for 50,000+ security professionals every morning.

Giveaway: InfoSec World 2026 All Access Pass ($3,895 value)

Details →
Daily Briefing

Subscribe to enter the giveaway

Every subscriber is automatically entered. You also get daily threat intel every morning: zero-days, ransomware, and nation-state campaigns. Free. No spam.

Already subscribed? You're already entered.

Giveaway

Win a $3,895 InfoSec World 2026 pass.