StepSecurity Details Compromise of codfish/semantic-release-action GitHub Action

· Original article ↗

Summary

StepSecurity reports that attackers hijacked codfish/semantic-release-action tags on June 24, 2026, delivering a Bun payload that targets CI secrets and propagates through repositories, developer AI-tool configurations, SSH hosts, and package registries.

Key points

  • StepSecurity says an attacker force-pushed a malicious commit on June 24, 2026, and redirected version tags; workflows using moved tags could run the payload.
  • The modified action changed from a Docker runner to a composite action that installs Bun and runs the payload with always() guards.
  • Static analysis describes attempts to harvest GitHub OIDC tokens and Personal Access Tokens, encrypt collected material, and use GitHub commit messages for dead-drop commands.
  • The payload is designed to plant malicious files and hooks targeting 13 AI coding assistants, propagate to SSH hosts, and publish secondary packages to npm, PyPI, and RubyGems.
  • StepSecurity reports runtime monitoring observed GitHub API traffic. The article also says Harden-Runner can detect suspicious activity and stop a process before a runner-memory read completes.
  • The article recommends pinning actions to full commit SHAs; it also describes StepSecurity policies for blocking compromised actions and detecting moved-tag references.

Article Details

Attack Vectors
  • The attacker force-pushed a malicious commit to codfish/semantic-release-action and redirected version tags to it, causing workflows using those mutable tags to run the payload.
  • The modified composite action installs Bun and runs an obfuscated JavaScript payload with `if: always()` guards, including when earlier workflow steps fail.
  • The payload searches public GitHub commit messages for operator instructions and a token, then uses GitHub APIs for command retrieval and secret exfiltration.
  • The payload harvests GitHub tokens and other credentials, attempts to read secrets from the GitHub Actions runner's process memory, and commits malicious files to accessible repositories.
  • The payload adds AI-assistant and editor startup hooks to repository files and local configurations, and attempts SSH propagation using hosts found in `~/.ssh/known_hosts` and `~/.ssh/config`.
  • With registry credentials, the payload can publish secondary malicious packages to npm, PyPI, and RubyGems.
Defensive Notes
  • Pin GitHub Actions to full-length commit SHAs rather than mutable version tags.
  • Check and disable attacker-created repository rulesets that make compromised tags immutable before attempting recovery.
  • Use compromised-action blocking and imposter-commit detection to prevent workflows from running compromised or tag-drifted action commits.
  • Monitor runner process, file-access, and network activity; the article reports Harden-Runner detecting an attempted read of Runner.Worker process memory and terminating the process.
  • Review repositories and developer-machine AI assistant and editor configurations for injected hooks and malicious files.

MITRE ATT&CK

Vendors

Products

Related Articles