CVE-2026-45132
Description
A GitHub Actions workflow in CloudPirates Helm Charts exposes sensitive credentials to fork-controlled code due to unsafe checkout and credential handling practices.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A GitHub Actions workflow in CloudPirates Helm Charts exposes sensitive credentials to fork-controlled code due to unsafe checkout and credential handling practices.
Vulnerability
The generate-schema.yaml GitHub Actions workflow in CloudPirates Helm Charts is vulnerable to credential exposure because it uses a privileged CHANGELOG_PAT Personal Access Token during the actions/checkout process for pull requests, including those originating from forks. Additionally, the workflow writes an SSH signing key to disk early in the job execution. These practices make sensitive credentials accessible to any subsequent steps within the workflow that execute code provided by the pull request [1].
Exploitation
An attacker can exploit this by submitting a malicious pull request from a fork to the repository. When the generate-schema.yaml workflow triggers, it checks out the fork-controlled code using the privileged CHANGELOG_PAT. Because the token is stored in the Git credential store and the SSH key is present on the runner's disk, the attacker-controlled code can read these secrets and exfiltrate them from the environment [1].
Impact
Successful exploitation allows an attacker to gain unauthorized access to the repository's secrets. This enables the attacker to perform authenticated actions, such as pushing unauthorized code to the repository, modifying existing workflows, and forging signed commits, leading to a full compromise of the repository's integrity [1].
Mitigation
The vulnerability has been addressed in commit fcf9302 by introducing an authorization step and environment protection for pull requests originating from forks [1][2]. Users should ensure their workflows are updated to this commit and follow best practices, such as using the default GITHUB_TOKEN for checkout in pull request contexts and restricting the use of sensitive PATs to specific, verified steps [1].
AI Insight generated on Jun 1, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
1- Range: <fcf9302
Patches
2fcf930211604Merge commit from fork
2 files changed · +22 −2
.github/workflows/generate-schema.yaml+12 −0 modified@@ -2,6 +2,9 @@ name: "Generate values.schema.json" on: pull_request_target: + types: + - opened + - reopened paths: - 'charts/**/values.yaml' workflow_dispatch: @@ -21,7 +24,16 @@ concurrency: cancel-in-progress: true jobs: + authorize: + runs-on: ubuntu-latest + environment: ${{ github.event_name == 'pull_request_target' && + github.event.pull_request.head.repo.full_name != github.repository && + 'external' || '' }} + steps: + - run: true + generate-schema: + needs: authorize runs-on: ubuntu-latest timeout-minutes: 15 # Skip if the commit was made by github-actions bot to prevent infinite loops
.github/workflows/pull-request.yaml+10 −2 modified@@ -4,7 +4,6 @@ on: types: - opened - reopened - - synchronize branches: - main @@ -13,7 +12,16 @@ concurrency: cancel-in-progress: true jobs: + authorize: + runs-on: ubuntu-latest + environment: ${{ github.event_name == 'pull_request_target' && + github.event.pull_request.head.repo.full_name != github.repository && + 'external' || '' }} + steps: + - run: true + lint-test: + needs: authorize runs-on: ubuntu-latest timeout-minutes: 30 permissions: @@ -90,11 +98,11 @@ jobs: ct lint --target-branch ${{ github.event.repository.default_branch }} --validate-maintainers=false --additional-commands 'helm unittest {{ .Path }}' integration-test: + needs: [authorize, lint-test] runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: read - needs: [lint-test] if: needs.lint-test.outputs.changed == 'true' steps: - name: Checkout pull request branch
fcf9302Merge commit from fork
2 files changed · +22 −2
.github/workflows/generate-schema.yaml+12 −0 modified@@ -2,6 +2,9 @@ name: "Generate values.schema.json" on: pull_request_target: + types: + - opened + - reopened paths: - 'charts/**/values.yaml' workflow_dispatch: @@ -21,7 +24,16 @@ concurrency: cancel-in-progress: true jobs: + authorize: + runs-on: ubuntu-latest + environment: ${{ github.event_name == 'pull_request_target' && + github.event.pull_request.head.repo.full_name != github.repository && + 'external' || '' }} + steps: + - run: true + generate-schema: + needs: authorize runs-on: ubuntu-latest timeout-minutes: 15 # Skip if the commit was made by github-actions bot to prevent infinite loops
.github/workflows/pull-request.yaml+10 −2 modified@@ -4,7 +4,6 @@ on: types: - opened - reopened - - synchronize branches: - main @@ -13,7 +12,16 @@ concurrency: cancel-in-progress: true jobs: + authorize: + runs-on: ubuntu-latest + environment: ${{ github.event_name == 'pull_request_target' && + github.event.pull_request.head.repo.full_name != github.repository && + 'external' || '' }} + steps: + - run: true + lint-test: + needs: authorize runs-on: ubuntu-latest timeout-minutes: 30 permissions: @@ -90,11 +98,11 @@ jobs: ct lint --target-branch ${{ github.event.repository.default_branch }} --validate-maintainers=false --additional-commands 'helm unittest {{ .Path }}' integration-test: + needs: [authorize, lint-test] runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: read - needs: [lint-test] if: needs.lint-test.outputs.changed == 'true' steps: - name: Checkout pull request branch
Vulnerability mechanics
Root cause
"The GitHub Actions workflows were configured to execute code from untrusted forks with elevated privileges, leading to the exposure of sensitive credentials."
Attack vector
An attacker can submit a pull request from a fork to trigger the vulnerable workflows [ref_id=1]. Because the workflows lacked an authorization gate, they executed code controlled by the fork author in an environment that may have had access to sensitive secrets. This allowed the fork-controlled code to potentially access or exfiltrate credentials such as Personal Access Tokens and SSH signing keys [ref_id=1].
Affected code
The vulnerability exists within the GitHub Actions workflow files '.github/workflows/generate-schema.yaml' and '.github/workflows/pull-request.yaml' [ref_id=1].
What the fix does
The patch introduces an 'authorize' job to both '.github/workflows/generate-schema.yaml' and '.github/workflows/pull-request.yaml' [patch_id=4328678]. This job utilizes a GitHub environment named 'external' to enforce explicit re-approval for pull requests originating from forks [patch_id=4328678]. By making subsequent jobs dependent on this 'authorize' job, the workflow ensures that untrusted code cannot execute without manual verification [patch_id=4328678].
Preconditions
- configThe repository must use GitHub Actions workflows that trigger on pull_request_target events.
- inputAn attacker must submit a pull request from a fork.
Generated on Jun 1, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
2News mentions
0No linked articles in our index yet.