Skip to main content
The Findings grid reports reachability in two columns: Code Reachability and Environment Reachability. Read together, they tell you whether a vulnerable component’s code is actually executed in the deployed package. Code Reachability answers whether the vulnerable code is reachable inside its own binary. Environment Reachability answers whether that component runs or loads in the assumed runtime environment. Both come from Attack Surface Approximation and Prioritisation (ASAP), and each column has its own filter. The Code Reachability and Environment Reachability columns in the Findings grid.

Prerequisites

  • A completed image scan with findings.
  • Access to the Findings grid for the image or product.

The two reachability columns

Each column answers a different question. Environment Reachability asks whether the component runs at all in the package. Code Reachability asks whether, once it runs, execution can reach the vulnerable code. Neither answer alone confirms that the vulnerable code runs; the combination does.

Code Reachability

Whether the vulnerable code is reachable from an entry-point inside the component that contains it. The Code Reachability column filter.

Environment Reachability

Whether the component runs or loads in the package’s assumed runtime environment. The Environment Reachability column filter.

How reachability differs by ecosystem

The same column value is derived differently depending on the package. Code Reachability depends on what counts as an entry-point inside a binary, and Environment Reachability depends on how the package declares what runs. The Ecosystem column is the kind of package you uploaded; the Environment class is the label ASAP assigns once it identifies that package. Use this table to read the columns in the right context. See Reachability analysis (ASAP) for the full model. Reading this in practice, take each column in turn:
  • Code Reachability reads the same on containers and Linux images, because both hold ELF binaries: main or start gives Entrypoint, and shared-library exports give Exported. UEFI has no main-style entry, so its reachable code is almost always Exported, entered through protocol interfaces, PPIs, registered event handlers, and SMI handlers.
  • Environment Reachability starts from how each package declares what runs: containers from the OCI config, Linux images from start-up scripts, UEFI from the modules in the firmware image. Across all three, a component that runs shows Entrypoint, one component invoking another shows Runtime Invocation, and a loaded but possibly unused dependency shows Runtime Dependency. Runtime Dependency comes from dynamic linking, so it appears on containers and Linux, and rarely on UEFI, where modules interact through protocols and PPIs and show Runtime Invocation instead.
On UEFI findings, Exported is the strong Code Reachability signal, not a weaker one. Do not deprioritise a UEFI finding only because it is not marked Entrypoint. A module’s reachable code is entered through its protocol interfaces, PPIs, event handlers, and SMI handlers, which the platform classifies as Exported.

Reading the two columns together

Environment Reachability places the component on the attack surface. Code Reachability confirms the vulnerable path inside it. A finding is most likely to be executed when both signals are strong. This pairing holds for every ecosystem, but which values you actually see depends on it: on UEFI, the strong Code Reachability signal is Exported rather than Entrypoint, as covered in How reachability differs by ecosystem. Read the pair against this table:
Undetermined means there is code but its reachability could not be confirmed statically. N/A means there is no analysable code for the finding. Neither proves the code never runs, so keep both for a second pass rather than discarding them.

Filter the grid by reachability

Each column has its own filter in the grid header.
1

Open a column filter

Click the funnel icon in the Code Reachability or Environment Reachability column header.
2

Select the values to keep

Tick the values you want to see. Use Search in filters to find a value, or Select All to start from everything. A finding matches when its value is in your selection.
3

Apply

Click OK to apply, or Clear to reset the column. The grid updates and writes the filter state to the page URL, so you can bookmark or share it.
4

Combine both columns

Filter Environment Reachability and Code Reachability together to scope to findings that both run and are reachable in-binary.

Example: reachable, open known vulnerabilities

Build a triage view for known vulnerabilities that are most likely executed and still open:
  • Type is Known Vulnerability.
  • Environment Reachability is Entrypoint or Runtime Invocation.
  • Code Reachability is Entrypoint or Exported.
  • Status is New or In Progress, with Ignored off.
Sort by Risk Score, highest first. Reachability already feeds risk scoring, so reachable findings sort toward the top. To widen the net for a second pass, add Runtime Dependency and Referenced, then work down from there.
This answers the ASAP question directly: of the known vulnerabilities present, which sit on code that runs and is reachable inside its binary. It is a strong default for a triage queue.

On the finding detail

Open a finding to see both signals in full.
  • Code Reachability shows the Status and links to the reachability trace evidence.
  • Environment Reachability shows the Environment it was derived from, the Reachability kind, and the components the reachability comes from under from Component(s), each with its path.
When a component is reachable from more than one other component, the Environment Reachability cell shows a count, such as 2 ER, and the detail lists each source under from Component(s). Check each component listed there to see whether it calls the vulnerable function. Code Reachability status on a finding. Environment Reachability on a finding, with the components it is reachable from. Each property changes how much weight the reachability carries:

Save and share the view

Once the filters and sorting are set, keep the view for reuse:
  • Save the filter, sort, and column settings as a Saved View. Saved Views are scoped to the grid category (Global, Product Image, and so on).
  • Copy the page URL to hand a teammate the same view. The grid encodes filters, sorting, and page state in the URL.

Reachability analysis (ASAP)

How Binarly computes the Code and Environment Reachability behind these filters.

Saved Views

Save and reuse filtered, sorted grid views.

Finding details

Where reachability appears on an individual finding.

CVSS vector filtering

Filter findings by CVSS vector components.