Design Partner Program
Hayrok/Resources/Blog/Research Notes
HAYROK LABS RESEARCH NOTE · HL-RN-2026-13 Control 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.

Hayrok Labs Nov 4, 2026 @Melly 10 min read
THE FOUR DIMENSIONS EDR · WEEK 44
D1
Coverage
Present and healthy?
97%
D2
Efficacy
Stops or detects?
81%
D3
Resilience
Holds over time?
6h
D4
Responsiveness
Restored how fast?
31h
× PATH WEIGHT Under all four, so gaps on crown jewel paths count most
RULE If 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.

python · scorecard.py
import pandas as pd

r = pd.read_csv("results.csv")
# columns: asset, path_weight, agent_healthy, expected, observed,
#          drift, drift_detect_h, restore_h

w = r["path_weight"]

coverage   = (r["agent_healthy"] * w).sum() / w.sum()
efficacy   = ((r["observed"] == r["expected"]) * w).sum() / w.sum()
drift_rate = r["drift"].sum() / r["asset"].nunique()
mttd_drift = r.loc[r["drift"], "drift_detect_h"].median()
mttr       = r.loc[r["observed"] != r["expected"], "restore_h"].median()

print(f"coverage   {coverage:.0%}")
print(f"efficacy   {efficacy:.0%}")
print(f"drift      {drift_rate:.2f} events per asset, detected in {mttd_drift:.0f}h")
print(f"restore    {mttr:.0f}h median")

A typical output for an EDR layer looks like this:

EDR LAYER · WEEK 44 WEIGHTED UNWEIGHTED
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."
owner: endpoint-teamtarget date: set with owner

For the evidence behind those numbers, follow How to Prove Security Controls Are Working.

How Hayrok approaches control effectiveness

Hayrok computes the four dimensions from evidence, not surveys.

Runs behavioral assertions from the Scenario Library through a Private Runner.
Stores every result with its test version.
AGIE
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.

KEEP READING