Get a free audit

Field Notes / Supply Chain

GhostAction is back in GitHub. Last month 86% of its runs never executed.

Since 7 October 2026 more than 500 GitHub accounts have committed a fake "security audit" workflow that ships your CI secrets, and now your committed cloud and AI keys, to one IP address over plain HTTP. In the previous wave, 3,170 of 3,669 malicious runs never executed, most of them held by GitHub for approval. Here is what the workflow takes, why rotating your secrets is two separate jobs, and the six checks an engineering lead can finish this week.

Author
Red Team Partners
Read
9 MIN READ
Filed
16 Oct 2026
An engineer at a server rack, the place a CI pipeline’s secrets end up when nobody checks which workflow is asking for them.

01 What security-audit.yml actually does

n 8 October at 21:10 UTC an automated tool began committing the same file into every repository the GitHub account henrywoo could write to. Sixteen minutes later it had touched 318 of them, 39 originals and 279 forks, plus uber/athenadriver, an Uber-owned project where the account holder still had write access as the original author. Earlier that day a second account, kitao, received the same treatment across 27 repositories in four minutes, including pyxel, a game engine with 18,420 stars that publishes to PyPI and crates.io Socket 2026 .

The file calls itself a security audit. Socket’s researchers put it plainly: the workflow has no security function. It runs on every push to any branch, or on demand. It collects two classes of secret and sends both in one POST to 193.32.204.199.

What it takesHow it finds themWhat the attacker can do next
GitHub Actions secrets Reads the secret names your existing workflows reference, then asks the runner for their values Publish a release of a package your users already trust, with PyPI, crates.io or npm tokens
Committed cloud and AI keys Checks out every branch and tag, then runs 13 patterns across the working tree and the full history Use AWS key pairs, Anthropic, OpenAI and OpenRouter keys, Google, Slack and SendGrid credentials directly
A map of your repositories Every run reports which repository it ran in Know which execution contexts it can reach next, even where no secret leaked

Two details make this wave worse than the last. The AWS patterns capture two lines either side of each key ID, so the attacker gets complete, usable key pairs and not orphaned identifiers. And the history sweep turns every old commit into a liability. A developer who pasted an OpenAI key into a config file in 2023, then deleted it in the next commit, left it in scope for this workflow today.

Socket has not seen how the attackers got the maintainer logins. GitGuardian notes that the commits use the victim’s own identity, which points to stolen credentials. As of 9 October Socket had observed no malicious package versions on PyPI or crates.io from this wave, and the workflow file was still sitting on the default branch of the repositories it checked.

02 Why 3,170 runs never executed

GitGuardian’s count of the late-summer wave is the most useful dataset in this story, because it shows what defence worked. GhostAction is a continuation of the 2025 campaign that hit 817 repositories across 327 users and took at least 3,325 secrets. GitGuardian’s researchers say calling the new wave a revival would be inaccurate. It never stopped.

31 Aug to 30 Sep 2026Count
Public repositories with the malicious workflow772, across 373 users and organisations
Secret names the injected workflows asked for2,577
Malicious runs triggered3,669 across 605 repositories
Runs that actually executed499, in 32 repositories
Runs that completed and exfiltrated336, taking 26 secrets from 13 repositories
Repositories cleaned in public history by 5 October124, or 16%

GitHub held most of those runs for approval GitGuardian 2026 . A repository can require a maintainer to approve workflow runs triggered by outside collaborators and first-time contributors before they touch a runner GitHub Docs . Where that gate was on, the theft waited in a queue for a human, and nobody approved it.

This matches what we see in pipeline reviews. The finding that does the damage is rarely an exotic flaw in a workflow. It is a personal access token with write access to every repository its owner ever touched, including the project they wrote for a previous employer and the fork they forgot about. uber/athenadriver is that finding in public: an organisation repository reached through one individual’s account, years after they wrote it.

03 Rotation is two jobs, not one

Most incident runbooks say one thing after a CI compromise: rotate the secrets. Socket’s write-up is blunt about why that fails here. Rotating Actions secrets does nothing for a committed-credential exposure, and scanning the working tree does nothing for an Actions-secret exposure Socket 2026 . They are separate leaks with separate fixes, and the October workflow takes both.

  • The secrets the workflow named. Rotate every one. Revoke personal access tokens outright, since a rotated token with the same scope is the same risk. Treat any completed run as a confirmed theft. Then check your package registries for releases you did not build.
  • The keys in your history. Scan with git log -p --all, including unreachable objects, and rotate every credential it finds across all 13 categories. For AWS keys, read CloudTrail for the exposure window and after it: new IAM users, new access keys, regions you never use.
  • The login that pushed the file. Revoke the maintainer’s sessions, tokens, OAuth grants and SSH keys, and re-enrol them on phishing-resistant MFA. GitGuardian makes the point that rotating secrets alone leaves the stolen GitHub credential in the attacker’s hands, ready for the next wave.

Forks deserve their own line. The 279 forks under one account each carry the workflow. A fork owner who enables Actions, or syncs with the upstream, runs the theft in their own context against their own secrets. Socket calls private forks and mirrors the most exposed, because nobody outside sees them.

04 Six checks for this week

None of this needs a new tool. An engineering lead with organisation admin rights can finish the list below in a working week, and each item closes a path GhostAction has already used. GitHub’s own hardening guide covers the mechanics of each setting GitHub Docs .

This week
  • Search every repository and fork for security-audit.yml, github_actions_security.yml and security-check.yml, and for the three known commit messages. Search egress and self-hosted runner logs for 193.32.204.199 and block it
  • Require approval for workflow runs from outside collaborators and first-time contributors, on every repository, including the archived ones nobody watches
  • Protect default branches so a push needs a pull request and a second reviewer, which turns a direct commit from a stolen login into a request someone has to approve
  • Set the default GITHUB_TOKEN permission to read-only at organisation level and grant write per workflow, so one workflow cannot do everything
  • Pin third-party actions to a full commit SHA, inventory every secret per repository with its owner, and turn on secret scanning with push protection
  • Review who holds write access to which repositories, revoke what former authors and old tokens still reach, and require phishing-resistant MFA for everyone who keeps it

GhostAction has run since September 2025. It took 3,325 secrets in its first wave, 26 in its second, where the approval queue held most runs back, and an unknown number since 7 October from accounts that push straight to the default branch. Your exposure depends on which of those three groups your repositories sit in. We can tell you that in 14 days. You get every path from a developer login to a production secret in your GitHub organisation, ranked by what it unlocks, and the setting or revocation that closes each one. Start with your Threat Map, from $5,000. Enterprise-grade. Not enterprise-priced.

References

Sources

  1. Socket Research Team. New GhostAction Wave Hits Hundreds of Repos, Expanding Beyond CI/CD Secrets to Cloud Credentials. Socket, 9 October 2026, with update of the same day. socket.dev
  2. Gaetan Ferry and Guillaume Valadon. GhostAction Returns: 772 Repos Hit in New GitHub Actions Wave. GitGuardian, 7 October 2026. blog.gitguardian.com
  3. GitHub Docs. Approving workflow runs from public forks and outside collaborators. docs.github.com
  4. GitHub Docs. Security hardening for GitHub Actions. docs.github.com