Skip to content

Harden CI supply chain by pinning GitHub Actions to immutable SHAs - #39

Open
dmvthrowers with Copilot wants to merge 1 commit into
mainfrom
copilot/cleanup-security-issues
Open

Harden CI supply chain by pinning GitHub Actions to immutable SHAs#39
dmvthrowers with Copilot wants to merge 1 commit into
mainfrom
copilot/cleanup-security-issues

Conversation

Copilot AI commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

This PR addresses workflow supply-chain exposure from mutable action tags (@v*) in repository CI/CD. It replaces tag-based action references with commit-pinned SHAs across core automation workflows.

  • Scope

    • Convert uses: owner/action@vX to uses: owner/action@<commit-sha> for repository workflows handling code scanning, linting, dependency review, pages deploy, labeling, stale management, greetings, and meetup automation.
  • Workflow updates

    • Pinned action refs in:
      • codeql1.yml
      • dependency-review.yml
      • greetings.yml
      • label.yml
      • powershell.yml
      • stale.yml
      • static.yml
      • super-linter.yml
      • update-meetup.yml
  • Implementation pattern

    • Preserve readability by keeping semver intent as inline comments while enforcing immutable execution targets.
# before
- uses: actions/checkout@v4

# after
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

Copilot AI changed the title Harden GitHub workflows by pinning Actions to SHAs Harden CI supply chain by pinning GitHub Actions to immutable SHAs Jun 7, 2026
Copilot AI requested a review from dmvthrowers June 7, 2026 00:52
@dmvthrowers
dmvthrowers marked this pull request as ready for review June 18, 2026 06:15
Copilot AI review requested due to automatic review settings June 18, 2026 06:15
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/checkout 34e114876b0b11c390a56381ad16ebd13914f8d5 🟢 5.9
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Fuzzing⚠️ 0project is not fuzzed
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
License🟢 10license file detected
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 8SAST tool detected but not run on all commits
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
actions/github/codeql-action/upload-sarif 8aad20d150bbac5944a9f9d289da16a4b0d87c1e UnknownUnknown
actions/actions/checkout 34e114876b0b11c390a56381ad16ebd13914f8d5 🟢 5.9
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Fuzzing⚠️ 0project is not fuzzed
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
License🟢 10license file detected
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 8SAST tool detected but not run on all commits
Branch-Protection🟢 5branch protection is not maximal on development and all release branches
actions/actions/setup-python a26af69be951a213d495a4c3e4e4022e16d87065 🟢 5
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained⚠️ 01 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 9SAST tool is not run on all commits -- score normalized to 9

Scanned Files

  • .github/workflows/powershell.yml
  • .github/workflows/update-meetup.yml

@github-actions github-actions Bot added the ci CI / workflow changes label Jun 18, 2026
@dmvthrowers
dmvthrowers requested review from Copilot and removed request for Copilot June 18, 2026 06:16

Copilot AI left a comment

Copy link
Copy Markdown

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 supply chain by replacing mutable GitHub Action version tags (e.g., @v4) with immutable commit-SHA pins across multiple GitHub Actions workflows.

Changes:

  • Pinned commonly used GitHub Actions (checkout, setup-python, CodeQL, Pages deploy, etc.) to full commit SHAs while preserving the intended version as inline comments.
  • Pinned third-party actions (e.g., super-linter) to immutable SHAs to reduce exposure to tag retargeting.
  • Standardized the “pinned SHA + semver comment” pattern across the affected workflows.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
.github/workflows/codeql1.yml Pins CodeQL workflow actions (checkout/init/analyze) to immutable SHAs.
.github/workflows/dependency-review.yml Pins checkout and dependency-review-action to immutable SHAs.
.github/workflows/greetings.yml Pins first-interaction action to an immutable SHA.
.github/workflows/label.yml Pins github-script and labeler actions to immutable SHAs.
.github/workflows/powershell.yml Pins checkout and CodeQL SARIF upload action to immutable SHAs.
.github/workflows/stale.yml Pins stale action to an immutable SHA.
.github/workflows/static.yml Pins Pages deploy-related actions to immutable SHAs.
.github/workflows/super-linter.yml Pins checkout and super-linter action to immutable SHAs.
.github/workflows/update-meetup.yml Pins checkout and setup-python to immutable SHAs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 69 to +73
# uses: actions/setup-example@v1

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI / workflow changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants