Security researchers have detailed a large-scale supply chain attack on GitHub, in which attackers accessed about 1,900 developer accounts and used them to modify workflows directly in more than 30,000 repositories.
The campaign, tracked as GhostAction by GitGuardian, intensified on October 8 and 9, when attackers reached repositories belonging to roughly 3,000 users and organizations and attempted to extract 3,174 secrets. Unlike the earlier tj-actions/changed-files compromise, which poisoned a shared Action used by thousands of repositories, GhostAction worked by using stolen developer credentials to alter workflows directly, with no vulnerability in GitHub Actions itself.
It remains unclear how the attackers obtained the credentials. StepSecurity's October 9 analysis points to personal access tokens pulled from credential dumps as the likely source, though the initial compromise has not been confirmed.
With access to repositories, the attackers added disguised workflows under names such as security-audit.yml or github_actions_security.yml. Because the files referenced secrets already used by legitimate builds, the malicious jobs could collect those credentials when they ran and send them to an attacker-controlled server at 193.32.204.199.
The October variant went further than secrets explicitly referenced by workflows, using actions/checkout@v4 with fetch-depth: 0 to scan the working tree and full Git history for AWS keys, GitHub and GitLab personal access tokens, Google and Firebase keys, and API tokens from Anthropic, OpenAI and OpenRouter. Later versions captured surrounding lines to pair AWS key IDs with their corresponding secret access keys. This meant keys removed from the current codebase but still present in Git history were also harvested.
"This payload was deployed in multiple phases," GitGuardian wrote, describing an initial push to about 160 previously targeted victims and, 20 minutes later, a far larger deployment into 28,000 new repositories across October 8 and 9.
The total number of stolen credentials remains unknown. GitGuardian counted 3,174 secrets targeted for extraction and confirmed some exfiltration during the October campaign, but did not determine how many distinct credentials reached the attackers.
During the August and September campaign, GitGuardian identified malicious workflows in 772 public repositories across 373 users and organizations. Of the 3,669 workflow runs recorded across 605 repositories, only 499 executed, with 336 completing successfully and exfiltrating 26 secrets from 13 repositories.
GitHub's approval controls stopped most of the bad workflows, but attackers recycled 92 older ones left behind from earlier attacks, including infrastructure active since September 2025. GitGuardian also found that by October 5, only 16% of the affected repositories, 124 out of 772, had been cleaned up.