TeamPCP Compromises Trivy Releases and GitHub Actions to Steal Credentials

· Original article ↗

Summary

A TeamPCP supply-chain attack compromised Trivy releases and GitHub Actions, stealing CI/CD credentials and secrets. Wiz advises auditing affected versions and workflows, checking for exfiltration artifacts, and pinning actions to full commit SHAs.

Key points

  • Attackers used retained access after an earlier incident to compromise Trivy v0.69.4, trivy-action, and setup-trivy; malicious Trivy images 0.69.5 and 0.69.6 were also published.
  • Malicious GitHub Actions harvested runner memory, SSH keys, cloud credentials, Kubernetes tokens, and other secrets, then encrypted and exfiltrated them.
  • The malware could create a tpcp-docs repository in a victim’s GitHub account as a fallback for stolen data.
  • The Trivy binary also collected environment and filesystem credentials and could install a persistent systemd user service on developer machines.
  • The attackers stole Aqua credentials, including GPG keys and Docker Hub, Twitter, and Slack credentials; malicious workflows were also pushed to related repositories.
  • Aqua removed the malicious artifacts and published an advisory. Wiz recommends auditing affected Trivy versions and workflow runs, checking for tpcp-docs repositories, and pinning GitHub Actions to full commit SHAs.

Article Details

Attack Vectors
  • Compromised project and service-account access was used to push malicious commits and workflows to Trivy, trivy-action, setup-trivy, tfsec, and traceeshark.
  • Malicious GitHub Action tags and Trivy release artifacts delivered credential-stealing payloads to downstream workflows and systems.
  • The Trivy binary harvested environment variables and filesystem credentials, while the Actions payload also read Runner.Worker process memory and searched for SSH, cloud, Kubernetes, and cryptocurrency-wallet secrets.
  • Stolen data was encrypted and exfiltrated to attacker-controlled infrastructure; fallback paths included creating a tpcp-docs repository in the victim's GitHub account.
  • On developer machines, the malicious binary attempted persistence through a systemd user unit and Python dropper, which polled a fallback location for a payload.
Defensive Notes
  • Audit use or execution of Trivy v0.69.4 and the malicious Trivy container images, and remove affected artifacts.
  • Review workflows referencing aquasecurity/trivy-action and aquasecurity/setup-trivy, especially runs from March 19–20; inspect the Run Trivy and Setup environment steps.
  • Search GitHub organizations for unexpected tpcp-docs repositories and hunt for the listed network and file indicators.
  • Pin GitHub Actions to full commit SHA hashes rather than movable version tags.
  • Rotate credentials and secrets that may have been exposed, including SSH, cloud, Kubernetes, GPG, Docker Hub, Twitter, and Slack credentials.

Indicators of compromise

TypeIndicatorContext
DOMAINscan[.]aquasecurtiy[.]orgTyposquatted C2 domain used to deliver credential-stealing code and receive exfiltrated data.
HOSTNAMEplug-tab-protective-relay[.]trycloudflare[.]comCloudflare Tunnel C2 used for exfiltration from malicious GitHub Actions.
HOSTNAMEtdtqy-oyaaa-aaaae-af2dq-cai[.]raw[.]icp0[.]ioICP-hosted fallback polled by the persistence script for a payload.
IPV445[.]148[.]10[.]212Resolution address reported for the typosquatted C2 domain.
SHA2560880819ef821cff918960a39c1c1aada55a5593c61c608ea9215da858a86e349Hash listed for a malicious Windows-64bit artifact.
SHA2566328a34b26a63423b555a61f89a6a0525a534e9c88584c815d937910f1ddd538Hash listed for a malicious macOS-ARM64 artifact.
SHA256822dd269ec10459572dfaaefe163dae693c344249a0161953f0d5cdd110bd2a0Hash listed for a malicious Linux-64bit artifact.
SHA256887e1f5b5b50162a60bd03b66269e0ae545d0aef0583c1c5b00972152ad7e073Hash listed for a malicious FreeBSD-64bit artifact.
SHA256bef7e2c5a92c4fa4af17791efc1e46311c0f304796f1172fce192f5efc40f5d7Hash listed for a malicious Linux-ARM artifact.
SHA256d5edd791021b966fb6af0ace09319ace7b97d6642363ef27b3d5056ca654a94cHash listed for a malicious Linux-s390x artifact.
SHA256e6310d8a003d7ac101a6b1cd39ff6c6a88ee454b767c1bdce143e04bc1113243Hash listed for a malicious macOS-64bit artifact.
SHA256e64e152afe2c722d750f10259626f357cdea40420c5eedae37969fbf13abbecfHash listed for a Linux-ARM64 artifact; the article marks this artifact unconfirmed.
SHA256ecce7ae5ffc9f57bb70efd3ea136a2923f701334a8cd47d4fbf01a97fd22859cHash listed for a malicious Linux-PPC64LE artifact.
SHA256f7084b0229dce605ccc5506b14acd4d954a496da4b6134a294844ca8d601970dHash listed for a malicious Linux-32bit artifact.

MITRE ATT&CK

Threat Actors

Malware

Vendors

Products

Docker Hub22, 21:40 UTC: ~16:00 UTC, attackers were able to publish malicious images of Trivy (0.69.5, 0.69.6) to Docker Hub. The attacker has also demonstrated continued access to Aqua by publishing internal Aqua repositoriesECRto 45.148.10.212), and backdoored binaries being published to GitHub Releases, Docker Hub, GHCR, and ECR. The maintainers have since removed these malicious artifacts.GHCRresolving to 45.148.10.212), and backdoored binaries being published to GitHub Releases, Docker Hub, GHCR, and ECR. The maintainers have since removed these malicious artifacts.GitHub ActionsTrivy vulnerability scanner, injecting credential-stealing malware into official releases and GitHub Actions. While Aqua reports they have since removed the malicious releases, organizations using Trivy shouldsetup-trivymultiple components of the Trivy project: the core scanner, the trivy-action GitHub Action, and the setup-trivy GitHub Action.tfsecalso compromised the aqua-bot service account and then abused their access push malicious workflows to tfsec, traceeshark, and trivy-action and steal additional credentials from Aqua (including GPG keys andtraceesharkthe aqua-bot service account and then abused their access push malicious workflows to tfsec, traceeshark, and trivy-action and steal additional credentials from Aqua (including GPG keys and credentials forTrivyOn March 19, 2026, threat actors compromised Aqua Security's Trivy vulnerability scanner, injecting credential-stealing malware into official releases and GitHub Actions. While Aqua reports they have since removed thetrivy-actionTrivy. The attack compromised multiple components of the Trivy project: the core scanner, the trivy-action GitHub Action, and the setup-trivy GitHub Action.

Related Articles