Repository navigation
Conversation
Configure minimumReleaseAge to 14 days so Renovate waits 14 days after a release is published before proposing normal updates (while security advisory fixes via vulnerabilityAlerts remain immediate by default). Most supply-chain compromises are detected and yanked within hours or days of publication, so a cooldown window prevents automated updates from immediately pulling a newly compromised release. References: - From scanner to stealer: inside the Trivy Action supply chain compromise (CrowdStrike) https://www.crowdstrike.com/en-us/blog/from-scanner-to-stealer-inside-the-trivy-action-supply-chain-compromise - We should all be using dependency cooldowns (William Woodruff, 21 Nov 2025) https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns - Dependency cooldowns, redux (William Woodruff, 13 Dec 2025) https://blog.yossarian.net/2025/12/13/cooldowns-redux - Package managers need to cool down (Andrew Nesbitt, 4 Mar 2026) https://nesbitt.io/2026/03/04/package-managers-need-to-cool-down.html Signed-off-by: Aleksandar Licul <licul.aleksandar@gmail.com>
Enable helpers:pinGitHubActionDigests and group github-actions updates into a dedicated weekly rule so GitHub Actions are pinned to full commit SHAs (mitigating mutable tag hijacking such as the trivy-action compromise). Reference: - From scanner to stealer: inside the Trivy Action supply chain compromise (CrowdStrike) https://www.crowdstrike.com/en-us/blog/from-scanner-to-stealer-inside-the-trivy-action-supply-chain-compromise Signed-off-by: Aleksandar Licul <licul.aleksandar@gmail.com>
Pin actions/checkout, actions/setup-go, and github/codeql-action steps to full commit digests with semver comments for Renovate (mitigating mutable tag hijacking such as the trivy-action compromise). Reference: - From scanner to stealer: inside the Trivy Action supply chain compromise (CrowdStrike) https://www.crowdstrike.com/en-us/blog/from-scanner-to-stealer-inside-the-trivy-action-supply-chain-compromise Signed-off-by: Aleksandar Licul <licul.aleksandar@gmail.com>
Run govulncheck on push, pull_request, and daily schedule using the exact Go version from go.mod across linux, windows, and darwin targets. Signed-off-by: Aleksandar Licul <licul.aleksandar@gmail.com>
alicul
commented
Nov 13, 2026
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@v7 | ||
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 |
Contributor
Author
There was a problem hiding this comment.
Just a clarification if unclear: Renoate will ensure that both hash and version in the comment are up-to-date...
alicul
commented
Nov 13, 2026
Contributor
Author
There was a problem hiding this comment.
If I am not mistaken, if this workflow fails, the notification is sent to the person who last commited (on master/release branch).
@marco-m-pix4d can you please remind me if that is correct?
Contributor
Author
There was a problem hiding this comment.
Note to myself to investigate:
- check if we can benefit of govulncheck SARIF reporting format and then upload the reportt into GitHub to surface as a Code Scanning alert
Refrence: Jamie Tanna (Renovate Project Lead Blog)
https://www.jvt.me/posts/2025/09/11/govulncheck-github-actions/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes proposed by this PR
Note
In an ideal world where GitHub supported stacked PRs from forks cleanly, this PR would be split into at least 3 separate PRs, each introducing one security measure:
govulncheckreachability analysisInstead, each concept is kept in its own atomic commit within this PR.
This PR is heavily inspired by the workflows put in place by @marco-m-pix4d in Pix4D workflows (e.g. Pix4D/cogito .github/workflows/govulcheck.yml).
Note also: the PR #9788 shows the real value of running
govulncheckreachability analysis regularly.1. Dependency cooldown (
.github/renovate.json)"minimumReleaseAge": "14 days"so Renovate waits 14 days after a release is published before proposing routine updates. Most supply-chain compromises are detected and yanked within hours or days of publication, so a cooldown window prevents automated PRs from immediately picking up a newly compromised release.internalChecksFilterdefaults to"strict"(delaying PR creation until cooldown passes) andvulnerabilityAlertsdefaults to"minimumReleaseAge": null(so known security fixes are still proposed immediately).2. GitHub Action hash pinning (
.github/renovate.json,.github/workflows/codeql-analysis.yml)"helpers:pinGitHubActionDigests"and added a weeklygithub-actionspackage rule in.github/renovate.jsonso Renovate pins GitHub Actions to full commit SHAs and keeps them updated cleanly.uses:references in.github/workflows/codeql-analysis.yml(actions/checkoutv7.0.1,actions/setup-gov7.0.0, andgithub/codeql-action/{init,autobuild,analyze}v4.39.3) to full commit SHAs with version comments for Renovate, mitigating mutable tag hijacking such as thetrivy-actioncompromise.3.
govulncheckreachability analysis (.github/workflows/govulncheck.yml).github/workflows/govulncheck.yml, running on everypushandpull_requesttargetingmasterandrelease/*, as well as on a daily schedule (22 07 * * *).govulncheckis Go’s official static analysis tool for vulnerability detection. Unlike traditional scanners that just read your dependency list,govulncheckperforms symbol-level reachability analysis to determine if your code actually executes vulnerable functions.govulncheckagainst Concourse directly motivated [security] fix(deps): address reachable govulncheck vulnerabilities and bump Go to 1.27.4 #9788, catching reachable Go standard library vulnerabilities (GO-2026-6865,GO-2026-6597,GO-2026-6859), including platform-specific paths such asworker/baggageclaim/volume/stream_in_out_nonlinux.go.concourse/ciTrivy scan job in concourse/ci? The Trivyscan-rc-imagejob only runs onrelease/*branches (pipelines/release.yml) after building the Linux release-candidate image, is not wired as a blockingpassed:gate oncreate-draft-release/shipit, and only inspects the Linux container image (missingwindowsanddarwintargets). Runninggovulncheckas a GitHub Action alongsidecodeql-analysis.ymlshifts vulnerability detection left so issues are caught on every PR (including Renovate PRs), onmaster/release/*pushes, and via daily checks before vulnerable dependencies or Go versions reach release candidates.go-version-file: go.modwithcheck-latest: falseandGOTOOLCHAIN: local. Evaluating with a newer Go toolchain hides standard library CVEs that affect the version declared ingo.mod. Impact: when a Gostdlibvulnerability is reported in reachable code, resolve it by bumping the Go patch version ingo.mod.GOOS=linux govulncheck ./...plusGOOS=windowsandGOOS=darwinacross./cmd/concourse,./fly/...,./worker/baggageclaim/..., and./go-archive/...(the cross-platform packages built and tested in Concourse CI, avoiding Linux-only packages such asatc/postgresrunnerandworker/runtimethat fail to load for non-LinuxGOOS).Notes to reviewer
govulncheckpasses onmasterwhen this workflow lands.