Skip to content
セキュリティとガバナンス

A Reachability Model for AppSec: From Alerts to Velocity

Alert fatigue, not a shortage of scanners, is the real AppSec failure mode. Reachability fixes it.

Zof Reliability Team · エンジニアリング & プロダクト

2026年6月8日 · 読了時間 14 分 · 2026年6月16日 更新

Share
01

The real AppSec failure mode is not missing scanners

Most enterprise security programs are not under-scanned. They run SAST, DAST, SCA, secret detection, and container scanners, and each one produces a queue. The combined output is a backlog that grows faster than any team can work it down.

The failure mode is not detection. It is triage. Engineers stop reading the findings, security stops trusting the count, and genuinely exploitable issues sit in the same list as theoretical ones. This is alert fatigue, and it is the dominant reason vulnerabilities reach production despite heavy tooling investment.

The instinct to add another scanner makes the problem worse. More coverage without prioritization means more noise, slower remediation, and lower confidence. The constraint is not how much you can find. It is how well you can tell what matters.

02

Severity is not risk

A CVSS score rates a vulnerability as if it existed in a vacuum. It answers "how bad is this class of flaw," not "can this flaw be exploited in our system right now." Those are different questions, and treating the first as the second is the root cause of alert fatigue.

A critical-rated dependency that is never invoked, sits behind authentication, and handles no sensitive data is a lower real risk than a medium-rated flaw on a public, unauthenticated path that touches customer records. Severity-driven queues invert that ordering every day.

The security debt crisis is largely a debt of mis-prioritization. Teams are not ignoring risk; they are drowning in findings ranked by a number that does not account for context.

Severity describes the vulnerability. Reachability describes your exposure. Only one of them should set the queue.

03

What reachability actually means

Reachability is the question of whether a vulnerable code path can be exercised by an attacker in the deployed system. It is not a single signal. It is the intersection of several.

The dimensions of reachability

  • Call path: is the vulnerable function actually invoked from a real entry point, or is it dead code in a transitive dependency?
  • Exposure: is the entry point reachable from an untrusted boundary, or is it internal-only and behind controls?
  • Authentication and authorization: does reaching the path require credentials, and what privilege does it grant?
  • Data flow: does attacker-controlled input reach the sink, and does the path touch sensitive or regulated data?
  • Runtime context: is the affected component deployed, in which environments, and with what configuration?

A finding that fails any of these tests is not necessarily safe to ignore, but it is almost never the most urgent thing in the queue. Reachability gives you a defensible reason to defer it and to escalate the findings that pass.

04

The reachability funnel

Reachability is best understood as a funnel that narrows raw findings down to the set that warrants engineering time. Each stage removes a class of noise, and the survivors are ranked by exploitable exposure, not by severity alone.

From raw findings to remediation

  All scanner findings        ████████████████████  100%
        │  drop unreachable code paths
        ▼
  Reachable code             ████████████          ~55%
        │  drop internal-only / no untrusted exposure
        ▼
  Externally exposed         ██████                ~28%
        │  require attacker-controlled data flow to sink
        ▼
  Exploitable in context     ██                    ~10%
        │  rank by data sensitivity + privilege
        ▼
  Remediate first            █                     top of queue
Stage widths are illustrative of the funnel shape, not a fixed result.

The point of the funnel is not the exact percentages. It is the shape: the queue that reaches engineers should be a small, ordered, context-justified subset of what the scanners produced.

05

Severity-driven versus reachability-driven AppSec

Two operating models
DimensionSeverity-drivenReachability-driven
Queue orderingBy CVSS / scanner ratingBy exploitable exposure in context
InputsFindings in isolationCall paths, exposure, data flow, runtime
Typical signal-to-noiseLow; queues grow unboundedHigh; queue is a justified subset
Engineer experienceAlert fatigue, ignored findingsFew, defensible, actionable items
What deferral meansUntracked backlogExplicit, evidence-backed decision

The shift is operational, not just analytical. Reachability changes what enters the queue, who acts on it, and how a deferred finding is recorded. That is why it accelerates remediation rather than simply re-sorting the same backlog.

06

The operating model: detect, filter, prioritize, govern

Reachability is not a scanner. It is a stage you insert between detection and remediation, and it only works as a continuous loop.

The four stages

  1. Detect: keep your existing scanners. Reachability augments them; it does not replace them.
  2. Reachability filter: evaluate each finding against call paths, exposure, data flow, and runtime context to determine real exploitability.
  3. Prioritize: rank survivors by exploitable exposure, weighting data sensitivity and privilege, and produce a short ordered queue.
  4. Govern remediation: route the top of the queue into a controlled fix path where humans authorize what ships.

Because systems change continuously, the filter has to run continuously. A path that was internal-only last sprint can become externally exposed after a routing change. Reachability is a property of the live system, not a one-time assessment.

07

Why reachability needs system context

Reachability cannot be computed inside a single repository. A vulnerable function in one service is only reachable if another service calls it, through a gateway that exposes it, carrying data that originates from an untrusted boundary. That information lives across the system, not in any one codebase.

This is why a reachability model depends on the System Graph: a living map of services, workflows, dependencies, tests, incidents, and environments. The graph is what lets a finding be evaluated against actual call paths and exposure rather than guessed at from a manifest file.

Without that shared context, reachability degrades back into heuristics, and heuristics reintroduce the noise the model was meant to remove. The graph is the mechanism that makes the filter precise enough to trust.

08

The 70-90 percent exposure reduction

According to Zof's research, a reachability-driven AppSec model can reduce exploitable exposure by 70 to 90 percent. The figure deserves precise reading. It does not mean fewer vulnerabilities exist. It means the set of findings that are actually exploitable in context is far smaller than the raw scanner count, so the work that genuinely reduces risk shrinks by that order of magnitude.

That reduction is what makes the model accelerate velocity rather than constrain it. When the actionable queue is one-fifth to one-tenth its former size, engineers can clear it, security can trust it, and remediation moves from a perpetual backlog to a tractable flow.

The same research context matters here: Zof's analysis finds that AI-generated code now accounts for roughly 41 percent of codebases, that around 45 percent of AI coding tasks introduce critical security flaws, and that about 80 percent of developers bypass security policy. Volume is rising while attention is fixed. Prioritization is the only variable left to move.

09

Governed remediation of what actually matters

Cutting exposure is not the finish line. A short, well-ordered queue is only valuable if findings get fixed, and fixing security-relevant code is precisely where unreviewed automation is least acceptable.

This is the boundary where reachability hands off to governed AI remediation. Remediation Fleets propose fixes, validate them in staging, and open pull requests with the evidence attached: the call path, the exposure, the data flow, and the reproduction. Humans authorize the merge. Agents propose, humans authorize.

Secrets, identity, billing, and data-destructive changes stay outside autonomous reach by policy. The model accelerates the drafting of fixes for findings that survive the funnel; it does not change who is accountable for what ships.

10

The metrics that prove it is working

A reachability program is measurable, and it should be held to numbers that reflect real risk rather than activity.

What to measure

  • Exploitable exposure: the count of findings that survive the reachability funnel, tracked over time. This is the number that should fall.
  • Mean time to remediate: how long an exploitable finding stays open. A smaller, trusted queue should shorten this sharply.
  • Signal-to-noise: the ratio of acted-upon findings to total findings. Rising ratio means the queue is becoming worth reading.
  • Deferral coverage: the share of unreachable findings explicitly recorded as deferred with evidence, rather than silently ignored.

These metrics also reframe the conversation with security and compliance reviewers. A deferral is no longer a gap; it is a documented, evidence-backed decision that a finding is not exploitable in the current system. That is a defensible posture, and it is auditable.

11

What this changes for security and engineering leaders

For security leaders, the program stops being a volume report and becomes a risk-reduction system. The headline number is exploitable exposure, and it trends down because the team is fixing the right things rather than racing an unbounded queue.

For engineering leaders, AppSec stops being a tax that slows delivery. A short, context-justified queue with governed remediation fits the change pipeline you already run, alongside CI/CD, Jira, and Slack. Velocity and security stop being a trade-off.

An industry pattern supports the same logic at the application layer: reachability-driven prioritization is how a security program turns a $2.41 trillion annual cost-of-poor-quality problem from a counting exercise into a control problem.

12

Final takeaway

The AppSec problem is not that scanners miss too much. It is that they find too much, undifferentiated, and bury the exploitable in the theoretical. Reachability is the operating model that separates the two, using system context to rank findings by real exposure and routing the survivors into governed remediation.

Start with the metric that matters: exploitable exposure. Drive it down with a reachability funnel built on the System Graph, close the loop with governance that keeps humans accountable, and let the queue your engineers actually read become short enough to clear.

よくある質問

No. Reachability is a prioritization stage that sits between detection and remediation. Keep your SAST, DAST, SCA, and secret scanners; the model evaluates their findings against call paths, exposure, data flow, and runtime context to decide what is actually exploitable and what to fix first.

続きを読む

01Zof Console

姿勢、操作、次に注意が必要なことを 1 つの面で確認できます。

エンジニアリング、QA、SREの各チームが毎日開く認証済みのホーム。品質の姿勢、進行中の実行、モジュールごとのカバレッジ、そして次に注目すべきことが分かります。

運用上の KPI

実行数、カバレッジ、リスク

出荷先のあらゆる環境に対応します。

ワークスパイン

仕様・テスト・スケジュール

仕様から計画された回帰まで。

ガードレール

RBAC・SSO・監査

指定された人間に起因するすべての行為。

LIVE/console
Zof AI ホーム コマンド センターには、94% パスでの 12 件の実行、3 つの未解決の重大な問題、84% のカバレッジ、4 つのモジュール トレーサビリティ バー、仕様パイプライン、今後のスケジュール、アクティブ実行サイドバー付きの推奨される次のアクションが表示されます。
ホーム ビュー · チェックアウト サービス · ステージング · 製品からライブでキャプチャ。
  • 01 · RUNS · 24H

    94% pass

    12 runs across staging

  • 02 · COVERAGE

    84%

    Across four modules

  • 03 · ACTIVE RUNS

    3 running

    Live on this branch

  • 04 · NEXT ACTIONS

    Recommended

    Triage gaps, new spec

From Alert Fatigue to Velocity: A Reachability Model for AppSec | Zof AI Blog