gh-aw versions 0.83.3 through 0.85.3 generated workflows whose safe-output jobs captured raw process stdout and stderr in the safe-outputs-items artifact.
When a workflow configured with GH_AW_CI_TRIGGER_TOKEN executed the create-pull-request or push-to-pull-request-branch safe output, a credential-bearing git config command could be written to stdout. The resulting artifact contained a Base64-encoded Git authorization header. Because the output was saved before GitHub 操作 runner masking occurred, normal secret masking did not protect the artifact.
Anyone able to download an affected artifact could decode the authorization header and recover the CI trigger token.
Exposure requires:
- A non-empty
GH_AW_CI_TRIGGER_TOKEN.
- Execution of an affected create or push safe-output path.
- Access to the resulting workflow artifact.
Impact depends on the token’s permissions, lifetime, and repository scope. Staged, cross-repository, or skipped safe-output paths are not affected.
Remediation
Upgrade to gh-aw v0.85.4 or later, run gh aw upgrade, and commit all regenerated .lock.yml files. Upgrading the locally installed CLI without regenerating the workflows does not replace their SHA-pinned action references.
For any affected workflow run:
- Delete the corresponding
safe-outputs-items artifact.
- Revoke and rotate any long-lived PAT supplied through
GH_AW_CI_TRIGGER_TOKEN or github-token-for-extra-empty-commit.
- Audit repository activity performed using that credential.
- Confirm that any short-lived GitHub App installation token or
GITHUB_TOKEN has expired or been revoked.
Treat a long-lived credential as exposed if an affected artifact was available for download. Deleting the artifact does not invalidate copies that may already have been downloaded.
References
gh-aw versions 0.83.3 through 0.85.3 generated workflows whose safe-output jobs captured raw process stdout and stderr in the safe-outputs-items artifact.
When a workflow configured with
GH_AW_CI_TRIGGER_TOKENexecuted thecreate-pull-requestorpush-to-pull-request-branchsafe output, a credential-bearing git config command could be written to stdout. The resulting artifact contained a Base64-encoded Git authorization header. Because the output was saved before GitHub 操作 runner masking occurred, normal secret masking did not protect the artifact.Anyone able to download an affected artifact could decode the authorization header and recover the CI trigger token.
Exposure requires:
GH_AW_CI_TRIGGER_TOKEN.Impact depends on the token’s permissions, lifetime, and repository scope. Staged, cross-repository, or skipped safe-output paths are not affected.
Remediation
Upgrade to gh-aw v0.85.4 or later, run
gh aw upgrade, and commit all regenerated.lock.ymlfiles. Upgrading the locally installed CLI without regenerating the workflows does not replace their SHA-pinned action references.For any affected workflow run:
safe-outputs-itemsartifact.GH_AW_CI_TRIGGER_TOKENorgithub-token-for-extra-empty-commit.GITHUB_TOKENhas expired or been revoked.Treat a long-lived credential as exposed if an affected artifact was available for download. Deleting the artifact does not invalidate copies that may already have been downloaded.
References