ci: pin third-party actions to commit SHAs - #8439
Open
alexisLefebvre wants to merge 1 commit into
Open
Conversation
Mutable tags let an upstream maintainer or a compromised account change what runs in CI without any change here. SHAs remove that, and Dependabot still bumps them monthly via the trailing version comment. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
What
Every third-party GitHub Action used by the workflows is now referenced by its full commit SHA instead of a mutable tag, with the resolved version kept as a trailing comment so it stays readable and Dependabot-updatable.
Version levels are unchanged — each SHA is the current head of the major tag already in use. The one behavioural change is
elastic/elastic-github-actions/elasticsearch, previously trackingmaster: it has no tags upstream, so it is pinned to the currentmasterhead.Why
A tag is a movable pointer. Anyone who can push to an action's repository — its maintainer, or an attacker holding a compromised account or token — can repoint
v6at arbitrary code, which then runs inside these workflows with access to their secrets and, forpull_request_targetjobs, write-scoped tokens. This is the supply-chain vector behind thetj-actions/changed-filescompromise. A commit SHA is immutable, so what CI executes is what was reviewed here.Dependabot's
github-actionsecosystem is already enabled and understands the<sha> # <version>form, so updates keep arriving as regular PRs.🤖 Generated with Claude Code