History
Static reachability analysis (SRA) helps you prioritize remediation of vulnerabilities in dependencies. SRA identifies which dependencies your application actually uses. While dependency scanning finds all vulnerable dependencies, SRA focuses on those that are reachable and pose higher security risks, helping you prioritize remediation based on actual threat exposure.
Getting startedIf you are new to static reachability analysis, the following steps show how to enable it for your project.
Prerequisites:
Exclusions:
To enable SRA:
On the left sidebar, select Search or go to and find your project.
Edit the .gitlab-ci.yml
file, and add one of the following.
If you’re using the CI/CD template, add the following (ensure there is only one variables:
line):
variables:
DS_STATIC_REACHABILITY_ENABLED: true
If you’re using the Dependency Scanning component, add the following (ensuring there is only one include:
line.):
include:
- component: ${CI_SERVER_FQDN}/components/dependency-scanning/main@0
inputs:
enable_static_reachability: true
rules:
- if: $CI_SERVER_HOST == "gitlab.com"
At this point, SRA is enabled in your pipeline. When dependency scanning runs and outputs an SBOM, the results are supplemented by static reachability analysis.
Understanding the resultsTo identify vulnerable dependencies that are reachable, either:
A dependency can have one of the following reachability values:
When a direct dependency is marked as in use, all its transitive dependencies are also marked as in use.
Supported languages and package managersStatic reachability analysis is available only for Python, JavaScript, and TypeScript projects. Frontend frameworks are not supported.
SRA supplements the SBOMs generated by the new dependency scanner analyzer and so supports the same package managers. If a package manager without dependency graph support is used, all indirect dependencies are marked as not found.
Language Supported package managers Supported file suffix Python1pip
, pipenv
2, poetry
, uv
.py
JavaScript/TypeScript npm
, pnpm
, yarn
.js
, .ts
Footnotes:
pipdeptree
, optional dependencies are marked as direct dependencies instead of as transitive dependencies. Static reachability analysis might not identify those packages as in use. For example, requiring passlib[bcrypt]
may result in passlib
being marked as in_use
and bcrypt
is marked as not_found
. For more details, see pip.pipenv
, static reachability analysis doesn’t support Pipfile.lock
files. Support is available only for pipenv.graph.json
because it supports a dependency graph.To use the dependency scanning component in an offline environment, you must first mirror the component project.
How static reachability analysis worksDependency scanning generates an SBOM report that identifies all components and their transitive dependencies. Static reachability analysis checks each dependency in the SBOM report and adds a reachability value to the SBOM report. The enriched SBOM is then ingested by the GitLab instance.
The following are marked as not found:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4