Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.

Checklist · Cloud and DevOps

Software Supply Chain Security Checklist

Opens with credits

A supply chain security checklist you can run against a real repository and its pipeline. It covers what you install (lockfiles, pinning, install scripts, update bots, dependency review), how you build (CI permissions, secrets, actions pinned by SHA, protected branches) and what you ship (SLSA provenance, Sigstore signatures, SBOMs, registry publishing), plus a drill for the day a package you depend on is compromised.

Written by Tauseef Fayyaz9 chapters, 44 checksAbout 24 minReviewed 13 October 2026

What you will learn

9 chapters · about 24 min

  1. 1Dependencies and lockfilesChecks that every build installs exactly the dependency tree you reviewed, and that installing it cannot quietly run code you never approved.6 checks · 4 min
  2. 2Dependency updates and reviewChecks that updates arrive regularly, wait long enough for bad releases to be caught, and are reviewed for known vulnerabilities before they merge.5 checks · 3 min
  3. CI permissions and secretsChecks that a compromised dependency, action or pull request inside your pipeline can reach as little as possible.6 checks · 3 minOpens with credits
  4. Actions, reusable workflows and build imagesChecks that the third-party code your pipeline runs cannot change between two runs of the same commit.5 checks · 3 minOpens with credits
  5. Branches, reviews and accountsChecks that nothing reaches the branch you release from without review, and that the accounts able to change it are hard to take over.5 checks · 2 minOpens with credits
  6. Provenance and signed artifactsChecks that you can prove where an artifact was built and from which source, and that deploys refuse anything that cannot prove it.5 checks · 3 minOpens with credits
  7. Software bills of materialsChecks that each release ships with an accurate list of what is inside it, in a format tools can read, and that you actually use it.4 checks · 2 minOpens with credits
  8. Registry and publishing securityChecks for teams that publish packages or images, and for anyone who installs internal packages next to public ones.4 checks · 2 minOpens with credits
  9. When a dependency is compromisedChecks that you have a plan, written and practised, for the day a package or action you rely on is reported malicious.4 checks · 2 minOpens with credits

About this checklist

Most of the code you ship was written by someone else. Your application pulls in hundreds of packages, your pipeline runs third-party actions with access to your secrets, and your release is only as trustworthy as the machine that built it. Supply chain attacks go after those links instead of your own code: a maintainer account is taken over and a poisoned version is published, an action tag is moved to a malicious commit, a pull request from a fork steals a token from a workflow, or a typo in a package name installs a lookalike.

This checklist turns the guidance from SLSA 1.2, the OpenSSF Scorecard and Concise Guide, Sigstore, CISA's SBOM work and GitHub's Actions security reference into checks you can verify. The chapters follow the path of a change: the dependencies you install, how they get updated and reviewed, the CI system that builds them, the branches that feed it, the provenance and signatures on what comes out, the SBOM that lists what is inside, the registry you publish to, and what to do when a package you use turns out to be malicious.

Each check has a severity. Must means a gap an attacker can use today or one that would leave you blind during an incident. Should closes a common weakness that is cheap to fix. Nice adds depth once the rest is solid. Every check says how to verify it: a file to read, a setting to open or a command to run. If you cannot point at the evidence, the box stays unticked.

Run it on one important repository first, then turn the fixes into templates (a workflow, a Dependabot file, a ruleset) that every other repository inherits. Several checks overlap with what OpenSSF Scorecard measures automatically, so running Scorecard on the same repository is a good way to catch what you missed.

Common questions

What is software supply chain security?

It is protecting everything that goes into the software you ship besides your own code: open source dependencies, build tools, CI pipelines, third-party actions, registries and the accounts that control them. Attacks target these links, for example by publishing a malicious version of a popular package or stealing a CI token, because one compromise reaches many victims.

What is SLSA and which level should I aim for?

SLSA (Supply-chain Levels for Software Artifacts) is a framework of levels for build integrity. Build L1 means the build produces provenance, L2 means a hosted platform signs that provenance, and L3 adds isolated builds and keeps signing secrets away from build steps. Hosted CI with artifact attestations or npm trusted publishing gets most teams to L2 with little effort, which is a sensible first target.

Is pinning GitHub Actions to a SHA really necessary?

For third-party actions, yes. A tag can be moved to a different commit by whoever controls the action, and every workflow using that tag runs the new code on its next run. Pinning to a full commit SHA, with a version comment and an update bot to bump it, keeps runs reproducible without freezing you on old versions.

What is an SBOM used for?

An SBOM is a machine-readable list of the components inside a piece of software, usually in SPDX or CycloneDX format. Its main day-to-day use is answering "are we affected?" quickly when a vulnerability or a malicious package is announced. Customers and regulators increasingly ask for them too.

What changed with npm install scripts in npm 12?

GitHub's changelog for npm 12 says dependency preinstall, install and postinstall scripts no longer run by default, and Git and remote URL dependencies need explicit flags. You approve the packages that genuinely need a build step with npm approve-scripts, and the list is saved in package.json.

What should we do first if a package we use is reported malicious?

Find out where the affected version is installed, stop new installs by blocking or overriding it and clearing caches, and work out where it actually ran. Then rotate every secret that was reachable in those CI jobs and machines, and check your repositories and registries for changes made with stolen credentials.

Sources (8)

Checked against these, last on 13 October 2026.

  1. SLSA Build Track: Basics (v1.2), OpenSSF SLSAslsa.dev/spec/v1.2/build-track-basics
  2. Secure use reference, GitHub Docsdocs.github.com/en/actions/reference/security/secure-use
  3. Scorecard checks, OpenSSFgithub.com/ossf/scorecard/blob/main/docs/checks.md
  4. Concise Guide for Developing More Secure Software, OpenSSFbest.openssf.org/Concise-Guide-for-Developing-More-Secure-Software
  5. Verifying Signatures, Sigstoredocs.sigstore.dev/cosign/verifying/verify/
  6. 2026 Minimum Elements for a Software Bill of Materials (SBOM), CISAwww.cisa.gov/resources-tools/resources/2026-minimum-elements-software-bill-materials-sbom
  7. Trusted publishing for npm packages, npm Docsdocs.npmjs.com/trusted-publishers
  8. Upcoming breaking changes for npm v12, GitHub Changeloggithub.blog/changelog/2026-06-24-upcoming-breaking-changes-for-npm-v12/

Picked from the other libraries by shared topics.

Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.

  • 1:1 Mentorship
  • Fresh Graduate Mentorship
  • Career Guidance

Brand deals, promos and partnerships: tauseeffayyaz@gmail.com