Step Security Details Megalodon’s GitHub Actions Secret-Exfiltration Campaign

· Original article ↗

Summary

Step Security reports that Megalodon injected malicious workflows into 5,561 GitHub repositories; payloads harvested CI, cloud and source-code secrets and sent them to a listed C2 IP. Tiledesk repositories and npm packages were among those affected.

Key points

  • The article says the campaign injected workflows into more than 5,500 repositories during a six-hour period on May 18, 2026.
  • It describes direct Poisoned Pipeline Execution (d-PPE): attackers with write access injected workflow changes, exploiting weak branch protection and bypassing pull-request review.
  • The base64-encoded bash payload reportedly collected CI environment data, cloud credentials, SSH keys, CI/CD tokens and secrets found in repository files.
  • Collected data was compressed and sent by HTTPS POST to 216.126.225.129:8443/collect; the article says the workflow step exited cleanly.
  • The article reports 5,561 affected repositories and a SafeDep dataset containing 5,718 malicious commits.
  • It identifies nine affected Tiledesk repositories and says the @tiledesk/tiledesk-server package was poisoned in versions 2.18.6–2.18.12.
  • The article identifies mandatory pull-request reviews as a primary control against direct workflow injection and notes that unrestricted runner egress enabled exfiltration.

Article Details

Attack Vectors
  • Megalodon injected malicious GitHub Actions workflow files into repositories with weak branch protection, using direct pushes to the default branch.
  • The workflows decoded and executed a base64-encoded Bash payload during CI runs to collect environment data, cloud credentials, tokens, private keys, and other secrets.
  • The payload compressed collected data and sent it to a C2 server via HTTPS POST.
Defensive Notes
  • Require branch protection with mandatory pull request reviews to prevent unauthorized workflow changes from being pushed directly to the default branch.
  • Restrict write access and review workflow YAML changes, which the article says may receive less scrutiny than application code.
  • Restrict CI runner outbound network access and monitor or block unexpected connections; the article notes that Harden-Runner job insights showed a blocked outbound connection to the C2 server.

Indicators of compromise

TypeIndicatorContext
EMAILbuild-bot@github-ci[.]comForged commit author identity listed as a search indicator for repositories receiving malicious commits.
EMAILci-pipeline@actions-bot[.]comForged commit author identity listed as a search indicator for repositories receiving malicious commits.
IPV4216[.]126[.]225[.]129C2 server used by the payload to receive exfiltrated data.
SHA1acac5a9854650c4ae2883c4740bf87d34120c038Commit hash identified as the Tiledesk anchor commit for the campaign.
URLhxxps[:]//216[.]126[.]225[.]129:8443/collectC2 exfiltration endpoint receiving harvested data via HTTPS POST.

MITRE ATT&CK

Vendors

Products

Tools

Industries

Related Articles