Safeguard
Developer Tools•

Entry points in reachability analysis: why the starting line matters

A reachable result depends on where analysis starts. Learn what entry points are, how a wrong set skews results, and how to check the set your tool uses.

Safeguard Security Team
3 min read

An entry point is where execution can begin: a main function, an HTTP handler, a message consumer, a scheduled job. Reachability asks whether a path runs from an entry point to a vulnerable function. If the tool starts from the wrong set, it will call real paths unreachable or dead paths reachable.

What counts as an entry point

  • The main function or program start.
  • Web routes and API handlers.
  • Queue and event consumers.
  • Scheduled jobs and command line commands.
  • Exported functions of a library that others call.
  • Framework hooks that the framework invokes for you.

Some are obvious in code. Others exist only because a framework or config file wires them up.

Applications and libraries differ

For an application, entry points are the ways the program is started or triggered. For a library, almost every public function is an entry point because you cannot know who calls it. A library scan can therefore look much more reachable than an application scan that uses a small slice of the same code.

How a wrong set skews the answer

MistakeEffect
Missing a framework registered handlerReal paths look unreachable
Counting test code as an entry pointPaths exist that never run in production
Treating every export as an entry point for an appToo many reachable results
Ignoring a plugin entryPlugin code and its dependencies look dead

The Go vulnerability checker's documentation is a good model of transparency here: it explains what it does and does not see, including reflection and unsafe. Ask any tool for the same clarity about entry points.

How to check what your tool assumes

  1. Ask the tool or its documentation how entry points are found.
  2. Pick one endpoint you know is live and confirm its code appears in a reported path or at least in the analyzed set.
  3. Pick one dead function and confirm it is not an entry point.
  4. Review any framework your service depends on for hidden wiring.

Exposure is a second question

A path from an internal job is reachable but may not be exposed to outside input. Label entry points by who can trigger them: the internet, authenticated users, internal systems, or nobody outside the team. That labeling turns reachability into exposure, which is closer to risk.

For the basic concept, see what is a call graph.

A short example

A team scans a service and a dependency flaw comes back unreachable. Later they realize their message consumer is registered through a framework annotation, and the scan never treated it as an entry point. After declaring it, the same flaw shows a real path through a deserializer. The code and the dependency had not changed. Only the starting set had. Check entry points before you trust a quiet report.

Quick check

Should test files be entry points?

Usually not for production risk. Treat paths that start only in tests as lower priority, but keep them in view for CI exposure.

Why do libraries look more reachable?

Their public functions are all possible entry points because callers are unknown.

Safeguard's reachability analysis is part of its dependency scanning. A free scan shows how paths are reported.

Sources

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.