Safeguard
Supply Chain•

Why do binary files in a dependency's repository raise risk?

Checked-in executables cannot be reviewed like source. Here is what the Binary-Artifacts check looks for, what it flags wrongly, and what to do about it.

Safeguard Security Team
4 min read

Binary files in a repository cannot be reviewed the way source can, so no one can easily confirm they match the code. They can be obsolete or subverted without anyone noticing. A binary in a dependency is a prompt to ask where it came from and whether it can be rebuilt.

What the Scorecard check says

OpenSSF Scorecard's Binary-Artifacts check determines whether the project has generated executable artifacts in its source repository. It rates the risk as High, with the stated concern of non-reviewable code. The documentation lists the problems:

  1. Binaries cannot be reviewed, which allows obsolete or maliciously subverted executables. Reviews generally cover source, since it is hard to audit an executable to see if it corresponds to the source.
  2. Over time the included executables might not correspond to the source code.
  3. Checked-in executables let the build process atrophy, which can lead to an inability to create working executables.

The documentation says users often use such executables directly, which leads to dangerous behavior, and suggests countering the problems with verified reproducible builds.

What counts, and what usually does not matter

The check covers generated executables. Many language systems produce them: machine code, Java class files, Python bytecode, minified JavaScript. Not every hit is dangerous.

FindingTypical situationConcern
Gradle or Maven wrapper jarBuild tooling conventionLow, but verify checksum
Test fixture binarySample data for testsLow
Prebuilt native library used at runtimeShipped to youHigher, ask for source and build
Minified bundle committed as the source of truthBuild step skippedMedium
Unexplained executableNo documentationHigh

Judge by whether the binary ends up in what you run and whether the project documents how it was built.

How to review a flagged binary

  1. Find out where it is used. Is it in the published package or only in the repository?
  2. Look for build instructions or a script that regenerates it.
  3. Compare a checksum from the repository against what the project documents, if it documents any.
  4. If the package ships native code, see whether releases are built in a public workflow with an attestation, such as npm provenance or a PyPI attestation.
  5. Decide how much that matters. A native library loaded into your process can do anything your process can.

When you are the maintainer

If you maintain a package yourself, remove checked-in executables where you can, build them in CI from source, and publish a checksum or attestation for the artifacts. It makes your project easier to adopt and easier to trust.

Do not treat the check as a verdict

A zero on this check is not a sign of danger, and a clean score does not mean the package is harmless. It speaks to reviewability. Pair it with identity checks, maintenance, and review practice, then weigh the result by what the package can touch.

Try it yourself

Click through it at your own pace, or open it full screen. It shows how a built image is scanned, since compiled content is where review by reading source stops.

Where Safeguard fits

Safeguard provides SBOM and dependency scanning and container scanning workflows alongside policies and gates. A free scan is at gold.safeguard.sh/scan.

Quick check

Is a Gradle wrapper jar a problem?

It is a common convention. Verify its checksum and treat it as low concern unless something else looks off.

Can binaries be trusted if the package has provenance?

Provenance shows where it was built, not whether the contents are harmless. It helps, but it is not a guarantee.

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.