Skip to content

Pin GitHub Actions to full-length commit SHAs - #4154

Merged
Steven Malis (smalis-msft) merged 2 commits into
microsoft:mainfrom
OssSecurityBot:oss-security-bot/pin-actions
Aug 4, 2026
Merged

Steven Malis (smalis-msft) merged 2 commits into
microsoft:mainfrom
OssSecurityBot:oss-security-bot/pin-actions

Conversation

@OssSecurityBot

Copy link
Copy Markdown
Contributor

Summary

This PR pins GitHub Actions to full-length commit SHAs for improved security and reproducibility and adds a 7 day cooldown to Dependabot configuration for GitHub Actions.

Why?

Pinning actions to commit SHAs prevents supply-chain attacks where a tag could be moved to point to malicious code. This is a recommended security best practice per the GitHub Actions security hardening guide.

This change mitigates the risk of tag retargeting to malicious code as seen in incidents like the tj-actions/changed-files action compromise or codfish/semantic-release-action compromise and improves the integrity and reproducibility of the CI/CD pipeline.

What changed?

Action pinning: Third-party action references in .github/workflows/ that used mutable tag-based references (e.g., actions/checkout@v4) have been updated to full-length commit SHAs with a version comment (e.g., actions/checkout@<sha> # v4) using the pinact tool. References that were already pinned to a SHA, or that used immutable release tags, were left unchanged.

Dependabot configuration: .github/dependabot.yml has been updated to ensure a github-actions package-ecosystem section is present with a cooldown configuration (default-days: 7). This groups Dependabot PRs for GitHub Actions and enforces a minimum 7-day cooldown between updates. If the file did not exist, it was created. If a github-actions section already existed, only the cooldown block was added or its default-days value was increased to 7 if it was lower. The 7-day cooldown provides a window for the community to detect and report compromised releases before they are automatically proposed as updates, reducing exposure to supply-chain attacks via newly published malicious versions.

Is this safe to merge?

Yes. The pinned SHAs correspond to the same commits that the existing tags pointed to. No behavioral changes are introduced. You can verify the pinned SHA value using the GitHub REST API (e.g., the commit hash for actions/checkout@v7 can be found in the sha property in the JSON response for GET https://github.com/@api/repos/actions/checkout/commits/v7).


For more information, visit https://aka.ms/action-pinning

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens the repository’s CI/CD configuration by replacing mutable GitHub Action version tags with full commit SHA pins, improving supply-chain security and reproducibility. It also introduces a Dependabot configuration for GitHub Actions updates with grouping and a 7-day cooldown window.

Changes:

  • Pinned third-party (and GitHub-provided) Actions in multiple workflows from @v* tags to full 40-character commit SHAs with version comments.
  • Added .github/dependabot.yml to enable grouped GitHub Actions updates on a weekly schedule with a 7-day cooldown.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated no comments.

Show a summary per file
File Description
.github/workflows/upload-petri-results.yml Pins jlumbroso/free-disk-space and azure/login to full commit SHAs.
.github/workflows/unsafe-label.yml Pins actions/github-script to a full commit SHA.
.github/workflows/refresh-mirror.yml Pins Azure login, Key Vault secrets, and checkout actions to full commit SHAs.
.github/workflows/openvmm-pr-release.yaml Replaces many actions/* tag references with full commit SHA pins across release workflow steps.
.github/workflows/openvmm-docs-pr.yaml Pins checkout/cache/artifact actions to full commit SHAs in docs PR workflow.
.github/workflows/openvmm-docs-ci.yaml Pins checkout/cache/artifact/pages/node actions to full commit SHAs in docs CI workflow.
.github/workflows/openvmm-ci.yaml Pins checkout/cache/artifact actions to full commit SHAs in main CI workflow.
.github/workflows/labeler.yml Pins actions/labeler to a full commit SHA.
.github/workflows/dep-review.yml Pins checkout + actions/github-script to full commit SHAs for dependency review workflow.
.github/workflows/copilot-setup-steps.yml Pins checkout action to a full commit SHA for agent setup workflow.
.github/workflows/code-review-metrics.yml Pins checkout and upload-artifact actions to full commit SHAs.
.github/dependabot.yml Adds Dependabot config for GitHub Actions with grouping, weekly schedule, and 7-day cooldown.

@smalis-msft

Copy link
Copy Markdown
Contributor

This probably needs to update the flowey code, not just the yaml. I'll do that in a sec.

The generated workflow YAML is produced by flowey, so pinning only the
YAML would be undone by the next `cargo xflowey regen`. Pin the action
references in the flowey sources instead, and regen.

The YAML emitter can't produce trailing `# vX.Y.Z` comments (a plain
scalar containing ` #` gets quoted, which would break the `uses`
value), so the version is recorded as a comment in the flowey source.
Copilot AI review requested due to automatic review settings August 4, 2026 16:57
@smalis-msft
Steven Malis (smalis-msft) enabled auto-merge (squash) August 4, 2026 16:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated no new comments.

@smalis-msft Steven Malis (smalis-msft) added backport_1.8.2607 Change should be backported to the release/1.8.2607 branch and removed backport_1.8.2607 Change should be backported to the release/1.8.2607 branch labels Aug 4, 2026
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

@smalis-msft
Steven Malis (smalis-msft) merged commit 72d1454 into microsoft:main Aug 4, 2026
126 of 131 checks passed
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.

4 participants