Safeguard
Supply Chain•

How does GitLab dependency scanning work with SBOMs?

GitLab dependency scanning builds a CycloneDX SBOM in CI and matches it to advisories, then rescans when new advisories land. Here is how it works.

Safeguard Security Team
3 min read

GitLab dependency scanning finds known vulnerabilities in the packages your project uses, including runtime, development and transitive ones. The recommended method produces a CycloneDX SBOM in your pipeline and checks it against the GitLab advisory database, then rescans stored components when advisories change.

The three ideas inside it

Dependency scanning using SBOM. The analyzer runs in CI and produces a CycloneDX software bill of materials. GitLab checks those components against its advisory database and its malware advisories. The documentation recommends this method for new projects.

Continuous dependency scanning. After a pipeline succeeds on the default branch, GitLab keeps the component list. When the advisory database or malware advisories are updated, it rescans that list. A vulnerability disclosed next week can therefore show up without a new pipeline run.

The older Gemnasium method. This is the original pipeline analyzer. The documentation marks it deprecated in 17.9 and proposed for removal in 20.0, with a migration guide. If your configuration still uses it, plan the move.

Why the SBOM step matters

An SBOM is an inventory. Once you hold one, the question "are we affected?" becomes a lookup and not a repository crawl. The continuous scan relies on that inventory, which is why the order of operations matters: inventory first, matching second, rematching whenever data changes.

What the page does not say

Honest reading matters here. The page we reviewed lists Ultimate as the tier. It does not describe supported package managers and file types in detail, does not describe limitations of the scanners, and does not mention reachability analysis. If any of those decide your buying question, check the linked subpages or test on your own repositories.

Question to answerWhere to look
Which ecosystems are supported?The language support reference in GitLab docs
Do I get alerts without a pipeline?Continuous dependency scanning, default branch only
Is the vulnerable code called?Not described on the page; test it

A short evaluation plan

  1. Pick three repositories: one small, one with a large lock file, one in a language you worry about.
  2. Run the analyzer and open the generated SBOM.
  3. Compare the component list with what you expect the build to ship.
  4. Note findings with no fix available, since those need a decision and not a patch.
  5. Check whether a newly published advisory appears without a new pipeline.

Where a dedicated scanner fits

If you need one inventory across several hosts, or want findings ranked by whether the vulnerable code is reachable, a dedicated scanner adds that. Safeguard provides SBOM and dependency scanning with reachability analysis, and a free scan at gold.safeguard.sh/scan.

Try it yourself

Click through it at your own pace, or open it full screen.

Open the inventory and find a transitive package you never chose directly.

Quick check

Does continuous dependency scanning need a new pipeline run?

No. It rescans components from the latest successful default branch pipeline when advisory data updates.

Is the Gemnasium analyzer still the recommended method?

No. The documentation marks it deprecated in 17.9 and recommends the SBOM based method for new projects.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.