Open Source · · 4 days
Trivy release actions shipped malware
After incomplete containment of the February Trivy takeover, compromised credentials were used to publish malicious Trivy v0.69.4 artifacts, force-push most trivy-action version tags, and replace setup-trivy tags with credential-stealing commits.
On March 19, 2026, attackers who still held credentials from the February takeover of Aqua Security's Trivy repository used them to publish a malicious Trivy v0.69.4 release and to rewrite the tags of two companion GitHub Actions, trivy-action and setup-trivy, that thousands of CI/CD pipelines already trusted by name. Docker Hub images for 0.69.4, 0.69.5, and 0.69.6 followed days later.
The delivery worked because most consumers pinned by mutable tag rather than full commit SHA. Force-pushed tags swapped the underlying code without changing the workflow files that referenced them. StepSecurity, which documented the second wave, said the compromised setup-trivy commit 8afa9b9 was itself benign but pointed workflows at the poisoned v0.69.4 binary.
The payload read GitHub Actions runner memory and per-process environments, collected developer and cloud secrets, encrypted the archive, and tried to exfiltrate it to scan.aquasecurtiy.org, a typosquat of Aqua's own domain, with public GitHub repositories as a fallback drop. Trivy was an unusually rich target because it already ran inside build and deployment pipelines, where secrets live in plaintext.
The Register, citing Mandiant, reported that more than 1,000 SaaS environments were affected, with researchers warning the number was likely to grow. Aqua removed the malicious tags, published clean releases, and issued advisory GHSA-69fq-xp46-6x23. Stolen CI/CD secrets later bled into adjacent projects, including LiteLLM, extending the blast radius beyond Trivy itself.
Appendix · Affected releases
- Aqua's advisory maps these hashes, in order, to the complete v0.69.4 FreeBSD-64 tarball; Linux-32 deb, rpm, and tarball; Linux-64 deb, rpm, and tarball; Linux-ARM deb, rpm, and tarball; Linux-ARM64 deb, rpm, and tarball; Linux-PPC64LE deb, rpm, and tarball; Linux-s390x deb, rpm, and tarball; macOS-64 and macOS-ARM64 tarballs; Windows-64 ZIP; and the raw linux_amd64, linux_arm64, s390x, and ppc64le executables.
- Aqua's disclosure window covered Trivy v0.69.4 release artifacts, including distribution paths such as GHCR, ECR Public, Docker Hub, deb, rpm, and get.trivy.dev; Docker Hub tags are also tracked as their own artifact group.
- The Register reported Mandiant's estimate of more than 1,000 impacted SaaS environments from the wider Trivy supply-chain attack; this is recorded as a lower-bound impact count rather than an exact user count.
- Aqua's advisory maps these OCI digests, in order, to 0.69.4 and its linux/amd64, linux/arm64, linux/ppc64le, and linux/s390x manifests; 0.69.5 and its linux/arm64, linux/ppc64le, and linux/s390x manifests; and 0.69.6 and its linux/amd64, linux/arm64, linux/ppc64le, and linux/s390x manifests. The separate 0.69.4 signature-object digest remains an event-level IOC.
- Socket reported Docker image tags 0.69.4, 0.69.5, 0.69.6, and latest as compromised on March 22, with no corresponding GitHub releases for the later image tags.
- A mutable latest tag or release channel was reported affected; it is recorded as scope rather than a fixed version identifier.
- Aqua's exposure table listed all trivy-action tags except 0.35.0 as affected during the March 19-20 UTC window; SHA-pinned references were not affected.
- The SHA-1 is the full Git commit object ID behind the compromised tags. GitHub's retained commit diff shows the credential-stealing changes to entrypoint.sh; it is not a digest of a generated GitHub source archive.
- The compromised setup-trivy tags installed the malicious Trivy binary; StepSecurity noted 8afa9b9f9183b4e00c46e2b82d34047e3c177bd0 was a legitimate commit reference that led workflows to the compromised v0.69.4 binary. The SHA-1 identifies that complete Git commit object, not the downloaded Trivy binary or a generated source archive.
- Affected setup-trivy scope was reported as all releases before 0.2.6; exact lower bound is not recorded.
- Reporting described the affected range as < 0.2.6 rather than naming the releases, so the individual versions are not enumerated here.
Indicators
- hashsha256:cc464a3961e1dbe145c75343b55c2f446e08b821782ec993728c4222b0d85589
- commit8afa9b9f9183b4e00c46e2b82d34047e3c177bd0
- commitddb9da4475c1cef7d5389062bdfdfbdbd1394648
- commit3fb12ec12f41e471780db15c232d5dd185dcb514
References
- Trivy Compromised a Second Time - Malicious v0.69.4 Releasestepsecurity.io
- CanisterWorm - How a Self-Propagating npm Worm Is Spreading Backdoors Across the Ecosystemstepsecurity.io
- GitHub Advisory: Trivy supply chain compromisegithub.com
- Trivy v0.69.4 supply chain compromise discussiongithub.com
- Trivy Docker Images Compromised in Supply Chain Attacksocket.dev
- 1K+ cloud environments infected following Trivy supply chain attacktheregister.com
- Five Supply Chain Attacks in Twelve Daysblog.dreamfactory.com
Source record: oss/attacks/trivy/meta.yaml