Safeguard
Security Guides•

What is reachability analysis? Cutting vulnerability noise

Reachability analysis checks whether your code can actually call the vulnerable function in a dependency. Here is how it works and where it falls short.

Safeguard Security Team
3 min read

Reachability analysis checks whether your application can actually execute the vulnerable code inside a dependency. A scanner reports that a library has a flaw. Reachability asks the next question: does any path from your code lead to the flawed function? If not, the finding is lower priority.

Why it exists

Modern applications pull in many libraries, and most of each library goes unused. A vulnerability usually lives in one function or one feature. If you never call it, the risk to you is much smaller than the alert suggests.

Without this check, every finding looks equally urgent, teams burn time on alerts that cannot be triggered, and the real problems wait in the same queue.

How it works in outline

The tool builds a call graph, a map of which functions call which. It starts from your entry points, such as request handlers or the main function. It follows calls into dependencies. Then it checks whether the vulnerable function appears on any path.

Three results are common:

  • reachable: a path exists
  • not reachable: no path was found
  • unknown: the analysis could not decide, often because of dynamic behavior

Where it falls short

Static call graphs struggle with reflection, dynamic loading, and code that builds function names at runtime. A "not reachable" result is strong evidence, not proof. Good tools label uncertainty instead of hiding it.

Reachability also depends on how you configure and deploy the software. A feature that is off in your setup can be on in someone else's, so keep the result tied to your context.

How to use the result

Do not delete unreachable findings. Sort them lower and record why. If your usage changes, for example you start calling that function, the finding should move back up automatically. Pair it with exploitation signals so a confirmed exploited flaw still gets attention even when the evidence is incomplete.

The same reasoning is what supports a VEX statement saying a product is not affected.

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

Safeguard includes reachability analysis alongside dependency scanning. A free scan is at gold.safeguard.sh/scan.

Quick check

If a finding is not reachable, can I ignore it?

Deprioritize, yes. Ignore, no. Code changes and analysis gaps can make it reachable later.

Is reachability the same as exploitability?

No. Reachable means your code can get to the flaw. Exploitable also depends on whether an attacker can control the input and bypass defenses.

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.