Safeguard
Supply Chain•

A patched fork keeps its old version number: is the alert real?

When a fork or vendor rebuild carries a fix but keeps its old version number, scanners may still alert. How to verify the fix and record the suppression.

Safeguard Security Team
3 min read

When a fork, vendor rebuild or internal patch keeps the original version number, scanners match on the number and may still raise an alert even though the code is fixed. Verify the fix in the source or binary, then suppress that alert for that exact build with the proof attached and an end date.

Why the scanner is confused

Most dependency scanners compare a package name and version to affected ranges in an advisory database. The OSV schema, for example, describes affected ranges using introduced and fixed versions, or full commit hashes for source ranges. If your build carries a patch but the version string says 2.3.1, a name and version match will say it is affected.

The scanner is not wrong about the number. It cannot see that you cherry picked the fix.

Common situations

  • An internal fork with a security patch applied on the same version.
  • A vendor or distribution rebuild that backports a fix without bumping the upstream version.
  • A vendored copy of a library inside your repository.
  • A shaded or bundled copy inside a larger archive.

How to verify before you suppress

  1. Read the advisory. Find the commit or change that fixes it.
  2. Check your source. Is that change, or an equivalent, present in your fork? A diff or a blame view is evidence.
  3. Check the artifact. If you ship a binary, confirm the patched behavior in the built output, not just in the repository.
  4. Test it. If the advisory includes a proof of concept or a description of the faulty behavior, write a test that fails on the old code and passes on yours.
  5. Pin the identity. Record the commit hash or build digest, since the version string will not tell the story.
EvidenceStrength
Link to the fix commit in your forkGood
Passing regression testBetter
Same plus a build digestBest for audits

Write the suppression record

Say what a reader needs: the advisory ID, your artifact identity, the fix commit, the test, the owner and the end date. Scope it to this build, not to the package name.

Fix the root cause when you can

Suppressions for forks come back every scan. Two ways to cut them out:

  • Give your fork its own version, such as a local suffix, and add an affected range correction if your tool supports it.
  • Publish a statement in a machine readable form. OpenVEX offers a fixed status for a product, which lets downstream tools read the answer instead of guessing.

Our post on checking distro backports shows the same method for operating system packages.

When the fork is stale

A fork that needs hand patches for every advisory is a maintenance cost. Track how many patches you carry. If the number grows, plan a return to upstream.

Quick check

Can I trust a vendor's claim that a fix was backported?

Ask for the advisory reference and the changed source or a signed statement. Then spot check behavior with a test.

Should I rename my fork's version?

Usually yes. A distinct version makes scanners and humans see that it is not the upstream build.

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.