GHOSTACTION SUPPLY-CHAIN CAMPAIGN — OCT 2026

The GhostAction Workflow Audit: paste your YAML,get the verdict — Cybersecurity News

In the GhostAction campaign, attackers compromised about 1,900 GitHub accounts and pushed malicious workflows into more than 30,000 repositories — attempting to extract 3,174 secrets from CI in a single October 8–9, 2026 surge (per GitGuardian's research, reported October 15, 2026). The weapon is a workflow file with a reassuring name — security-audit.yml, github_actions_security.yml or security-check.yml — which quietly curls your CI secrets to an attacker server. Paste any workflow YAML below and this page checks it against the campaign's known indicators, right in your browser.

⚠ HEURISTIC SELF-CHECK — NOT A FORENSIC AUDIT. This analyzer matches client-side text patterns only. It can flag suspicious shapes, but a clean verdict does NOT mean your repo is safe: GhostAction commits were made in victims' own identities, and the 2026 variant mined the entire git history. If anything here flags, treat it as a lead, then verify with the manual checks below.
The indicators this analyzer checks (per GitGuardian, StepSecurity, and published campaign breakdowns):
• Filename matching the campaign's known variants: security-audit.yml, github_actions_security.yml, security-check.yml
• curl/wget piped into a shell — classic remote-script execution
• Steps that read secrets.* and ship them outbound via curl (the exfil pattern)
• fetch-depth: 0 full-history checkouts — the 2026 variant swept git history for credentials
• Known exfil indicators: 193.32.204.199 and the ?c=monami URI path
• Over-broad permissions (permissions: write-all) and suspicious upload-artifact of .env files

Step 1 — Paste the workflow

100% client-side: nothing you paste is uploaded, stored, or sent anywhere. It never leaves this browser tab.

What this check can't see: the repo's audit log, who actually pushed the file, forks, organization secrets, or secrets already sitting in git history. Those are manual checks — below.

Step 2 — Manual checks the scanner can't do

Run these locally or in the GitHub UI. They catch what text patterns miss.

git log --diff-filter=A --name-only --format=%ci -- \
  .github/workflows/security-audit.yml \
  .github/workflows/github_actions_security.yml \
  .github/workflows/security-check.yml

Any file added on/after 2026-10-07 by a human you can't confirm: guilty until proven innocent.

grep -rnE "fetch-depth:\s*0" .github/workflows/
grep -rnE "(curl|wget).*193\.32\.204" .github/workflows/

⚠ What to do if you find something

  1. Rotate secrets FIRST, before you delete anything. Anything the workflow could read is already exfiltrated — deleting the file first just alerts the attacker while your secrets are still live.
  2. Remove the malicious workflow from every branch, every tag, and every fork you control — injected workflows persist in forks long after alerts are raised.
  3. Revoke (don't just rotate) the GitHub credential that pushed it, enforce hardware-key MFA org-wide, and review the audit log for logins you don't recognize.
  4. Review Actions logs for the "Audit" step — if it ran, the exfiltration already happened and your response shifts from prevention to containment.
  5. Rotate cloud keys specifically: if the workflow had time to run, paired access key IDs and secret keys are the highest-value item on the list.

What does a cybersecurity news-grade workflow audit check?

Every step your CI runs with your secrets. The audit parses your workflow YAML for the GhostAction playbook: obfuscated run blocks, exfiltration to external endpoints, credential harvesting steps, and pinned-action substitutions. Paste your YAML, get a verdict per job. A clean workflow is boring — that is the point.

Frequently asked questions

What are the GhostAction malicious workflow file names?

Three workflow file names have been confirmed across both GhostAction waves: github_actions_security.yml (the primary variant, display name "Github Actions Security"), security-check.yml (a secondary variant seen in seven repositories), and security-audit.yml (the 2026 variant that also mines the full git history). Audit all three names, and inspect any recently added workflow file not authored by a known team member.

How do I know if my GitHub repository was compromised by GhostAction?

Check .github/workflows/ for security-audit.yml, github_actions_security.yml or security-check.yml that you did not add. Search your git log for commits with messages like "Add Github Actions Security workflow" or "Add security check workflow". Review Actions run logs for workflow runs you didn't trigger, unexpected outbound HTTP requests, and commits made in your identity that you don't recognize — every GhostAction commit used the victim's own identity.

How do I detect GhostAction activity in GitHub Actions logs?

In Actions run logs, look for curl or wget commands that were not part of your original workflow definition — specifically outbound HTTP POST requests to 193.32.204.199 or URIs containing /?c=monami. At the repo level, use the GitHub audit log to find workflow-file creation (git.push) events where the actor isn't a recognized team member, and monitor for new .github/workflows/ files committed without pull-request review.

What should I do if I find a malicious GhostAction workflow?

Treat it as an active compromise, not a close call. Revoke and rotate ALL repository and organization secrets first — anything the workflow could read is already exfiltrated, so deleting the file alone changes nothing. Then remove the workflow from every branch, revoke the GitHub credential that pushed it, review Actions logs for the "Audit" step to see if exfiltration ran, and check forks — injected workflows persist in forks long after the original is cleaned.

How do I harden GitHub Actions against GhostAction-style attacks?

Require pull-request review for any change to .github/workflows/ (this alone makes silent injection impossible without a paper trail), enable "require approval for all outside collaborators" for workflow runs, pin third-party actions to commit SHAs instead of floating tags, scope secrets so each workflow reads only what it needs, and rotate personal access tokens — stolen PATs from infostealer logs were the attackers' way in. One documented case shows the run-approval gate stopped the exfiltration mid-execution.

FROM INGENIOUS AI
Shipping AI-built code and CI pipelines? Vibe-Code Audit reviews them before attackers do.
GhostAction hides in plain sight as a "security audit" workflow — our audit reviews AI-generated code and automation for supply-chain traps, over-permissioned secrets and poisoned dependencies. In early access now, full launch November 1:
Get Vibe-Code Audit early access →
Get early access on WhatsApp →

Related checks