VYPR
Critical severity10.0NVD Advisory· Published Jun 1, 2026· Updated Jun 1, 2026

CVE-2026-45132

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

Patches

2
fcf930211604

Merge commit from fork

https://github.com/CloudPirates-io/helm-chartsFinn RadesApr 28, 2026via nvd-ref
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
    
fcf9302

Merge commit from fork

https://github.com/CloudPirates-io/helm-chartsFinn RadesApr 28, 2026via body-scan
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

2

News mentions

0

No linked articles in our index yet.