Safeguard
Supply Chain•

How do you measure dependency version drift across many services?

Version drift is how far services lag on a shared dependency. Measure it from SBOMs or lockfiles, chart the spread, and set a target for convergence.

Safeguard Security Team
3 min read

Take the resolved version of one dependency from every service's lockfile or SBOM, count services per version, and compare against the newest supported release. The spread is your drift. Report it for the dependencies that matter most, and set a convergence target such as "everything within one minor version".

Definition

Version drift is the gap between the versions of the same dependency in use across your services, and between those and the latest supported release. Some drift is normal. Wide drift means some services will carry fixed vulnerabilities and some will not, and every advisory becomes a fresh scramble.

How to measure

  1. Choose the dependencies to watch: those shared by many services, those on the internet facing edge, and those with a history of advisories.
  2. Extract resolved versions from lockfiles or per service SBOMs.
  3. Count services per version.
  4. Mark the latest supported release and any versions already known to be vulnerable.
  5. Compute two numbers: the share of services on the latest line, and the oldest version still deployed.

A table to produce

VersionServicesStatus
4.2.x41current
4.1.x23supported
3.9.x6affected by advisory
3.4.x2end of life

The numbers above are an example of the shape and not measured data. The useful part is the last column, which tells you which rows demand action.

Reading drift

  • A long tail of old versions usually means a few abandoned services. Handle them as an ownership problem.
  • Two big groups on two versions usually means a stalled migration. Find the blocker.
  • A uniform spread means no process. Add scheduled updates.

Closing the gap

Grouped update pull requests can reduce the review cost: GitHub's Dependabot allows grouping by dependency name across directories for version updates, if all directories share an ecosystem. Central pull requests help with shared libraries you own, but each service owner still reviews and deploys.

For stubborn services, set a deadline tied to an end of life date. After that date, a service on an unsupported version moves to the exceptions list.

Pin and update

Pinning gives reproducibility, and it means you must update on purpose. Docker's guidance on pinned bases says the same: you give up automatic security fixes, so use tooling to propose updates. Drift is what you get when pins are never refreshed.

Quick check

Is zero drift the goal?

No. The goal is a bounded spread with no known vulnerable versions deployed.

Which source is better, lockfile or SBOM?

Either works if it records resolved versions. An SBOM generated from the built artifact is closest to what actually runs.

Safeguard's SBOM and dependency scanning supports this kind of fleet view, and a free scan shows one project.

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.