Skip to content

chore(ci): set top-level permissions on workflows#308

Closed
arpitjain099 wants to merge 1 commit into
numpy:mainfrom
arpitjain099:chore/workflow-permissions
Closed

chore(ci): set top-level permissions on workflows#308
arpitjain099 wants to merge 1 commit into
numpy:mainfrom
arpitjain099:chore/workflow-permissions

Conversation

@arpitjain099
Copy link
Copy Markdown

I work on software supply chain security and have been hardening GitHub Actions workflows across OSS projects.

Each of these workflows runs without a top-level permissions: block, so its GITHUB_TOKEN inherits the repository (or org) default, which is frequently read/write for all scopes. This PR sets permissions: contents: read at the workflow level for .github/workflows/ci_tests_run_notebooks.yml, .github/workflows/circleci-artifacts-redirector.yml, which is all these jobs need (checkout plus the build/test steps). Scoping the token to read-only shrinks what a compromised step or dependency can do, a concern made concrete by the March 2025 tj-actions/changed-files compromise (CVE-2025-30066), where a leaked write-scoped GITHUB_TOKEN was the blast radius.

No job behavior changes; the steps already only read the repository.

Set an explicit least-privilege permissions block so the workflow GITHUB_TOKEN is scoped to contents: read instead of inheriting the repository default.

Signed-off-by: Arpit Jain <arpitjain099@gmail.com>
Copy link
Copy Markdown
Collaborator

@rossbar rossbar left a comment

Choose a reason for hiding this comment

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

There's already a PR open for this - please consolidate

@arpitjain099
Copy link
Copy Markdown
Author

Apologies for the duplicate - you're right. #307 is the older PR for this and I'm consolidating there, so I'm closing this one. Thanks for catching it.

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.

2 participants