Reachability analysis
Release status
Reachability analysis is available in Early Access for some integrations and languages.
For information on how to enable the feature for supported integrations and languages, see Snyk Preview.
Snyk reachability analysis allows you to analyze risk by identifying whether your application is calling a function related to the vulnerability, thus raising the chances of that vulnerability being exploitable in the context of your application.
Reachability analysis can be used as a standalone signal to make decisions, or as part of a broader risk-based prioritization approach using the Snyk Risk Score.
Snyk uses a combination of program analysis and various AI techniques to determine the reachability of a given vulnerability, with validation conducted by security research experts.
The following instructions explain how to set up and use reachability analysis and provide more information on how the underlying analysis works at Snyk.
Set up Reachability analysis
Follow these steps to enable Reachability analysis and begin analyzing Projects for reachable vulnerabilities:
In the Organization Settings, navigate to the Languages section.
In the General section, find Reachable vulnerabilities.
Activate Enable reachable vulnerabilities analysis.
After Reachability analysis is enabled, the analysis is done as part of scanning Projects.
You can apply the reachability analysis to existing Projects by triggering a manual test.
Supported languages and integrations
Reachability analysis is supported for the following languages and package managers:
Language | Package manager | Release status |
---|---|---|
Maven, Gradle | General Availability | |
npm, Yarn | Early Access |
Reachability analysis is supported in the following integrations:
Integration | Release status |
---|---|
General Availability | |
General Availability | |
Early Access | |
Early Access | |
Early Access | |
Early Access | |
Early Access |
Reachability analysis using the Snyk CLI, IDE, or other integrations is not supported.
Enabling Reachability analysis for brokered connections
If you use a brokered connection to your SCM, configure the Broker to provide access to your source files. See the Snyk Code - Clone capability with Broker for Docker, the Broker rules for Snyk Code, and the Snyk Broker - Code Agent documentation for configuration details when Broker is used with Snyk Code.
Using Reachability analysis
Reachability status
After a vulnerability is identified, it has one of the following reachability statuses:
REACHABLE
- A direct or indirect path was found from your application to the vulnerable code.NO PATH FOUND
- No path found from your application to the vulnerable code.
If a NO PATH FOUND
status is given, do not assume that the vulnerability is totally unreachable or unexploitable.
Reachability analysis status is available on the Project page, as part of the Risk Score, in the Issues Detail report, and through the API endpoint Get issues by group id.
Reachability analysis as shown on the Project page
After you import or test a Project using the Snyk UI, the Project is monitored by Snyk, and the results of the reachable vulnerabilities analysis appear on the Project page in the following places:
Filters - Allows you to focus on reachable vulnerabilities first by filtering results based on reachability.
Reachability badge - Allows you to understand the reachability level of vulnerabilities.
Call path - Allows you to see the path from your code to the vulnerable function to validate the result.
Reachability analysis as part of the Risk Score
Risk Score helps you apply holistic risk-based prioritization that combines multiple factors, associated with either the vulnerability or the context of your application. Reachability analysis is such a contextual factor that will significantly increase the overall score.
Risk Score is available on the Projects page and through the API and Reports.
Priority score, the legacy model preceding the Risk Score, also takes reachable vulnerabilities into account.
How Reachable vulnerability analysis works
Snyk uses a combination of security expert analysis, program analysis, and various AI techniques to determine the reachability of a vulnerability, including these steps of analysis:
Enriching vulnerabilities with the patches applied to fix them - as part of the Snyk vulnerability curation process, Snyk references the fix commit that the maintainer applied.
Related elements analysis- Based on the commit fix, Snyk uses DeepCode AI program analysis to analyze the functions and other elements related to the vulnerability.
Root Cause analysis - Snyk uses DeepCode AI and NLP techniques to automatically rank the related code elements by their chances of being the root cause of the vulnerability.
Reachability analysis - As issues are found in your application by a Snyk scan, the DeepCode program analysis engine is used to analyze the call graph of your application in relation to the call graph between the open-source dependencies used. A path between your application and a code element ranked as a root cause will yield a “Reachable” vulnerability.
Security experts supervision - Snyk security experts will manually verify and mark elements as root causes in order to make the entire analysis more accurate over time
The following considerations related to false positives and false negatives apply to Reachable vulnerability analysis.
Program analysis requires a trade-off between accurate results (minimizing false positives) and recall rates (not missing potentially exploitable vulnerabilities).
To facilitate this trade-off, Snyk DeepCode analysis applies real-time decision-making to determine whether to under-approximate the set of reachable elements based on analysis of the likelihood that a reachable path will be found in a specific environment.
For example, it is not always possible to give a precise answer when reflection programming is used. In such a case, neither returning a large set of false positives nor returning “Not reachable” will suffice. Snyk Deep Code analysis optimizes in order to retrieve the most accurate and complete result possible for a given code structure.
Last updated