CVE-2025-32953 Overview
CVE-2025-32953 affects z80pack, a mature emulator for 8080 and Z80 CPU platforms. Versions 1.38 and prior contain a flawed GitHub Actions workflow that leaks the run's GITHUB_TOKEN. The makefile-ubuntu.yml workflow uses actions/upload-artifact@v4 to publish the entire working directory as the z80pack-ubuntu artifact. That archive includes the auto-generated .git/config file, which embeds the active GITHUB_TOKEN. Because the artifact is downloadable while the workflow is still running, an attacker has a brief window to retrieve it, extract the token, and call the GitHub API to push malicious commits or rewrite release tags. The issue is fixed in commit bd95916.
Critical Impact
An attacker can hijack the repository's GITHUB_TOKEN during an active workflow run and push malicious code or rewrite release commits, compromising software supply chain integrity.
Affected Products
- z80pack versions 1.38 and prior
- Repositories using the vulnerable makefile-ubuntu.yml workflow
- Forks consuming the upstream workflow without modification
Discovery Timeline
- 2025-04-18 - CVE-2025-32953 published to NVD
- 2026-04-15 - Last updated in NVD database
Technical Details for CVE-2025-32953
Vulnerability Analysis
The vulnerability is a sensitive information exposure issue [CWE-200] in a GitHub Actions CI workflow. The makefile-ubuntu.yml workflow archives the full checkout directory with actions/upload-artifact@v4. That directory contains the .git/config file written by actions/checkout, which stores the workflow's GITHUB_TOKEN for authenticating subsequent Git operations. Uploading this file as a build artifact transforms an internal credential into a publicly retrievable secret for the duration of the run.
GitHub artifacts created during a workflow are listable and downloadable through the REST API before the workflow completes. An unauthenticated observer monitoring the repository's Actions runs can race the workflow, fetch the artifact, and parse the embedded token from .git/config within seconds.
Root Cause
The root cause is overly broad artifact packaging. The workflow uploads the working directory without excluding the .git metadata directory. actions/checkout persists credentials in .git/config by default, so any process that ships the repository contents downstream also ships the token.
Attack Vector
An attacker watches the target repository's workflow runs through the public Actions API. When a vulnerable run starts, the attacker polls for the z80pack-ubuntu artifact, downloads the zip, extracts .git/config, and reads the http.https://github.com/.extraheader field containing the base64-encoded GITHUB_TOKEN. The token inherits the workflow's permissions, which by default include contents: write, allowing direct pushes, branch updates, and release commit rewrites. Stolen tokens enable supply-chain compromise where downstream consumers pull tampered binaries or source.
The vulnerability is described in prose only as no verified proof-of-concept code is published. See the GitHub Security Advisory GHSA-gpjj-f76m-9x3q for full technical details.
Detection Methods for CVE-2025-32953
Indicators of Compromise
- Unexpected commits, tag changes, or force-pushes from the github-actions[bot] identity outside known release windows.
- Artifact downloads of z80pack-ubuntu from IP addresses or accounts not associated with maintainers.
- Modifications to release commits or rewritten Git history on protected branches.
Detection Strategies
- Audit GitHub Actions artifact contents for .git/config, .npmrc, .netrc, or other credential-bearing files before publication.
- Review repository audit logs for git.push events tied to workflow tokens during or immediately after makefile-ubuntu.yml runs.
- Scan recent artifacts across organization repositories using tooling such as TruffleHog for embedded GITHUB_TOKEN values.
Monitoring Recommendations
- Enable GitHub branch protection with required signed commits to detect unauthorized pushes from compromised tokens.
- Forward GitHub audit logs to a SIEM and alert on anomalous workflow-token API activity.
- Track artifact creation and download events through the GitHub REST API for high-value repositories.
How to Mitigate CVE-2025-32953
Immediate Actions Required
- Update z80pack to a revision that includes commit bd95916 or later.
- Rotate any credentials or signing keys that may have been exposed during prior workflow runs.
- Review repository commit history and release tags for unauthorized changes since version 1.38 was released.
Patch Information
The maintainer fixed the issue across commits 1e06c2f, 836c2e3, 9553598, and bd95916. The fix narrows artifact uploads so that the .git directory is no longer packaged with build outputs.
Workarounds
- Set persist-credentials: false on actions/checkout to prevent the GITHUB_TOKEN from being written to .git/config.
- Restrict upload-artifactpath: patterns to specific build outputs instead of the working directory root.
- Set workflow permissions: to contents: read to limit damage if a token is exposed.
# Hardened workflow snippet
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Build
run: make
- uses: actions/upload-artifact@v4
with:
name: z80pack-ubuntu
path: |
build/
!**/.git/**
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

