All posts

CVE-2026-33634: Trivy Supply Chain Attack

Threat group TeamPCP trojanised the most widely-used cloud-native security scanner — turning every CI/CD pipeline running Trivy into a credential harvester that silently exfiltrated AWS keys, Kubernetes tokens, and SSH keys while appearing to scan normally.


CVECVE-2026-33634
CVSS9.4 Critical
CWECWE-506 Embedded Malicious Code
Affectedtrivy-action ≤ v0.35.0, setup-trivy ≤ v0.2.5, Trivy v0.69.4–v0.69.6
Threat ActorTeamPCP

Overview

On 19 March 2026, threat group TeamPCP used compromised Aqua Security credentials to inject malware into Trivy — the most widely adopted open-source container and cloud security scanner in the cloud-native ecosystem. The attack was a textbook supply chain compromise: by poisoning the scanner itself, every CI/CD pipeline that ran Trivy became an unwitting infostealer, silently harvesting cloud credentials and secrets before the legitimate scan output was returned.

CISA added CVE-2026-33634 to its Known Exploited Vulnerabilities catalog on 26 March 2026. CERT-EU subsequently attributed a data breach affecting europa.eu infrastructure to this compromise.

What is Trivy?

Trivy is Aqua Security's open-source vulnerability scanner, designed to detect CVEs in container images, filesystems, Git repositories, Kubernetes clusters, and IaC configurations. It is the de-facto standard scanner in cloud-native CI/CD pipelines — integrated into GitHub Actions, GitLab CI, CircleCI, and Kubernetes admission controllers across thousands of organisations. Its privileged position in the pipeline, with broad read access to build environments and often injected secrets, made it an exceptionally high-value supply chain target.

Attack Timeline

Late February 2026 — Initial Foothold

Attackers exploited a misconfiguration in Trivy's GitHub Actions environment to extract a privileged personal access token from the CI environment. This gave them write access to the aquasecurity/trivy, aquasecurity/trivy-action, and aquasecurity/setup-trivy repositories.

1 March 2026 — Partial Disclosure and Incomplete Rotation

Aqua Security disclosed the initial incident and performed credential rotation. However, post-incident investigation revealed the rotation was not comprehensive — the threat actor retained residual access through at least one still-valid credential path.

19 March 2026 — Malicious Release

TeamPCP executed the primary payload delivery:

The malicious tag was pushed at approximately 17:43 UTC. Pipelines worldwide began executing the infostealer within minutes of their next scheduled run.

22 March 2026 — DockerHub Poisoning

Using the same access, TeamPCP published malicious Trivy v0.69.5 and v0.69.6 Docker images to DockerHub, extending the reach to pipelines that pulled Trivy as a container rather than via GitHub Actions.

The Payload

The infostealer was designed specifically for CI/CD environments. It executed before the legitimate Trivy scanning logic, ensuring the pipeline appeared to complete normally while data was exfiltrated in the background. Targeted secrets included:

In containerised environments the payload also attempted to spread via Docker socket access — spawning child containers with worm-like behaviour and, in Kubernetes clusters, executing a wiper that deleted persistent volumes. The combination of credential harvesting, lateral movement, and destructive capability made this one of the most impactful supply chain attacks since SolarWinds.

Blast Radius

The scope of potential impact is difficult to overstate. Trivy is embedded in CI/CD pipelines across industries — fintech, healthcare, government, and critical infrastructure. Any organisation whose pipeline ran a uses: aquasecurity/trivy-action@* step between 19–22 March 2026 without pinning to a specific safe commit SHA should treat their build environment as fully compromised.

ownCloud published a security advisory confirming their build infrastructure was affected. CERT-EU attributed a breach of europa.eu infrastructure directly to this compromise.

Safe Versions

Remediation

  1. Rotate all secrets immediately if your pipeline ran trivy-action or setup-trivy between 19–22 March 2026 — treat every cloud credential, API key, and token accessible from the build environment as compromised.
  2. Audit pipeline logs for outbound network connections made during Trivy steps to unexpected destinations.
  3. Pin all GitHub Actions to commit SHAs, not tags or version strings. Tags can be force-pushed; commit SHAs are immutable. Use uses: aquasecurity/trivy-action@57a97c7 not @v0.35.0.
  4. Review Kubernetes clusters for unexpected pod deletions, PVC wipes, or new workloads created in the window of compromise.
  5. Implement secret scanning on your CI outputs and rotate any secrets that appear in build logs.
  6. Verify Docker images by digest rather than tag — aquasecurity/trivy@sha256:<digest> rather than aquasecurity/trivy:0.69.x.

Detection Guidance

Takeaways

This attack illustrates why CI/CD pipelines are among the most dangerous points of trust in a modern software supply chain. A security tool — specifically a tool whose job is to find vulnerabilities — was itself weaponised to harvest the very credentials it was trusted to protect. The irony is operationally significant: pipelines running Trivy for security compliance were the ones most reliably infected.

The core defensive lesson is simple and long-established: never reference a mutable pointer (tag, branch, version string) in a CI/CD dependency. Pin to commit SHAs, verify signatures where available, and treat your build environment with the same adversarial suspicion you would apply to a production system. It holds secrets, has network access, and increasingly — as this incident proved — it is a primary target.

References