Engineers with a laptop at automation test rigs in a bright production hall

SBOM

OpenSSF Scorecard explained: how the 0-10 score is built

Last updated:

OpenSSF Scorecard runs 20 heuristic checks — covering areas such as branch protection, code review, pinned dependencies, signed releases and known unfixed vulnerabilities — against a public GitHub or GitLab repository, scoring each check from 0 to 10 and combining them into a single risk-weighted aggregate score. It is maintained by the Open Source Security Foundation (OpenSSF); Scorecard's own README states its purpose plainly: "to help open source maintainers improve their security best practices and to help open source consumers judge whether their dependencies are safe." The result is not a security audit; it is a fast, repeatable, machine-readable signal you can run against hundreds or thousands of dependencies at once.

Key takeaways

  • Synthetic example.
  • Scorecard's own checks documentation lists 20 checks in the default suite.
  • Look it up on the public dataset.
  • Scorecard reads GitHub and GitLab repositories.

How is the 0-10 aggregate score built?

Per Scorecard's README, under "Aggregate score": each individual check returns a score of 0 to 10, and the aggregate score is "a weight-based average of the individual checks weighted by risk." The checks documentation assigns every check one of four risk levels, each with a fixed weight used in that average:

Risk level Weight
Critical 10
High 7.5
Medium 5
Low 2.5

Because the weighting is risk-based rather than a simple average, a project that scores 0 on a Critical-rated check (for example, a dangerous GitHub Actions workflow pattern) sees a much larger hit to its overall score than a 0 on a Low-rated one (for example, a missing published license). A project does not need every check at 10 to reach a high overall score, but it cannot reach one while ignoring the heavily weighted checks.

Worked example: how much does one check move the score?

Synthetic example. The repository and its check scores are invented to show the arithmetic; they describe no real project.

Take a library scored on 16 checks: one Critical, seven High, six Medium and two Low. The weights add up to 10 + (7 × 7.5) + (6 × 5) + (2 × 2.5) = 97.5.

Risk (weight) Checks and synthetic scores Weighted points
Critical (10) Dangerous-Workflow 10 100
High (7.5) Binary-Artifacts 10, Branch-Protection 3, Code-Review 4, Maintained 10, Signed-Releases 0, Token-Permissions 0, Vulnerabilities 7 255
Medium (5) Fuzzing 0, Packaging 10, Pinned-Dependencies 2, SAST 0, SBOM 0, Security-Policy 10 110
Low (2.5) CII-Best-Practices 0, License 10 25
Total 490 ÷ 97.5 = 5.0

Now the maintainers attach signatures to every release (Signed-Releases goes from 0 to 8, the score the checks doc gives when signatures are found) and set workflow tokens to read-only (Token-Permissions goes from 0 to 10). That adds 7.5 × 8 + 7.5 × 10 = 135 points, and the aggregate becomes 625 ÷ 97.5 = 6.4. Lifting the Low-rated CII-Best-Practices check from 0 to 10 would add only 25 points, about 0.26. Two High-risk fixes move the number more than five times as much as a Low-risk one, which is why the triage advice below starts from the High and Critical checks.

What are the 20 checks, by risk level?

Scorecard's own checks documentation lists 20 checks in the default suite. The table below groups the ones most relevant to a software or firmware supply chain by risk level, as rated in that documentation:

Risk Checks
Critical Dangerous-Workflow (GitHub Actions workflows avoid known-dangerous code patterns), Webhooks (repository webhooks are configured with authenticated tokens)
High Binary-Artifacts, Branch-Protection, Code-Review, Dependency-Update-Tool, Maintained, Signed-Releases, Token-Permissions, Vulnerabilities
Medium Fuzzing, Packaging, Pinned-Dependencies, SAST, SBOM, Security-Policy
Low CII-Best-Practices, Contributors, License

Each check name links to a question Scorecard's documentation phrases as a yes/no heuristic, for example: does the project pin its dependencies to a specific hash rather than a mutable version tag (Pinned-Dependencies), does it require human code review before a pull request merges (Code-Review), and does it have open, unfixed known vulnerabilities (Vulnerabilities)? Scorecard answers each from what is publicly visible in the repository and its CI configuration — it does not require the maintainer to self-report anything. One exception: the README marks Webhooks as experimental and says it needs a maintainer token with webhook read rights, so a consumer scoring someone else's repository will not get a result for it.

How do you get a score?

Scorecard's README describes three practical ways to use it, in increasing order of effort:

  1. Look it up on the public datasetScorecard "scans more than 1.3 million repositories every week" and publishes the results as a public REST API (data licensed CDLA Permissive 2.0) and through the web viewer at scorecard.dev. For most dependencies you consume, a score already exists; no local run is needed. The README notes that scores from the weekly scan "omit the CI-Tests, Contributors, and Dependency-Update-Tool checks" because of API cost, so a public score is computed from fewer checks than a local run. The REST API returns each check's score and reason as JSON, which is easier to file than a screenshot.
  2. Add the GitHub Action to your own repositoryThe README states "the easiest way to use Scorecard on GitHub projects you own is with the Scorecard GitHub Action," which runs the checks on a schedule and can publish a badge. The scorecard-action repository has the installation steps; results appear in the repository's Security tab.
  3. Run it yourself against any repository, including ones you do not own, via the published Docker container (ghcr.io/ossf/scorecard:latest) or a standalone CLI binary, useful for scoring a dependency that the weekly public run has not scanned. Add --show-details to see why a check scored as it did, and --format=json for machine-readable output.

Which checks work outside GitHub?

Scorecard reads GitHub and GitLab repositories. The README's support table marks Dangerous-Workflow, SAST and Token-Permissions as unsupported on GitLab and several other checks as "Validating" there. The checks documentation also says Pinned-Dependencies, Signed-Releases, Packaging and CI-Tests are limited to GitHub-hosted repositories. Embedded components often live elsewhere: on a project's own Git server, behind a mailing-list patch workflow, or only as release tarballs. For those, any score you find belongs to a GitHub or GitLab mirror, and it measures the mirror's settings rather than the upstream project's real process. Record "no Scorecard data" for them and assess them another way.

Why does this matter for firmware and device supply chains?

A device or firmware build typically pulls in dozens to hundreds of open-source components: kernel subsystems, network stacks, crypto libraries, build tooling. Scorecard gives you a fast way to triage that list before deciding where to spend limited review time: a dependency scoring near 0 on Maintained, Vulnerabilities, or Code-Review is a stronger candidate for manual review, pinning to a known-good version, or replacement than one scoring well across the Critical and High checks. It is a triage signal, not a substitute for the kind of binary-level component inventory described in our firmware SBOM guide, and it says nothing about code that never reaches a public source repository, which is common for vendor SDKs and board-support packages. Scorecard's own SBOM check even measures whether the upstream project publishes a bill of materials of its own, which, where present, feeds directly into the kind of component-level risk tracking an SBOM and VEX process already does for your own release.

Scorecard also complements, rather than duplicates, SLSA: Scorecard's Signed-Releases, Branch-Protection and Pinned-Dependencies checks look at process signals visible from outside a repository, while SLSA's Build and Source tracks grade the build pipeline and source-history controls more formally with signed provenance; see SLSA: supply-chain levels for software artifacts.

How does Scorecard relate to the OSPS Baseline?

The OSPS Baseline is a checklist maintainers implement; Scorecard measures what it can see from outside. The Baseline v2026.08.28 crosswalk maps Scorecard checks to Baseline controls:

Scorecard check Baseline controls mapped
Branch-Protection OSPS-AC-03
Dangerous-Workflow OSPS-BR-01
Binary-Artifacts OSPS-QA-05
Code-Review OSPS-QA-07
Signed-Releases OSPS-BR-06
Security-Policy OSPS-VM-01, VM-02, VM-05, VM-06
Vulnerabilities OSPS-VM-05, VM-06
License OSPS-LE-02, LE-03

Scorecard's own Baseline coverage analysis, written against Baseline v2026.02.19, finds probes that cover or partly cover 25 of 59 controls (42%) and fully cover 8 (14%). An experimental conformance mode (--catalog=osps-baseline) is documented in the repository, and it evaluates only the two branch-protection requirements, OSPS-AC-03.01 and AC-03.02. A good Scorecard result is therefore partial evidence toward a Baseline level, not a substitute for the project's own attestation.

What do the checks not tell you?

  • What the aggregate hides. The README itself warns: "Aggregate scores in particular tells you nothing about what individual behaviors a repository is or is not doing."
  • Whether signatures are valid. Signed-Releases looks for signature files among release assets; the checks doc states "The check does not verify the signatures." Verify them in your own build.
  • Whether a 10 on Vulnerabilities means none. The check queries OSV, and the remediation text lets maintainers ignore an ID they consider non-affecting via an osv-scanner.toml file. Match the component version you actually ship yourself.
  • Whether a low Maintained score is a problem. The checks doc says the top score needs at least one commit per week over the previous 90 days, and admits that some software, "especially smaller utility functions, does not normally need to be maintained."
  • Whether the number is stable. Scores shift when Scorecard refines its heuristics; compare results produced by the same Scorecard version.

How should you use Scorecard results, step by step?

  1. Pull the public score firstfor every open-source dependency in your bill of materials before running anything locally — most will already be scanned.
  2. Triage by the Critical and High checks, not the overall number alone: a mediocre aggregate score driven by Low-risk checks (missing a contributor from a second organisation, no CII badge) matters far less than a weak Vulnerabilities or Maintained score.
  3. Treat a 0 or missing score as "unknown," not "unsafe."Scorecard only runs against public Git repositories; vendored code, private forks and binary-only SDKs will not have one, and that absence needs its own review step.
  4. Don't stop at the numberRead the specific check results for anything you are about to adopt widely; the score is a prioritisation tool for where to look next, not a pass/fail gate.
  5. File the evidenceSave the JSON result, the date and the Scorecard version with the component record, next to any Best Practices Badge or Baseline attestation, so the next review compares like with like.

SoftWSP does not compute Scorecard results. Its firmware analysis extracts the components inside a firmware image into a CycloneDX 1.6 SBOM, whether or not they have a public Scorecard entry, and matches them against NVD, CISA KEV, FIRST EPSS and CISA CSAF ICS advisories: see device firmware security. For a process-level standard on your own side of the supply chain, see our OWASP SCVS guide.

This guide summarises the public OpenSSF Scorecard documentation (README, checks, conformance and Baseline coverage documents, read 11 November 2026); it does not constitute a security audit or compliance advice.

Put this guide to work

Frequently asked questions

What is OpenSSF Scorecard?

An automated tool maintained by the Open Source Security Foundation (OpenSSF) that, in its own words, was created "to help open source maintainers improve their security best practices and to help open source consumers judge whether their dependencies are safe." It runs a set of heuristic checks against a public GitHub or GitLab repository and scores each one from 0 to 10.

How is the overall Scorecard score calculated?

Scorecard's own documentation states the aggregate score "is a weight-based average of the individual checks weighted by risk": checks rated Critical risk carry a weight of 10, High risk 7.5, Medium risk 5, and Low risk 2.5. A project does not need a perfect 10 on every check to get a high overall score, but a 0 on a heavily weighted Critical or High check pulls the average down hard.

How many checks does Scorecard run, and what do they check?

The project's checks documentation lists 20 checks in the default set, covering areas such as branch protection, required code review, pinned dependencies, signed releases, least-privilege workflow tokens, fuzzing, static analysis (SAST) use, and known unfixed vulnerabilities. Each check is independently rated Critical, High, Medium, or Low risk.

Is a high Scorecard score a guarantee that a dependency is safe?

No. Scorecard measures process heuristics visible from the outside of a public repository, such as whether branch protection or signed releases are configured; it does not read or audit the code itself for logic flaws or hidden vulnerabilities. A high score indicates engineering hygiene that correlates with lower supply-chain risk, not a security audit result or a certification.

Sources

  1. OpenSSF Scorecard: README (project overview, aggregate scoring, usage)
  2. OpenSSF Scorecard: Checks documentation (full check list, risk levels)
  3. OpenSSF Scorecard web viewer (scorecard.dev)
  4. OpenSSF: Scorecard project page
  5. OpenSSF Scorecard: conformance mode (OSPS Baseline catalog, experimental)
  6. OpenSSF Scorecard: OSPS Baseline coverage analysis
  7. OpenSSF Scorecard GitHub Action (ossf/scorecard-action)
  8. OpenSSF Scorecard REST API
  9. OSPS Baseline v2026.08.28 — external framework crosswalk (OpenSSF Scorecard mapping)
  10. OSV: open source vulnerability database
Was this guide helpful?

In this cluster

OpenSSF Scorecard explained: how the 0-10 score is built