← All briefs
high March 24, 2026

Trivy Supply Chain Compromise: TeamPCP CI/CD Credential Theft

Source report →

On March 19, 2026, a threat actor identifying as TeamPCP compromised Aqua Security's trivy-action and setup-trivy GitHub Actions by force-pushing 76 release tags to point at malicious commits. The technique silently redirected version references to attacker-controlled code without any visible change on GitHub release pages. The injected entrypoint.sh runs credential theft in the background while the legitimate Trivy scanner completes normally, making the compromise difficult to detect through workflow output alone. On March 22, the attacker demonstrated continued access by publishing malicious Docker Hub images (v0.69.5, v0.69.6) and exposing internal Aqua repositories. As of March 23, Aqua has engaged Sygnia for forensic investigation and confirmed the incident is ongoing with evidence of reestablished access.

The initial foothold originated in late February 2026 when hackerbot-claw exploited a pull_request_target workflow misconfiguration to steal a privileged PAT. Credential rotation after that incident was not atomic, allowing the attacker to retain access. On March 19, the attacker used residual credentials to force-push 76 of 77 trivy-action tags and all 7 setup-trivy tags to malicious commits, simultaneously triggering a release of the backdoored Trivy v0.69.4 binary. On GitHub-hosted runners, a Base64-encoded Python script reads Runner.Worker process memory via /proc/{PID}/mem to extract CI/CD secrets. On self-hosted runners, the malware harvests SSH keys, cloud credentials (AWS, GCP, Azure), Kubernetes configs, Docker registry credentials, cryptocurrency wallets, and API keys from the filesystem. Collected data is encrypted with AES-256-CBC + RSA-4096 hybrid encryption, packaged as tpcp.tar.gz, and exfiltrated to the typosquatted domain scan.aquasecurtiy[.]org. If that fails, the malware uses the runner's GITHUB_TOKEN to create a public repository named tpcp-docs in the victim's org and uploads the bundle as a release asset. The compromised binary additionally writes a Python dropper (sysmon.py) for persistence, polling an ICP blockchain-hosted C2 for follow-on payloads. Stolen NPM publish tokens are being actively weaponized to propagate the CanisterWorm across the npm ecosystem.

The three attached detections cover two detection planes. On GitHub audit logs: the fallback exfiltration path (tpcp-named repo creation) and bot identities publishing releases (catches the exfil upload step regardless of repo name). On CrowdStrike Falcon: DNS resolution of the primary C2 domain scan.aquasecurtiy[.]org, the ICP blockchain fallback canister, and the Cloudflare Tunnel relay — catching the primary exfiltration path and secondary payload delivery on any managed endpoint. The 83 known-compromised commit SHAs are captured as IOCs on this briefing for reference but cannot be matched in GitHub audit log queries since the resolved action commit SHA is not exposed in the audit log schema.

DOMAIN 3
scan.aquasecurtiy.org
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io
plug-tab-protective-relay.trycloudflare.com
IP ADDRESS 1
45.148.10.212
SHA256 FILE HASH 11
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671a
887e1f5b5b50162a60bd03b66269e0ae545d0aef0583c1c5b00972152ad7e073
f7084b0229dce605ccc5506b14acd4d954a496da4b6134a294844ca8d601970d
822dd269ec10459572dfaaefe163dae693c344249a0161953f0d5cdd110bd2a0
bef7e2c5a92c4fa4af17791efc1e46311c0f304796f1172fce192f5efc40f5d7
e64e152afe2c722d750f10259626f357cdea40420c5eedae37969fbf13abbecf
ecce7ae5ffc9f57bb70efd3ea136a2923f701334a8cd47d4fbf01a97fd22859c
d5edd791021b966fb6af0ace09319ace7b97d6642363ef27b3d5056ca654a94c
e6310d8a003d7ac101a6b1cd39ff6c6a88ee454b767c1bdce143e04bc1113243
6328a34b26a63423b555a61f89a6a0525a534e9c88584c815d937910f1ddd538
0880819ef821cff918960a39c1c1aada55a5593c61c608ea9215da858a86e349
FILE NAME 3
tpcp.tar.gz
sysmon.py
entrypoint.sh
Library detections (2)
  • GitHub Fallback Exfiltration via tpcp Repository and Release
  • GitHub Bot Account Publishing Releases
Additional detection ideas (6)
  • Detect data exfiltration to code repositories via automated commits or release uploads
  • Detect tampered release artifacts, force-pushed tags, or unauthorized package publications in CI/CD
  • Identify suspicious archive creation before potential exfiltration
  • Alert on processes reading credential files, environment variables, or configuration stores
  • Monitor for unauthorized access to SSH keys, certificates, and private key material
  • Monitor for C2 communication over HTTP/HTTPS to uncommon or newly registered domains