Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.
To reduce MTTR for critical vulnerabilities, cut the time a finding spends waiting, not the time an engineer spends typing the fix. Most critical findings sit for days in three queues: waiting to be triaged, waiting for an owner, and waiting for a pull request someone trusts enough to merge. Shrink those queues by triaging on reachability and exploitability instead of raw severity, routing each finding to the person who owns the code, and handing them a validated fix instead of a ticket.
This guide explains what critical MTTR measures, where the time actually goes, and seven practical steps to bring it down.
Mean time to remediate (MTTR) is the average time between a vulnerability being found and that vulnerability being fixed. "Critical MTTR" is the same metric filtered to the findings your program treats as critical.
The formula is simple:
MTTR = total time from detection to fix, across all remediated findings ÷ number of remediated findings
Two definitions decide whether the number means anything:
MTTR has other expansions in operations (mean time to repair, recover, respond or resolve). For how it relates to reliability metrics such as MTBF, see MTTR vs MTBF.
A critical vulnerability is only dangerous while it's open. MTTR is the closest single number to "how long are we exposed when it counts."
It's also the number regulators and customers now ask about. In June 2026, CISA issued Binding Operational Directive 26-04, which replaced the old fixed deadlines of BOD 22-01 for federal agencies with risk-based remediation timelines. Urgency is set by four factors: whether the asset is publicly exposed, whether the CVE is in the Known Exploited Vulnerabilities catalog, whether exploitation can be fully automated, and how much control exploitation gives an attacker.
That's a useful model even if you're not a federal agency. It says the deadline should depend on real-world risk, not on a severity label.
Writing the fix for most critical findings takes minutes to hours. The rest of the MTTR clock runs while the finding waits.
A scanner reports a critical. Someone on the security team has to decide whether it's real, whether the code runs in production, and whether an attacker can reach it. When scanners are noisy, that queue grows faster than the team can drain it. In one study across five Nullify production tenants, 57% of 14,847 SAST findings triaged over 90 days were ultimately classified as false positives. Every one of those had to be looked at before the real criticals could be found.
Once a finding is confirmed, it needs a person. If routing means "file a ticket in the platform team's backlog," the finding waits for sprint planning, then for someone to recognize the code, then for them to ask who actually wrote it.
The owner now has to understand the vulnerability, write a fix, make sure it doesn't break anything, and get it reviewed. If the security advice is generic ("sanitize user input"), they start from scratch. If the fix breaks the build, it bounces.
A correct pull request can still sit unreviewed for days, especially if no one is accountable for chasing it.
Each step below removes one of those waits. None of them requires a specific tool.
CVSS describes the theoretical impact of a vulnerability class. It doesn't know whether the vulnerable function is reachable from the internet in your deployment. If every CVSS 9.0+ finding is a critical, your critical queue fills with findings in test fixtures, dead code and internal-only services.
Use a short set of questions, similar to the BOD 26-04 factors:
A smaller, truer critical queue has a lower MTTR almost by definition, and the team trusts it.
Manual triage is the biggest queue. Automate the first pass: reachability analysis, filtering of test-only and unreachable code, and checks against exploited-vulnerability lists. Record why each finding was kept or dismissed, so a reviewer can audit the decision instead of redoing it.
The fastest person to fix a vulnerability is the one who wrote or owns the code. Route using the commit author first, then CODEOWNERS, then the wider team. Respect their current workload, because a fifth urgent ticket on one engineer's plate doesn't move faster than the first.
A finding that arrives as a pull request with a minimal, root-cause fix gets merged faster than a ticket that says "this endpoint is vulnerable to SSRF." The fix should:
Keep a human approving every merge. Speed that comes from skipping review just moves the risk somewhere else.
Set a target remediation time for each risk tier and measure against it. When a critical fix stalls, escalate to the owner and their lead in the channel they actually read, with the risk and the deadline stated. Escalation that depends on someone remembering to check a dashboard doesn't happen consistently.
If the same critical shows up across 40 repositories (a vulnerable dependency, a leaked secret pattern, an unsafe deserialization helper), treat it as one campaign with one owner and a progress count, not 40 separate tickets. Campaigns cut MTTR for the whole class and stop the long tail of forgotten repos.
The cheapest critical to remediate is the one that never merges. Scanning every pull request means the author fixes the issue while the code is still fresh in their head, and the finding never enters the backlog at all.
Use this to audit your current process:
Nullify works on the waiting time. Triage scores every finding continuously on reachability, exploitability, business context and confidence, and filters unreachable code, test fixtures and benign configuration before a person reviews it. Confirmed findings route to the commit author, then CODEOWNERS, then the wider team.
For the fix itself, Nullify opens a minimal, root-cause pull request that's validated against your build before it opens, then manages it through review by reading CI output and fixing failures. It never auto-merges: your engineers approve every change. Stalled security PRs are escalated through Slack with the risk and SLA stated, and MTTR and SLA compliance are reported per team. See how it works on the triage and remediation page.
There isn't one universal number. A good target depends on exposure and exploitability: an internet-facing, actively exploited critical needs days at most, while a critical in an internal service with no known exploit can take longer. Set targets per risk tier and track your own trend against them.
Mean time to detect (MTTD) measures how long a vulnerability or threat exists before you find it. MTTR measures how long it takes to fix it once found. Together they describe your total exposure window.
No. Most remediation time is spent waiting for triage, an owner and a trustworthy fix. Remove those waits and keep human review on every merge.
No. Accepted risks, suppressions and "won't fix" decisions should be reported separately. Counting them as remediations makes MTTR fall while exposure stays the same.
Add up the time from first detection to deployed fix for every remediated finding in the period, then divide by the number of remediated findings. Report the median and 90th percentile alongside the mean.