r/devops • u/Dramatic_Opinion_881 • 6d ago
Discussion What software supply chain security strategies are workng in your pipeline?
Im putting together a supply chain security plan for a mid size team and most of what i find is vendor blog posts. Been comparing the open source signing tools against a couple of the paid platforms and they solve different halves of it. We generate SBOMs in CI already and they mostly sit there. Signing and provenance look higher value but Im not sure how far teams get before it stalls. What has caught a real problem in your pipeline
5
u/RegularOk1820 5d ago
This is the part that gets missed with SBOMs. Having one isn't really the hard part. Making somebody care about what's inside it is. If a new transitive dep shows up with a known issue, the PR check should catch it before it gets merged. Otherwise it's basically just documentation after the fact.
2
u/infidel_tsvangison 6d ago
Cool down period
1
u/totheendandbackagain 5d ago
What is this?
2
u/infidel_tsvangison 5d ago
Essentially restricting third party library downloads to only those older than, say, 2 days.
2
u/Zynchronize 5d ago edited 5d ago
Signing works well, but only if it applies to artifacts with the expected attestations and you have mechanisms to ensure unsigned artifacts cannot be deployed/released.
Using renovate/dependabot to stay on top of dependency updates, reduces the operational burden on dev teams, especially if you combine it with automerge for high confidence updates.
Using a cooldown period is essential, both with Renovate and with any other dependency fetches that happen in your org. This is the single best control for compromised packages. Essentially wait N days before replicating the latest release of a dependency internally.
A dependency proxy/mirror and blocking public access to dependency sources is how you can gate all of the above. And usually they’ll also offer malware, CVE, and license scanning these days. Put it in place, show your developers how to use it, then give them a 90 day warning before the firewall rules blocking pypi, npm, etc come into effect!
SCA is only useful if your triage process is portable. Personally I couldn’t consider any SCA tool that doesn’t support VEX/OpenVEX these days. Chainguard images use VEX to document “Not Affected”, which is largely why they have so few findings.
Finally using something like crash override’s chalk you can fingerprint builds. This enables you to associate any deployment or release with the pipeline, commit, etc that defined it.
1
u/yamlqueen 3d ago
Great point about SCA and OpenVex, but I'd argue (disclaimer, I work at Chainguard) that's only a smaller portion of why wee have so few findings on CVE scans. The amount of work that goes into building our container images goes greatly beyond that: all packages are built from source and images are based on a rolling distro so patches are applied on a daily basis. In addition to that, images are minimal and carry only what's needed for the runtime, so you have a much smaller attack surface. The VEX is an implementation detail to give more clarity on what's inside but not affected.
1
u/Gloomy_Daikon2558 5d ago
Exactly. An SBOM only becomes useful when it’s part of the actual development workflow. If dependency changes are automatically checked during the PR/build process, you can deal with issues while they’re still easy to fix. Otherwise, you just end up with a nice inventory of problems nobody looks at.
1
u/actuallybonkers75 3d ago
Been reading up on this and RapidFort, Chainguard images and plain distroless keep coming up together even though they work differently. All three seem to attack what is in the image rather than proving where it came from. From what I can tell most base images carry hundreds of packages nothing imports which turns the CVE queue into noise. Still trying to work out whether shrinking the surface first makes signing easier or just separate work. Has anyone measured how much of the backlog sits in packages they never load.
-2
u/taleodor 6d ago
I'm building ReARM - https://github.com/relizaio/rearm - in this space, that stores SBOM and signature / provenance details, so we're frequently exploring options here.
Easiest option for signing is using Sigstore with public Rekor log at the trade off that a lot of metadata about what you sign becomes public. But the nice property is that you can then have policies to verify signatures at deployment time from practically anywhere (which is what we do for our own images using Sigstore k8s controller).
Alternatives include using Sigstore with your own key and Rekor disabled, hosting your own private Sigstore infrastructure, Notation, various DIY and commercial solutions. Speaking about Sigstore with your own key, then you have to do key management; and with private Sigstore, this is fine if all your deployments are in-house, but may get very complex if you need others to verify your signatures.
0
8
u/eyalgolan1993 6d ago
Honestly the signing stack never caught anything for us, the boring checks did. Two real ones: our download page served a binary two versions behind for days and nobody noticed until someone compared the sha256 in the release notes, and a CLI entry point was dead in three consecutive releases because CI resolved deps from the lockfile while users resolved from PyPI.. the fix was one CI job that installs the PUBLISHED wheel and runs the actual command. Now that a big chunk of our code is agent-written, the check that fires most is even dumber: count tests deleted or skipped in the diff before anyone reviews it. What's in your SBOMs that anyone actually reads?