Vulnerable dependency detection

If the dependency information reported by GitHub is not what you expected, there are a number of points to consider, and various things you can check.

The results of dependency detection reported by GitHub may be different from the results returned by other tools. There are good reasons for this and it's helpful to understand how GitHub determines dependencies for your project.

Missing or undetected dependencies

GitHub generates and displays dependency data differently than other tools. Consequently, if you've been using another tool to identify dependencies you will almost certainly see different results. Consider the following:

Alert coverage scope

Dependabot alerts advise you about dependencies you should update, including transitive dependencies, where the version can be determined from a manifest or a lockfile. Dependabot security updates only suggest a change where Dependabot can directly "fix" the dependency, that is, when these are:

Check: Is the uncaught vulnerability for a component that's not specified in the repository's manifest or lockfile?

Unsupported ecosystems

Dependabot alerts are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the GitHub Advisory Database, the dependency graph, Dependabot security updates, and Dependabot alerts are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. For an overview of the package ecosystems that we support for Dependabot alerts, see Dependency graph supported package ecosystems.

It's worth noting that security advisories may exist for other ecosystems. The information in an unreviewed security advisory is provided by the maintainers of a particular repository. This data is not curated by GitHub. For more information, see Browsing security advisories in the GitHub Advisory Database.

Check: Does the uncaught vulnerability apply to an unsupported ecosystem?

Historical vulnerabilities

The GitHub Advisory Database was launched in November 2019, and initially back-filled to include advisories for security risks in the supported ecosystems, starting from 2017. When adding CVEs to the database, we prioritize curating newer CVEs, and CVEs affecting newer versions of software.

Some information on older vulnerabilities is available, especially where these CVEs are particularly widespread, however some old vulnerabilities are not included in the GitHub Advisory Database. If there's a specific old vulnerability that you need to be included in the database, contact us through the GitHub Support portal.

Check: Does the uncaught vulnerability have a publish date earlier than 2017 in the National Vulnerability Database?

Advisory database scope

Some third-party tools use uncurated CVE data that isn't checked or filtered by a human. This means that CVEs with tagging or severity errors, or other quality issues, will cause more frequent, more noisy, and less useful alerts.

Since Dependabot uses curated data in the GitHub Advisory Database, the volume of alerts may be lower, but the alerts you do receive will be accurate and relevant.

Alert generation and aggregation

When a dependency has multiple vulnerabilities, an alert is generated for each vulnerability at the level of advisory plus manifest.

Screenshot of the Dependabot tab showing two alerts from the same package with different manifests.

Legacy Dependabot alerts were grouped into a single aggregated alert with all the vulnerabilities for the same dependency. If you navigate to a link to a legacy Dependabot alert, you will be redirected to the Dependabot tab filtered to display vulnerabilities for that dependent package and manifest.

Screenshot of the Dependabot tab showing the filtered alerts from navigating to a legacy Dependabot alert.

The Dependabot alerts count in GitHub shows a total for the number of alerts, which is the number of vulnerabilities, not the number of dependencies.

Check: If there is a discrepancy in the totals you are seeing, check that you are not comparing alert numbers with dependency numbers. Also check that you are viewing all alerts and not a subset of filtered alerts.

Dependency ignore options

You can configure Dependabot to ignore specific dependencies in the configuration file, which will prevent security and version updates for those dependencies. If you only wish to use security updates, you will need to override the default behavior with a configuration file. For more information, see Configuring Dependabot security updates to prevent version updates from being activated. For information about ignoring dependencies, see Ignoring specific dependencies.

Monorepo limitations for GitHub Actions versions

If your repository contains multiple GitHub Actions (for example, in a monorepo), the tag format you use affects how Dependabot detects and updates action versions.

Recommendation: For monorepos with multiple actions, use the name/version (slash) format for action tags. This ensures Dependabot can parse the tag hierarchy correctly and update actions independently.

Further reading