Skip to content

fix(security): pin GitHub Actions to SHA digests#1911

Merged
toddbaert merged 1 commit intomainfrom
fix/pin-trivy-action-sha
Mar 21, 2026
Merged

fix(security): pin GitHub Actions to SHA digests#1911
toddbaert merged 1 commit intomainfrom
fix/pin-trivy-action-sha

Conversation

@toddbaert
Copy link
Member

@toddbaert toddbaert commented Mar 21, 2026

Summary

  • Pin aquasecurity/trivy-action from mutable tag @0.28.0 to SHA-pinned v0.35.0 (57a97c7) in response to CVE-2026-26189 / the Trivy supply chain incident on March 19, 2026
  • Pin docker/setup-qemu-action and docker/setup-buildx-action from @master (!) to SHA-pinned v3 tags in both build.yaml and release-please.yaml
  • Pin google-github-actions/release-please-action from @v3 to SHA-pinned v3
  • Add .github/** to renovate includePaths so the shared open-feature/community-tooling config (which already includes helpers:pinGitHubActionDigests) can manage workflow action updates going forward

Context

On March 19, 2026 an attacker force-pushed 75 existing tags in aquasecurity/trivy-action to malicious commits that exfiltrated CI/CD secrets. Any workflow referencing trivy-action by a mutable tag (rather than a commit SHA) was potentially vulnerable. See Upwind's incident breakdown for details.

Impact assessment

This repo was not impacted. We verified via the GitHub Actions API that no runs of the build workflow occurred during the attack window (March 19, 17:00-23:13 UTC). The last origin run completed at 08:35 UTC, well before the compromise began.

Additionally, sensitive secrets (signing keys, publishing tokens, etc.) are only available in protected environments scoped to specific branches (e.g., main), so even if a PR branch run had been compromised, those secrets would not have been exposed.

However, the use of mutable tags left the repo vulnerable to this class of attack, and docker/setup-qemu-action@master and docker/setup-buildx-action@master were pinned to the master branch, which carries the same risk.

Changes

File Change
.github/workflows/build.yaml Pin trivy-action to v0.35.0 SHA, pin setup-qemu-action and setup-buildx-action to v3 SHAs
.github/workflows/release-please.yaml Pin release-please-action to v3 SHA, pin setup-qemu-action and setup-buildx-action to v3 SHAs
renovate.json Add .github/** to includePaths so Renovate manages action version updates

@toddbaert toddbaert requested review from a team as code owners March 21, 2026 13:59
@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Mar 21, 2026
@netlify
Copy link

netlify bot commented Mar 21, 2026

Deploy Preview for polite-licorice-3db33c canceled.

Name Link
🔨 Latest commit ede0469
🔍 Latest deploy log https://app.netlify.com/projects/polite-licorice-3db33c/deploys/69bea4d8e883b3000821e7e3

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the repository's supply chain security by pinning GitHub Actions to immutable SHA digests, thereby protecting against potential compromises of mutable tags. It also improves automation by configuring Renovate to manage updates for GitHub Actions workflows, ensuring continuous security and maintenance without manual intervention.

Highlights

  • Security Fix: Pinned aquasecurity/trivy-action to a specific SHA digest (v0.35.0) to mitigate supply chain risks following a recent incident.
  • Dependency Pinning: Updated docker/setup-qemu-action and docker/setup-buildx-action from mutable @master tags to SHA-pinned v4 tags for enhanced security.
  • Renovate Configuration: Extended Renovate's includePaths to cover .github/** directories, allowing it to manage GitHub Actions workflow updates automatically.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/build.yaml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request aims to improve security by pinning GitHub Actions to SHA digests and enabling Renovate to manage their versions. The change in renovate.json correctly adds the .github/** path to includePaths, allowing Renovate to scan and update workflow files. This change is a good practice for maintaining CI/CD dependencies and enhances the security posture of the repository. The implementation is correct, and I have no further feedback.

Pin trivy-action to v0.35.0 SHA (CVE-2026-26189), and pin
docker/setup-qemu-action and docker/setup-buildx-action to SHA
digests (previously referenced mutable `master` branch).

Also add .github/** to renovate includePaths so the shared
community-tooling config (which includes helpers:pinGitHubActionDigests)
can manage workflow action updates going forward.

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
@toddbaert toddbaert force-pushed the fix/pin-trivy-action-sha branch from f62a296 to ede0469 Compare March 21, 2026 14:01
@sonarqubecloud
Copy link

@toddbaert toddbaert merged commit 8b06d3e into main Mar 21, 2026
18 checks passed
toddbaert added a commit that referenced this pull request Mar 21, 2026
Pin release-please-action, setup-qemu-action, and setup-buildx-action
to commit SHA digests. These were missed in #1911.

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
toddbaert added a commit that referenced this pull request Mar 21, 2026
…1912)

## Summary

Follow-up to #1911. Pins the remaining unpinned actions in
`release-please.yaml` to commit SHA digests.

## Changes

| Action | Before | After |
|---|---|---|
| `google-github-actions/release-please-action` | `@v3` | `@db8f2c6...`
(v3) |
| `docker/setup-qemu-action` | `@master` | `@c7c5346...` (v3) |
| `docker/setup-buildx-action` | `@master` | `@8d2750c...` (v3) |

These were the last unpinned actions in the repo. With the
`renovate.json` change from #1911 (adding `.github/**` to
`includePaths`), Renovate will now keep all workflow action SHAs up to
date automatically.

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant