Safeguard
Security Guides•

How does reachability analysis shorten the triage stage?

Reachability analysis shows whether your code can call the vulnerable function, which cuts triage time and moves reachable flaws to the front.

Safeguard Security Team
4 min read

Reachability analysis checks whether your application can actually call the vulnerable code in a dependency. That turns triage from a debate about severity into a lookup. Reachable flaws on exposed services go to the front of the queue, and the rest get a scheduled, lower urgency fix.

What triage costs

Triage is the stage between "alert raised" and "someone owns a fix". Without code level context, each alert needs a person to read the advisory, find where the package is used, guess whether the vulnerable function is called, and argue about priority. Multiply by hundreds of alerts and the stage becomes the bottleneck.

What reachability adds

A package can contain many functions. An advisory usually affects one or a few. If your code never calls the affected function, directly or through other libraries, the flaw is present but not reachable from your application paths. Reachability analysis traces call paths from your code into the dependency to answer that question.

It does not mean the flaw is harmless. Code changes, new features may start calling the function, and static analysis has limits. It means the urgency is different.

A decision table

Reachable?Exposed to the internet?Suggested handling
YesYesFront of the queue, expedited path
YesNoNormal high priority
NoYesScheduled fix, recheck on code changes
NoNoRoutine update cycle
UnknownAnyTreat as reachable until you know

Pair this with other signals, such as whether the flaw is being exploited, as covered in our posts on prioritisation. Reachability answers a question the others cannot: does my code touch it?

Steps to adopt it

  1. Run reachability on your most exposed services first. Prove it on a small set.
  2. Compare to your manual triage. Check for cases where people deprioritized something reachable.
  3. Change the queue order. Sort by reachable and exposed, then by severity.
  4. Set a recheck rule. When a service changes, rerun, since an unreachable flaw can become reachable.
  5. Record the evidence. Keep the call path in the finding so auditors and teammates can follow it.

Where it can mislead

  • Dynamic calls. Reflection and plugin systems can hide call paths from analysis.
  • Unsupported languages or frameworks. Treat coverage gaps as unknown, not safe.
  • Stale results. An analysis from last quarter says little about today's code.

For these reasons, treat unreachable as a lower priority and a scheduled fix, not as permission to ignore.

Effect on the window

Triage time drops because many alerts get an answer without a meeting. Total exposure also changes in a subtler way: the reachable flaws start earlier, so the ones that matter most get shorter windows even if the total workload is unchanged.

Measure it

Track median time from alert to owner for reachable findings versus the rest. You want the reachable number to be clearly smaller. If it is not, your queue is not using the signal.

Try it yourself

Open the demo and watch how reachability cuts a long list of findings to a short one.

Click through it at your own pace, or open it full screen.

Safeguard includes reachability analysis alongside dependency scanning, so triage can start from call paths. You can try a free scan at gold.safeguard.sh/scan.

Quick check

Is an unreachable vulnerability safe to ignore?

No. It is lower urgency. Code changes can make it reachable, so schedule the fix and recheck.

What if reachability is unknown?

Treat it as reachable until you can show otherwise.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.