HAYROK LABS RESEARCH NOTE · HL-RN-2026-13Control effectiveness
How to measure security control effectiveness.
Effectiveness is four numbers, not one checkbox.
Coverage, efficacy, resilience and responsiveness, each measured from behavioral tests and weighted by the attack paths a control protects. With formulas and code.
× PATH WEIGHTUnder all four, so gaps on crown jewel paths count most
RULEIf a metric cannot tell you which control to fix first, it is not an effectiveness metric.
TL;DR
01
"Do we have the control?" is a yes or no. "How effective is it?" needs four numbers: coverage, efficacy, resilience and responsiveness.
02
Weight every metric by attack paths. A gap on a server that reaches customer data matters more than ten gaps on a test subnet.
03
Further down: the formulas, a short Python scorecard and the mistakes that make effectiveness metrics lie.
Control effectiveness is usually reported as a deployment percentage or a compliance score. Neither tells you whether a control stops or detects an attack. So let's measure it properly. Four dimensions, each computed from behavioral test results rather than configuration data, each weighted by the attack paths the control protects. The result is a scorecard an architect can act on, a CISO can defend, and that satisfies the measurement policy NIS2 now expects.
Key findings
ATT&CK TECHNIQUES DETECTED
21%
A study of production SIEMs found detections for just a fifth of techniques, and 13% of detection rules would never fire.
DRIFT ALERTS FROM FIREWALLS
47%
Firewalls also produced nearly 88% of material security findings. EDR followed with 23% of alerts and 10% of findings.
AVERAGE TIME TO REMEDIATE
8.3 days
Restoring effectiveness takes time. That is how long identified configuration issues stayed open on average.
NIS2 MEASUREMENT POLICY
What·when·who
The implementing rules require the effectiveness policy to state what is measured, when, and who is responsible.
If a metric cannot tell you which control to fix first, it is not an effectiveness metric.
Why common control metrics mislead
Each of these is easy to collect, which is exactly why they end up in reports.
Deployment rate
"EDR on 98% of endpoints" counts installs. It hides detect-only policies, exclusions and the 2% that sit on your most important paths.
Compliance score
A framework checklist rewards having a control documented. It does not test whether the control works.
Rule or signature counts
More rules are not more coverage. Some never fire, and many overlap.
Single composite scores
One blended number hides which dimension is failing. A 78 could mean great coverage and terrible efficacy.
The four dimensions of effectiveness
Each dimension answers a different question, so each needs its own number. The path weight underneath keeps all four focused on where attackers would go.
D1
Coverage
Is the control present and healthy wherever it should be? Measure against the assets in scope, not the assets the console knows about.
healthy assets ÷ in-scope assets
D2
Efficacy
When an attack behavior hits the control, does it produce the expected outcome? Measure from safe behavioral tests.
passing assertions ÷ assertions run
D3
Resilience
Does efficacy hold over time? Track how often it breaks and how fast you notice.
drift events per month · hours to detect
D4
Responsiveness
When the control fails, how fast is it restored?
hours from failed assertion to passing retest
× PATH WEIGHTGive each asset a weight from the attack paths it sits on. A crown jewel path asset might count ten times a lab host.
Then the method is short:
01
Define
Write the assertion and expected outcome for each control, and name the assets in scope.
Output → assertions + scope
02
Measure
Run behavioral tests on a schedule and on change. Feed coverage from health data and the other three dimensions from test results.
Output → four raw numbers per layer
03
Weight
Multiply each result by the asset's path weight before you aggregate.
Output → path-weighted numbers
04
Report per dimension
Show four numbers per control layer, with trends. Resist collapsing them into one score.
Output → scorecard, not a single grade
Worked example: a path-weighted scorecard in Python
Let's compute the four dimensions for an EDR layer from a week of validation results. Each row in results.csv is one assertion run on one asset.
A typical output for an EDR layer looks like this:
EDR LAYER · WEEK 44WEIGHTEDUNWEIGHTED
Coverage
97%
99%
Efficacy
81%
90%
Resilience (drift / asset · detect)
0.06 · 6h
—
Responsiveness (median restore)
31h
—
Illustrative values.
The gap between the two columns is the point. The unweighted view says the EDR is in great shape. The weighted view says the failures cluster on the assets that matter most, which is exactly where an attacker would aim.
Three rules that keep the numbers honest
Behavioral tests only
Configuration exports feed coverage, never efficacy.
"Logged only" fails
For detective controls, a log line nobody sees is not a detection.
Version every test
Record the test version with every result, so a change in the test is never mistaken for a change in the control.
How to report it
Show each control layer with its four numbers and a 12-week trend. Call out the single worst dimension per layer in plain words, then pair it with an owner and a target date.
WORST DIMENSION · ENDPOINT LAYER
"EDR efficacy on crown jewel servers fell after the October policy push."
The Attack Graph Intelligence Engine supplies the path weight for each asset, so effectiveness is measured where attackers would go.
Risk Engine
Ranks control gaps by the paths they open.
Hay Assist
Answers questions such as which layer lost the most efficacy this month, and why.
FAQ
How do you measure security control effectiveness?
Measure four dimensions from behavioral test results: coverage, efficacy, resilience over time and responsiveness when the control fails. Weight each by the attack paths the control protects.
What is the difference between control coverage and control efficacy?
Coverage asks whether the control is present and healthy where it should be. Efficacy asks whether it actually stops or detects attack behavior when tested.
Should control effectiveness be a single score?
No. A single score hides which dimension is failing. Report four numbers per control layer, with trends, so owners know what to fix.
What metrics does NIS2 expect for effectiveness?
NIS2 does not prescribe specific metrics, but its implementing rules require a policy that defines what is measured, when and by whom.
How often should control effectiveness be measured?
Continuously for efficacy and resilience, through scheduled and change-triggered tests. Report trends monthly and to the board quarterly.
Build your control scorecard
We will measure the four dimensions across a sample of your control layers, weighted by your real attack paths.