Safeguard
Supply Chain•

How do you verify an open source scanner before running it in CI?

A scanner runs with access to your code and tokens. Verify its release with signatures or attestations first. Here are the steps and their limits.

Safeguard Security Team
4 min read

Check that the release is signed or carries a build attestation, verify it with the publisher's documented method, compare checksums, and pin the exact version or digest in your pipeline. A valid signature proves where it was built, not that the code is safe, so treat it as one control of several.

Why this matters more for a scanner

A security scanner is a privileged tool. In CI it often reads your whole repository and sometimes holds tokens to post results. If a tampered copy ran there, the damage would reach every repository it touches. That is reason enough to verify the download rather than pipe an install script straight into a shell.

Step 1: Look for signatures or provenance

The OpenSSF Scorecard Signed-Releases check looks in a project's last release assets for files such as signature files, Sigstore bundles and in-toto provenance. It scores the project higher when signatures are present for each release and highest when SLSA provenance is attached. The documentation is explicit that the check does not verify the signatures. It only reports whether they exist.

So presence is a good sign, but you still have to do the verification yourself.

Step 2: Verify the attestation

GitHub documents artifact attestations as signed claims about how and where software was built, including the workflow, repository and commit. GitHub generates them with Sigstore. If the project publishes them, you can check a downloaded file with the GitHub CLI.

gh attestation verify ./scanner-linux-amd64.tar.gz --repo OWNER/REPO

Replace OWNER and REPO with the project's repository. Read the project's own release notes for the exact artifact names and any extra flags it recommends.

Step 3: Know what verification does not prove

GitHub's documentation warns that attestations are not a guarantee an artifact is secure. They link the artifact to source code and build instructions. You still decide whether you trust that source and that build.

Verification will catch a swapped binary. It will not catch a malicious change that was committed legitimately by a compromised maintainer.

Step 4: Pin what you verified

Once verified, pin it.

  1. Record the version and the hash you checked.
  2. Reference that exact version or digest in your pipeline, not a floating tag such as latest.
  3. Update deliberately: verify the new release, then change the pin in a reviewed pull request.
  4. If you use a prebuilt container image or action, pin by digest or commit hash as well.

A short checklist

CheckDone when
Signature or attestation existsFound in release assets
You verified itCommand output saved with the ticket
Version is pinnedHash or digest in the pipeline file
Upgrades are reviewedPull request required for pin changes
Token scope is minimalRead only unless it must comment

If a project publishes no signatures at all, you can still use it, but record that as an accepted risk and keep its permissions narrow. Safeguard's guardrails and policies can gate what runs in your pipeline, which is a useful second layer around any scanner you adopt.

Quick check

Does a checksum replace a signature?

No. A checksum only proves the file matches a number published somewhere. If the same place was compromised, both can be changed together.

Is a verified scanner safe to run with broad tokens?

Verification says nothing about permissions. Grant the least access the scanner needs regardless.

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.