Skip to content

fix(ci): pin cpina/github-action-push-to-another-repository to a commit SHA - #1077

Open
nathanmelamed-cloudinary wants to merge 1 commit into
masterfrom
security/pin-third-party-actions
Open

fix(ci): pin cpina/github-action-push-to-another-repository to a commit SHA#1077
nathanmelamed-cloudinary wants to merge 1 commit into
masterfrom
security/pin-third-party-actions

Conversation

@nathanmelamed-cloudinary

Copy link
Copy Markdown

What

Pins cpina/github-action-push-to-another-repository from @main to commit 55306faa4ed53b815ae49e564af8cfb359d32ae2 (which is what main points at as of 2025-09-25).

One line. No behaviour change.

Why this one specifically

@main is a mutable branch. Whoever controls that upstream repository decides what runs in this repository's CI, and can change it at any time without any signal here.

The step it runs in has secrets.BOT_TOKEN in scope:

- name: Pushes to reports repository
  uses: cpina/github-action-push-to-another-repository@main
  env:
    API_TOKEN_GITHUB: ${{ secrets.BOT_TOKEN }}

e2e_pr.yml runs on pull_request, so this executes on ordinary development activity.

What makes this different from the usual "pin your actions" advice: every other protection on this repository gates a person. Master requires a code-owner approval. External contributor workflow runs require approval (approval_policy: all_external_contributors). Force pushes are blocked. None of that applies here — an upstream compromise needs no pull request, no review, and no run approval. It arrives on the next push to any branch.

rtCamp/action-slack-notify@v2.2.0 in release.yml is the same class but lower risk: a tag rather than a branch, so it moves only if the maintainer retags. Worth pinning too — left out of this PR to keep it to one line and avoid a conflict with #1075, which already touches release.yml.

Verification

  • e2e_pr.yml parses as valid YAML
  • the pinned SHA resolves to the current head of main in the upstream repository, so the action code being run is byte-identical to what runs today

🤖 Generated with Claude Code

…it SHA

The action was referenced as @main - a mutable branch. Anyone who gains
control of that upstream repository can change what main points at, and the
new code runs in this repository's CI on the next Playwright run, in a job
where secrets.BOT_TOKEN is in scope.

Nothing in this repository's protections covers that path: it needs no pull
request, no review, and no workflow approval.

Pinned to 55306faa4ed53b815ae49e564af8cfb359d32ae2 (main as of 2025-09-25).
No behaviour change.
@nathanmelamed-cloudinary
nathanmelamed-cloudinary requested a review from a team as a code owner July 29, 2026 11:30
@netlify

netlify Bot commented Jul 29, 2026

Copy link
Copy Markdown

Deploy Preview for cld-video-player ready!

Name Link
🔨 Latest commit e4d85f9
🔍 Latest deploy log https://app.netlify.com/projects/cld-video-player/deploys/6a69e449d9d31800085f6709
😎 Deploy Preview https://deploy-preview-1077--cld-video-player.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Jul 29, 2026

Copy link
Copy Markdown

Deploy Preview for cld-vp-esm-pages ready!

Name Link
🔨 Latest commit e4d85f9
🔍 Latest deploy log https://app.netlify.com/projects/cld-vp-esm-pages/deploys/6a69e449f81ca70008a5d2ca
😎 Deploy Preview https://deploy-preview-1077--cld-vp-esm-pages.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant