Skip to content
Security & Trust

Trivy breach shows a pinned version number is not a lock

Attackers rewrote version tags on Trivy's GitHub Actions, so even workflows pinned to a version ran malicious code.

W
WebPulse Newsroom
AI-assisted · 4 min read
Share on X LinkedIn
Trivy breach shows a pinned version number is not a lock
In brief
  • Endor Labs reports that attackers stole a token from Trivy's GitHub setup, then rewrote version tags so pinned workflows ran credential-stealing code.
  • The lesson: a version tag is a label that can be changed, so CI/CD tools need the same scrutiny as application code.
  • Teams should audit pull_request_target workflows, pin privileged Actions to full commit IDs, and set GITHUB_TOKEN to read-only by default.

Most companies treat their security scanner as a guard at the door. The Trivy breach shows it can also hold broad access to everything inside. The lesson is simple: a version tag is a name, not a seal. Anyone with write access can point that name at different code.

What happened

Endor Labs, a software supply chain security vendor, published an analysis of the March 2026 compromise of Trivy. Trivy is an open-source vulnerability scanner maintained by Aqua Security. According to Endor Labs, the attack began in late February with a misconfigured GitHub Actions workflow, not a zero-day flaw.

Aqua Security disclosed the incident on March 1, after changing the credentials involved. Endor Labs says the changeover may not have happened all at once. That could have left the attackers able to obtain the replacement tokens.

On March 19, the attackers moved 75 of the 76 existing version tags in the trivy-action repository so they pointed at malicious commits. All 7 tags in setup-trivy were changed the same way. By March 22, malicious images had also been published to Docker Hub. The breach carries CVE-2026-33634 and a CVSS score of 9.4.

75 of 76
Version tags rewritten in trivy-action
Source: Endor Labs (October 16, 2026)

How the attack worked

The entry point was a GitHub feature called pull_request_target. It runs a workflow with the base repository's secrets, even when the pull request comes from an outside fork. That is fine until the workflow also checks out the outsider's code and runs it. Then an unknown contributor's code runs with the repository's secrets.

Endor Labs says this pattern is documented in GitHub's own guidance. It says Boost Security's poutine tool flagged the Trivy misconfiguration on November 29, 2025. That was more than three months before the attackers used it. The warning existed, and the fix did not arrive in time.

The second step was the tags. A git tag is a movable label. The attackers repointed existing version tags at malicious commits. A workflow pinned to a specific version, such as v0.33.0, pulled the new code on its next run. Nothing in the workflow file changed.

What the malware took

Endor Labs describes the payload as a credential stealer that called itself "TeamPCP Cloud stealer." It searched more than 50 file paths for SSH keys and read environment variables for AWS, GCP and Azure keys. It also collected tokens for GitHub, GitLab and Jenkins, plus Kubernetes credentials.

The code also dumped the working memory of the process that runs the GitHub Actions job. That exposes short-lived secrets that are never written to disk. Stolen data was encrypted and sent to a lookalike domain with transposed letters. As a fallback, the malware used stolen GitHub tokens to publish the data in public repositories inside the victims' own accounts.

10,000+
CI/CD workflows that executed the malicious payload
Source: Endor Labs (October 16, 2026)

Why the impact reaches past the first victim

A scanner is granted broad access by design. It reads source code, container images and infrastructure settings. Compromise the scanner and you inherit that reach. Endor Labs reports more than 1,000 SaaS environments were compromised. It also says investigators linked the breach to a later compromise of LiteLLM, an AI middleware library.

Those are Endor Labs' reported figures. It also says stolen access was reportedly handed to Lapsus$ for extortion. We have not seen independent counts, so read them as reported.

1,000+
SaaS environments reportedly compromised
Source: Endor Labs (October 16, 2026)

This shows a shift in where risk sits. Companies vet the libraries in their products with care. Few give the same scrutiny to the automation that builds and ships those products. That automation holds the deployment keys, which makes it an attractive target.

What leaders should ask their teams

Endor Labs sells tooling in this area, so weigh its pitch accordingly. Its checks are still concrete and cheap to run.

First, ask: which of our workflows use pull_request_target, and do any run code from an outside pull request? If so, refactor them or restrict checkouts to the base branch.

Second, ask: do our privileged Actions point to version tags or full commit IDs? Endor Labs advises pinning to the full commit ID for any Action that touches secrets. It adds a caveat: pinning does not cover transitive dependencies. Any later change to a pinned ID should be reviewed.

Third, ask: is GITHUB_TOKEN read-only by default across the organization? Also check whether any workflow calls a reusable workflow with "secrets: inherit" or toJSON(secrets). Endor Labs says both patterns make every secret available to every job in the chain, so teams should replace them with explicit, minimal secret passing.

Trivy was flagged for months before it was exploited. The question for your next board update is not whether you own a scanner. It is who can change the code your scanner runs, and who would notice.

Produced by the WebPulse Newsroom with AI assistance from the original reporting credited below, and checked against that source by our editorial review. How we use AI.
Original reporting: Endor Labs.

CVEs in this analysis
CVE-2026-33634: Trivy
Share this insight