Security Digest · Mar 19, 2026 · Supply-chain compromise · CI/CD
Trivy Supply-Chain Hijack: trivy-action Steals CI Secrets
Mar 2026 TeamPCP hijack (CVE-2026-33634, KEV): 76 trivy-action tags, setup-trivy, Trivy 0.69.4-0.69.6 images stole CI secrets. Safe: 0.69.3, action 0.35.0.
Our verdict
Check exposure
If any pipeline ran trivy-action by tag, setup-trivy, or Trivy 0.69.4 to 0.69.6 during the March 19-23, 2026 windows, every secret that job could see is burned; if you pinned SHAs, digests or 0.69.3, you were fine.
Who must act: Teams whose CI ran aquasecurity/trivy-action by tag on March 19-20, 2026, setup-trivy unpinned, Trivy 0.69.4 from any channel or Docker Hub 0.69.5/0.69.6/latest on March 22-23, or the Checkmarx actions and Open VSX extensions on March 23.
Who can relax: Users who pinned the action to a commit SHA after 2025-04-09, used images by digest, installed Trivy through the official Homebrew formula, or stayed on Trivy 0.69.3 or earlier were not affected.
- Affected
- aquasecurity/trivy-action tags 0.0.1-0.34.2 (76 of 77 tags)
aquasecurity/setup-trivy tags v0.2.0-v0.2.6
Trivy binary and images v0.69.4 (GitHub, deb/rpm, GHCR, ECR Public, Docker Hub, get.trivy.dev, aquasecurity/homebrew-trivy tap)
Docker Hub aquasec/trivy 0.69.5 and 0.69.6, and 'latest' during exposure windows
checkmarx/ast-github-action and checkmarx/kics-github-action; Open VSX ast-results 2.53.0 and cx-dev-assist 1.7.0 - Fixed in
- Trivy v0.69.2 or v0.69.3
trivy-action 0.35.0 (or restored v-prefixed tags, e.g. v0.34.0)
setup-trivy v0.2.6 (re-created) - CVSS
- 9.4 (v4.0, CNA)
- EPSS
- 1.7% (percentile 78)
- CISA KEV
- Yes, listed as known exploited
- Exploitation
- Exploited in the wild
- Severity
- Critical
What to do
- Grep workflows for trivy-action and setup-trivy references and check run logs from March 19-20, 2026
- Pin actions to full commit SHAs and container images to digests
- Rotate every secret available to affected jobs: cloud keys, GitHub PATs, registry creds, SSH keys, Kubernetes tokens, .env values
- Search your GitHub org for tpcp-docs-* or docs-tpcp repos and data-<timestamp> releases
- Block scan.aquasecurtiy.org, 45.148.10.212 and checkmarx.zone at egress
- Verify Trivy binaries with cosign against the sigstore bundle
How to check if you are affected or compromised
- grep -rnE 'aquasecurity/(trivy-action|setup-trivy)@' .github/workflows/
- trivy --version (0.69.4, 0.69.5 or 0.69.6 = compromised); docker images --digests aquasec/trivy
- GitHub org search: repositories named tpcp-docs-* or docs-tpcp
- Proxy/DNS logs: scan.aquasecurtiy[.]org, 45.148.10.212, checkmarx[.]zone; runner logs mentioning tpcp.tar.gz
What happened#
On March 19, 2026, an attacker used still-valid Aqua Security credentials to turn the popular Trivy vulnerability scanner into a credential stealer, through several channels at once. Aqua's advisory, GHSA-69fq-xp46-6x23 (CVE-2026-33634), gives the details:
- The attacker force-pushed 76 of the 77 version tags in
aquasecurity/trivy-actionand all 7 tags inaquasecurity/setup-trivyto malicious commits. - The attacker also pushed a commit that swapped
actions/checkoutfor an imposter commit and disabled goreleaser validation, then tagged it as Trivy v0.69.4. That release shipped to GitHub Releases, deb/rpm, GHCR, ECR Public, Docker Hub,get.trivy.devand a custom Homebrew tap. - On March 22, separately stolen Docker Hub credentials were used to push malicious
0.69.5and0.69.6images.
The injected code runs before the real scan, so pipelines looked normal. It dumps the GitHub Runner.Worker process memory, sweeps more than 50 paths for SSH keys, cloud and Kubernetes credentials, Docker configs and .env files, and encrypts the haul with AES-256-CBC wrapped in RSA-4096. It sends the data to the typosquat scan.aquasecurtiy.org. If that fails and a PAT is available, it creates a public tpcp-docs-* repo on the victim's account and uploads the data there. The root cause was an incomplete fix for a late-February intrusion: credential rotation after the March 1 disclosure "was not atomic", so a token that had not yet been revoked could read the new secrets.
The stealer calls itself "TeamPCP Cloud stealer" (The Hacker News). Four days later the same tooling hit checkmarx/ast-github-action, checkmarx/kics-github-action, and the Open VSX extensions ast-results 2.53.0 and cx-dev-assist 1.7.0, exfiltrating to checkmarx[.]zone (THN). Stolen data from this spree reportedly fed later npm compromises.
Who is affected#
Aqua lists these exposure windows (UTC): trivy-action tags 0.0.1-0.34.2 from about 17:43 on March 19 to 05:40 on March 20 (about 12 hours); setup-trivy for about 4 hours; Trivy v0.69.4 from 18:22 to 21:42 on March 19; Docker Hub 0.69.5/0.69.6 and latest from 15:43 on March 22 to 01:40 on March 23. Workflows that SHA-pinned trivy-action to commits from before 2025-04-09 could still pull a malicious setup-trivy. CISA added CVE-2026-33634 to the KEV catalog on March 26, 2026.
Do you really need to act?#
This one hit security teams specifically, because Trivy runs in exactly the pipelines that hold deploy keys. If a job ran inside a window, assume it leaked every secret it had, including GITHUB_TOKEN scope, cloud OIDC sessions and registry credentials. The windows were short, though, and the clean signals are clear: a SHA pin to a recent commit, an image digest, the official Homebrew formula (built from source), or Trivy 0.69.3 or earlier means you were not exposed. Seven months on, the work is an audit and a rotation, plus fixing the tag-pinning habit that made this possible.
What to do now#
- Find references:
grep -rnE 'aquasecurity/(trivy-action|setup-trivy)@' .github/workflows/. Then pull Actions run logs for March 19-20, 2026, usinggh run list --workflow <file> --created 2026-03-19..2026-03-23. - Move to trivy-action
0.35.0(immutable) or a restoredv-prefixed tag, setup-trivyv0.2.6, and Trivyv0.69.3or later clean releases. Pin by full SHA and digest. - Rotate everything the affected jobs could reach: cloud keys and roles, GitHub PATs and app keys, registry credentials, SSH deploy keys, kubeconfigs, and database passwords.
- Hunt for
tpcp-docs-*ordocs-tpcprepos anddata-<timestamp>releases in your org. Delete them after preserving evidence. - Verify any Trivy binary you keep with
cosign verify-blobagainst its sigstore bundle, and check that the Rekor timestamp predates March 19.
How to tell if you were hit#
trivy --version reporting 0.69.4, 0.69.5 or 0.69.6 means you ran a compromised build. Compare image digests with the advisory's IOC list (for example, the 0.69.4 tag is sha256:27f44623…eef3). Network indicators: scan.aquasecurtiy[.]org, 45.148.10.212, checkmarx[.]zone, and tpcp.tar.gz in runner output. On developer machines that ran 0.69.4, check for an unexpected systemd user service, which the malware uses for persistence.
Timeline#
- — Disclosure of an earlier Trivy intrusion; credential rotation is incomplete.
- — Tags hijacked from about 17:43 UTC; v0.69.4 published at 18:22 UTC.
- — Aqua publishes GHSA-69fq-xp46-6x23.
- — Malicious Docker Hub images 0.69.5 and 0.69.6 pushed (removed about 10 hours later).
- — Checkmarx actions and Open VSX extensions compromised with the same stealer.
- — CISA adds CVE-2026-33634 to KEV.
Vulnerability records
- CVE-2026-33634 · KEV 2026-03-26 · Trivy is a security scanner. On March 19, 2026, a threat actor used compromised credentials to publish a malicious Trivy v0.69.4 release, force-push 76 of 77…
Sources
Original sources first: vendor and project advisories, CVE and government records, the discoverers’ write-ups. Every claim above links to one of these. See how the Security Desk works.
Original and primary sources
- Aqua Security / GitHub — GHSA-69fq-xp46-6x23 Trivy supply chain compromise github.com
- CISA — Known Exploited Vulnerabilities Catalog (CVE-2026-33634) cisa.gov