Xygeni GitHub Action’s Mutable v5 Tag Poisoned With C2 Backdoor

· Original article ↗

Summary

StepSecurity reports an attacker moved Xygeni’s mutable GitHub Action v5 tag to a commit containing a C2 reverse shell, exposing workflows using @v5 for seven days. Xygeni removed the tag, rotated tokens and advised pinning releases.

Key points

  • On March 3, 2026, the article says an attacker used compromised maintainer identities and a Xygeni GitHub App to move the xygeni/xygeni-action v5 tag to a backdoored commit; three malicious pull requests were closed without merging.
  • The payload registered runner hostname, username and OS details with a C2 server, then polled for commands and executed them for up to three minutes. The article does not establish that secrets were stolen.
  • Workflows referencing @v5 could run the backdoor from March 3 until Xygeni removed the tag on March 10; the article reports no evidence that all users of the action were affected.
  • The C2 hostname was security-verify[.]91[.]214[.]78[.]178[.]nip.io, resolving to 91.214.78.178.
  • Xygeni removed the compromised tag, rotated contributor tokens, enabled release immutability and added tag and branch protections. Its incident report attributed the compromise to stolen GitHub credentials.
  • The article recommends pinning actions to full commit SHAs; it identifies v6.4.0 as a clean post-incident release with checksum verification.

Article Details

Attack Vectors
  • The attacker moved the mutable xygeni/xygeni-action@v5 tag to a commit containing a C2 backdoor, causing workflows referencing the tag to run the compromised code without workflow-file changes or a merged pull request.
  • The article reports that compromised maintainer credentials and a Xygeni-owned GitHub App were used to open three pull requests carrying the same payload; Xygeni later confirmed the compromise was caused by stolen GitHub credentials.
  • The action ran a background Bash implant that registered with a C2 server, polled for commands, executed received commands with eval, and returned encoded command output.
Defensive Notes
  • Pin GitHub Actions to full commit SHAs rather than mutable tags.
  • Monitor and restrict outbound network connections from CI runners; the article says the C2 callback could have been detected and blocked by egress monitoring.
  • Remove compromised action references and use the clean v6.4.0 release or its full commit SHA, as advised in the article.
  • Rotate potentially compromised credentials and tokens, enable release immutability and tag protection, and harden branch protection with mandatory signed commits.

Indicators of compromise

TypeIndicatorContext
DOMAINsecurity-verify[.]91[.]214[.]78[.]178[.]nip[.]ioC2 hostname used by the backdoor to register the runner, poll for commands, and return results.
IPV491[.]214[.]78[.]178C2 server IP address identified in the article as the address behind the malicious hostname.

MITRE ATT&CK

Vendors

Products

Tools

Related Articles