In 2024, more than 40,000 Common Vulnerabilities and Exposures (CVEs) were created and disclosed for vulnerabilities in open source software. Couple this with our own research indicating that the average commercial codebase contains 911 open source dependencies, and it’s easy to understand how security and development teams are becoming increasingly overwhelmed by the number of vulnerabilities they’re forced to content with on a daily basis. As a result, they need ways to prioritize which issues introduce the most risk and should be resolved first. This is where the concept of reachability comes into play.
Vulnerability reachability refers to the analysis of whether a vulnerable code path can be executed in a specific context. This helps draw a clear delineation between vulnerabilities that are associated with application dependencies, and those that can, or might, be executed.
For example, let’s say you include Apache Commons Collections in your Java web application. Here’s what your software composition analysis (SCA) tool might detect
When the SCA tool returns this finding, it would be a no-brainer for teams to drop everything they’re doing, treat this issue as a “priority 0” vulnerability, and do whatever they need to do to fix it, even if it means creating downstream issues to application functionality. However, performing a reachability analysis on this vulnerability might reveal a different story.
With these facts in mind, teams can reasonably conclude that the exploit conditions can’t be met given the current state of the application, which negates the risk and bumps this vulnerability down to a much lower priority. While there is always risk associated with high-severity vulnerabilities like this one, teams can use reachability to ensure that they’re not neglecting more-exploitable vulnerabilities by burning cycles on ones like these.
There’s no question that reachability adds helpful context to the vulnerability prioritization workflow, but it’s important to recognize that it should never be used alone, and that it has several limitations and shortcomings.
When an SCA tool finds that a vulnerability is reachable, it means your application uses or calls a part of a library that contains a known library. This is an important detail, but it doesn’t mean that someone can actually exploit it. For vulnerability to be exploitable, an attacker must be able to actually trigger the vulnerable code and inflict damage via data leak, remote access, arbitrary code execution, etc. Simply put, reachable vulnerabilities aren’t always threats. Here are some examples.
False positives contribute to vulnerability overload and alert fatigue. Despite this, many teams would still prefer to err on the side of caution and deal with false positives. However, reachability analysis might also return false negatives, which gives teams a false sense of security when it incorrectly evaluates a vulnerability as not reachable.
Just like anything else in cybersecurity, there is very rarely a silver bullet that solves the problem. A comprehensive, tailored approach is often the recommendation. A combination of metrics and data, aggregated into a context-aware view will always be the most effective approach, offering more productive insights than a single point of view. This is why Black Duck offers customers several metrics for determining their exposure to the vulnerabilities our SCA solutions identify.
Black Duck solutions provide multiple methods to accurately identify dependencies, and their effective versions, in projects, regardless of tech stack, language, or access to build systems and source code. Accurately identifying dependencies is the first step to avoiding false positives and false negatives in vulnerability alerts.
Most vulnerabilities have an associated BDSA, which is human curated and tempered to remove any inaccuracies introduced by feeds like the NVD. BDSAs are issued, with full details, within hours of the public disclosure of a vulnerability.
For every dependency identified, Black Duck provides information on how the component was identified, how it was introduced to the project, and where in the project structure it is being used. Development teams have a better idea of their project structure than any automated tool can ever have, so Black Duck arms them with the information needed to quickly assess whether a vulnerable component is actually being called or otherwise shipped with the application.
Black Duck reachability data is populated using a mix of human curation and static analysis to determine the call path of certain dependencies. At this time, it is only available for Java projects, but it can be used as another key insight for vulnerability prioritization.
CVSS rates security vulnerabilities on a scale from 0.0 to 10.0, with higher scores indicating greater severity. The score considers factors like ease of exploitation, potential impact, and environment-specific risks to help prioritize security threats. BDSAs include custom CVSS scores; these scores include temporal metrics which give teams a more accurate snapshot of vulnerability severity.
CISA KEV is a catalog of vulnerabilities that have been actively exploited in the wild. Black Duck tags associated vulnerabilities so users can apply this information in their triage efforts. Some software vendors are required to patch these vulnerabilities or face penalties from the U.S. government.
EPSS estimates the likelihood that a vulnerability will be exploited in the wild within the next 30 days. This scoring system helps prioritize vulnerabilities by considering real-world exploit data, machine learning models, and factors like CVSS scores, exploit code availability, and attacker behavior. EPSS scores range from 0 to 1, where higher values indicate a greater probability of exploitation. This metric is offered by Black Duck Binary Analysis, which helps teams on the operational side triage vulnerabilities.
All this information is equally important when evaluating the severity of a vulnerability and prioritizing which should be fixed and when. A combination of these metrics, which Black Duck SCA solutions automatically provide, helps teams determine whether to upgrade, fix, or override their findings. And custom policy management helps teams automate this process to remove the guesswork, standardize an approach, and make sure no issue goes unchecked.
Interested in learning more about how Black Duck evaluates vulnerabilities? Check out our webinar for a closer look at our vulnerability research team.