Trivy v0.69.4 Software Supply Chain Attack: What You Need To Know
By
Artur Oleyarsh
March 23, 2026
Recently, the open-source software community joined forces to help investigate an attack campaign against Aqua’s Trivy open-source security scanner. A threat actor was able, by compromising credentials, to generate a malicious version of Trivy and a few additional projects that were affected, which we will mention in this blog post.
Because the Trivy scanner is widely used by security teams, we want affected clients and readers to be aware of this issue. This post goes over incident details and what to do if you are affected.
As of writing this, the investigation is still in process and details are subject to change.
Trivy v0.69.4 Compromise: What happened?
In March 2026, a threat actor initiated a software supply chain attack campaign against a number of Aqua’s Trivyprojects across the open-source software ecosystem. By compromising credentials, the threat actor was able to publish a malicious Trivy v0.69.4 release, force-push 76/77 version tags in aquasecurity/trivy-action to infostealer malware, and replace 7 tags in aquasecurity/setup-trivy with malicious commits.
Prior Trivy GitHub Actions Workflow Attack: Early March 2026
The repository visibility was changed to private and renamed to aquasecurity/private-trivy
GitHub releases between 0.27-0.69.1 were deleted, including associated Discussions and Assets for those releases
A malicious artifact was created for Trivy’s VSCode extension which was pushed to Open VSIX marketplace (the artifact was removed and the token used to publish it was revoked)
Users that potentially can be affected are the ones that:
After an attempt by Aqua to mitigate the issue mentioned above, the threat actor performed a couple of imposter commits that were not attached to any branch:
A commit was pushed to one of the widely used GitHub actions. Spoofing rauchg user identity (Guillermo Rauch, CEO of Vercel), the threat actor made it look like a legitimate fix commit. But, as you can see in the screen shot below, the change in fact does the following:
Swaps the model from Node.js to composite and lets the attacker chain multiple steps, including arbitrary shell commands.
Checks out Trivy repo with full history
Downloads malicious Go source files from a typosquatted domain controlled by the threat actor https://scan.aquasecurtiy.org/static
Notice the typosquat aquasecurtiy instead of aquasecurity
The attacker then repo swapped the actions/checkout reference to point to the imposter commit we mentioned above, effectively hijacking the checkout step so that any CI/CD pipeline using trivy-action would fetch and compile the attacker’s secrets stealer code instead of the real Trivy scanner. The threat actors added release --skip=validate to goreleaser to bypass binary validation
Poisoning actions/checkout
Pointing to imposter commit
Bypassing binary validation
Tag Hijack and Release Pipeline Trigger (v0.69.4)
On March 19, 2026 a threat actor pushed the 0.69.4 tag to point to the malicious aquasecurity/trivy commit, triggering the release pipeline. The poisoned version of Trivy was distributed across Trivy’s regular distribution channels:
GHCR
ECR Public
Docker Hub (both 0.69.4 and latest tags)
deb/rpm packages
Get.trivy.dev
Infostealer and Data Exfiltration
The infostealer delivered with the attack then tried to look for and exfiltrate the following information:
System reconnaissance
Steals SSH private keys
Grabs .git-credentials and .gitconfig (stored passwords for Git operations)
Steals cloud (GCP, Azure, AWS) credentials - Sweeps up AWS credentials and config, tries to hit the AWS metadata service (IMDS) for IAM role tokens, collects Google Cloud and Azure credentials from their standard config directories, and grabs any related environment variables.
Kubernetes secrets: Takes kubeconfig files, service account tokens, certificates, and even tries kubectl get secrets --all-namespaces to dump every secret in the cluster.
Docker and Registry Auth: Steals Docker config files that contain registry login tokens (Docker Hub, GHCR, ECR, etc).
Environment files: Searches aggressively for .env, .env.production, .env.local, etc. across the entire filesystem up to 6 directories deep - these commonly hold API keys and database passwords.
Database credentials: Grabs config and password files for MySQL, PostgreSQL, MongoDB, Redis, and LDAP.
CI/CD Secrets: Collects terraform.tfvars Terraform state files (which often contain secrets in plaintext), GitLab CI configs, Travis CI configs, Jenkinsfiles, and Drone CI configs.
TLS/SSL Private Keys: Walks through /etc/ssl/private
Cryptocurrency Wallets: Steals wallet files and private keys for Bitcoin, Ethereum, Solana, Cardano, Litecoin, Dogecoin, Zcash, Dash, Ripple, and Monero. It's especially thorough with Solana - searching for validator keypairs, vote account keys, and Anchor project deploy keys.
Webhook URLs & API Keys: Grep-searches the filesystem for Slack webhooks, Discord webhooks, and anything matching patterns like api_key, access_token, etc.
System Auth Logs: Reads /etc/passwd, /etc/shadow (password hashes), and recent successful SSH login logs.
Shell History: Grabs bash, zsh, MySQL, PostgreSQL, and Redis command histories (developers often accidentally type passwords in terminals).
VPN Configs: Steals WireGuard configurations and tries to dump active WireGuard settings.
Encrypts the information collected and exfiltrates it to the endpoint controlled by the attacker that we already mentioned above scan.aquasecurtiy.org
trivy-actions and setup-trivy GitHub Actions were also targeted by this campaign.
Malicious workflows - credit to socket.dev for collecting and making this data available:
Ecosystem
Namespace
Name
Version
Detected
github
aquasecurity
setup-trivy
8afa9b9f9183b4e00c46e2b82d34047e3c177bd0
2026-03-19T19:14:09.370Z
github
aquasecurity
setup-trivy
386c0f18ac3d7f2ed33e2d884761119f4024ff8a
2026-03-19T19:14:02.086Z
github
aquasecurity
setup-trivy
384add36b52014a0f99c0ab3a3d58bd47e53d00f
2026-03-19T19:14:03.297Z
github
aquasecurity
setup-trivy
7a4b6f31edb8db48cc22a1d41e298b38c4a6417e
2026-03-19T19:14:00.798Z
github
aquasecurity
setup-trivy
6d8d730153d6151e03549f276faca0275ed9c7b2
2026-03-19T19:14:00.925Z
github
aquasecurity
setup-trivy
99b93c070aac11b52dfc3e41a55cbb24a331ae75
2026-03-19T19:14:07.906Z
github
aquasecurity
setup-trivy
f4436225d8a5fd1715d3c2290d8a50643e726031
2026-03-19T19:14:08.534Z
github
aquasecurity
trivy-action
f4f1785be270ae13f36f6a8cfbf6faaae50e660a
2026-03-19T19:15:41.417Z
github
aquasecurity
trivy-action
0891663bc55073747be0eb864fbec3727840945d
2026-03-19T19:15:41.773Z
github
aquasecurity
trivy-action
2e7964d59cd24d1fd2aa4d6a5f93b7f09ea96947
2026-03-19T19:15:41.235Z
github
aquasecurity
trivy-action
ddb9da4475c1cef7d5389062bdfdfbdbd1394648
2026-03-19T19:15:39.656Z
github
aquasecurity
trivy-action
4209dcadeaea6a7df69262fef1beeda940881d4d
2026-03-19T19:15:54.161Z
github
aquasecurity
trivy-action
f5c9fd927027beaa3760d2a84daa8b00e6e5ee21
2026-03-19T19:16:01.766Z
github
aquasecurity
trivy-action
18f01febc4c3cd70ce6b94b70e69ab866fc033f5
2026-03-19T19:16:01.467Z
github
aquasecurity
trivy-action
bb75a9059c2d5803db49e6ed6c6f7e0b367f96be
2026-03-19T19:16:02.678Z
github
aquasecurity
trivy-action
d488f4388ff4aa268906e25c2144f1433a4edec2
2026-03-19T19:16:05.760Z
github
aquasecurity
trivy-action
3c615ac0f29e743eda8863377f9776619fd2db76
2026-03-19T19:16:13.759Z
github
aquasecurity
trivy-action
a9bc513ea7989e3234b395cafb8ed5ccc3755636
2026-03-19T19:16:19.785Z
github
aquasecurity
trivy-action
8519037888b189f13047371758f7aed2283c6b58
2026-03-19T19:16:20.793Z
github
aquasecurity
trivy-action
2f10439b5f4d8577fd445381e0f652f31ad2c015
2026-03-19T19:16:19.035Z
github
aquasecurity
trivy-action
e3e396f2f88754f374f5f4f95f2eb27043800af5
2026-03-19T19:16:31.422Z
github
aquasecurity
trivy-action
633348e88993be4a9ffb03164f532ef3793d18b6
2026-03-19T19:16:32.038Z
github
aquasecurity
trivy-action
15f91e30aa0b49f11f8eed9980d123138de4c863
2026-03-19T19:16:31.035Z
github
aquasecurity
trivy-action
b9faa60f85f6f780a34b8d0faaf45b3e3966fdda
2026-03-19T19:27:12.878Z
github
aquasecurity
trivy-action
ab6606b76e5a054be08cab3d07da323e90e751e8
2026-03-19T19:27:14.766Z
github
aquasecurity
trivy-action
a5b4818debf2adbaba872aaffd6a0f64a26449fa
2026-03-19T19:27:20.670Z
github
aquasecurity
trivy-action
e53b0483d08da44da9dfe8a84bf2837e5163699b
2026-03-19T19:27:13.350Z
github
aquasecurity
trivy-action
8aa8af3ea1de8e968a3e49a40afb063692ab8eae
2026-03-19T19:27:24.323Z
github
aquasecurity
trivy-action
91d5e0a13afab54533a95f8019dd7530bd38a071
2026-03-19T19:27:23.376Z
github
aquasecurity
trivy-action
794b6d99daefd5e27ecb33e12691c4026739bf98
2026-03-19T19:27:25.336Z
github
aquasecurity
trivy-action
9ba3c3cd3b23d033cd91253a9e61a4bf59c8a670
2026-03-19T19:27:30.970Z
github
aquasecurity
trivy-action
e0198fd2b6e1679e36d32933941182d9afa82f6f
2026-03-19T19:27:34.838Z
github
aquasecurity
trivy-action
9738180dd24427b8824445dbbc23c30ffc1cb0d8
2026-03-19T19:27:37.528Z
github
aquasecurity
trivy-action
3201ddddd69a1419c6f1511a14c5945ba3217126
2026-03-19T19:27:37.739Z
github
aquasecurity
trivy-action
985447b035c447c1ed45f38fad7ca7a4254cb668
2026-03-19T19:28:19.711Z
github
aquasecurity
trivy-action
3d1b5be1589a83fc98b82781c263708b2eb3b47b
2026-03-19T19:28:31.412Z
github
aquasecurity
trivy-action
fd090040b5f584f4fcbe466878cb204d0735dcf4
2026-03-19T19:28:38.433Z
github
aquasecurity
trivy-action
85cb72f1e8ee5e6e44488cd6cbdbca94722f96ed
2026-03-19T19:28:43.158Z
github
aquasecurity
trivy-action
cf1692a1fc7a47120e6508309765db7e33477946
2026-03-19T19:28:43.860Z
github
aquasecurity
trivy-action
1d74e4cf63b7cf083cf92bf5923cf037f7011c6b
2026-03-19T19:28:50.014Z
github
aquasecurity
trivy-action
c19401b2f58dc6d2632cb473d44be98dd8292a93
2026-03-19T19:28:57.055Z
github
aquasecurity
trivy-action
7a8d78cd86dce3cc81c6c9df96009cad35795a31
2026-03-19T19:29:07.437Z
github
aquasecurity
trivy-action
1fb704d4205cceefef49e08d150dfddbb1c83a3f
2026-03-19T19:29:13.172Z
github
aquasecurity
trivy-action
ab8d94f4f4030f0e08fe058ede6bc62218ec9df0
2026-03-19T19:29:13.426Z
github
aquasecurity
trivy-action
e4e1a02b12157b2e55348ec3d0c8b84d2f76bce2
2026-03-19T19:29:23.143Z
github
aquasecurity
trivy-action
b219d22cc6f0b0d03cb6918c9dfacf2fd71f9f0b
2026-03-19T19:29:29.464Z
github
aquasecurity
trivy-action
24d5b52a5ac2b5c0a5aa755ce3ed6c6c14ea09a4
2026-03-19T19:29:34.663Z
github
aquasecurity
trivy-action
a0d03908400f6d233fae53e0e4d39fdf3df66136
2026-03-19T19:29:39.934Z
github
aquasecurity
trivy-action
8d6f77e4271f5d93020f13d4f52e0a1f682f1db7
2026-03-19T19:29:44.744Z
github
aquasecurity
trivy-action
fb58e54a83763c7b1e2efabfcbbe510820ef0f97
2026-03-19T19:29:52.042Z
github
aquasecurity
trivy-action
af822bc8c12f6a7e5bd34ea924eaef4f9653fb18
2026-03-19T19:30:00.399Z
github
aquasecurity
trivy-action
157c43c7ecda3f4cd25b2df33d4f257cd82f71d1
2026-03-19T19:30:00.783Z
github
aquasecurity
trivy-action
695ed6bceff6daa55e0bb6b58f1724f687c8e9bc
2026-03-19T19:30:07.571Z
github
aquasecurity
trivy-action
335fd95aaf82d4f5109c558755478f166e2da120
2026-03-19T19:30:12.452Z
github
aquasecurity
trivy-action
39f1d660af5f1d414756f90629aa4d7b64eb3dab
2026-03-19T19:30:12.155Z
github
aquasecurity
trivy-action
7ecb03dcf441fbc69fc9af93b2d3f95e1d3546af
2026-03-19T19:30:17.851Z
github
aquasecurity
trivy-action
d2775c1cb44d5b8e4d21dad38f0882d912f6e9dd
2026-03-19T19:30:24.927Z
github
aquasecurity
trivy-action
4414c5d81fa85eb0ed6f4c4e8a2ff7f0b242f7df
2026-03-19T19:30:29.969Z
github
aquasecurity
trivy-action
2cceb25e8410de0a15a4400fc1cf869e0f51ca89
2026-03-19T19:30:29.836Z
github
aquasecurity
trivy-action
c8e1df828a373f985d7145963ec7db1888770120
2026-03-19T19:30:35.388Z
github
aquasecurity
trivy-action
3e0406b8484fda87bcf3d232f2340cc8f3302d22
2026-03-19T19:30:40.898Z
github
aquasecurity
trivy-action
56672d1236e28295f0ef169f6f42f04792873dfc
2026-03-19T19:30:47.461Z
github
aquasecurity
trivy-action
da24190be9b7b7d225e41f143b4cdcc090a73c63
2026-03-19T19:30:55.184Z
github
aquasecurity
trivy-action
b2a4be1d6219f4cfc0fcbbabf7f6e70ce6b750e0
2026-03-19T19:30:55.142Z
github
aquasecurity
trivy-action
4c0d2e1f62d65a7c9f1f7ed6bf34108eb5a7f316
2026-03-19T19:31:04.215Z
github
aquasecurity
trivy-action
ea53a34dc436654695bf4bded564b7a182f5f0da
2026-03-19T19:31:11.837Z
github
aquasecurity
trivy-action
7f2ff4657bd0b5e707f5b3273b0dc7e7f0fd5945
2026-03-19T19:31:17.647Z
github
aquasecurity
trivy-action
ff15a1869aef8d77a913f495881e42c67afbb5b9
2026-03-19T19:31:22.981Z
github
aquasecurity
trivy-action
18cf0fbc2b63a4ad6ab9f1d609f47710e86be7d9
2026-03-19T19:31:23.573Z
github
aquasecurity
trivy-action
cba99f5f4bb02f50d380a4784d7540c2718f2f8e
2026-03-19T19:31:31.227Z
github
aquasecurity
trivy-action
a9c2ce8cc19da46808771d3b2e0c45dcd34367ad
2026-03-19T19:31:38.481Z
github
aquasecurity
trivy-action
df2f1ebf02f79922f7fe47f636b23e71448d1f70
2026-03-19T19:31:42.768Z
github
aquasecurity
trivy-action
f950638a4d62064924d42cd28b355f10df0d761d
2026-03-19T19:31:51.359Z
github
aquasecurity
trivy-action
b5aa8424e0b8db21dc8435850ecaa69abfb8f4ed
2026-03-19T19:31:57.117Z
github
aquasecurity
trivy-action
9dcd9f5a3d09aa09c1b20300b933df62f6522330
2026-03-19T19:31:57.683Z
github
aquasecurity
trivy-action
6f8621d4e25d210e7b8cc3c5baaf1b8eabfb93f3
2026-03-19T19:32:05.512Z
github
aquasecurity
trivy-action
f69fe0d6d24c4e3e2ad0c0876c9e564719524b48
2026-03-19T19:32:12.512Z
github
aquasecurity
trivy-action
2db7b0d4373b9749855a36fca0b290f2381336fc
2026-03-19T19:32:19.204Z
github
aquasecurity
trivy-action
cffefefa765f7bc9a4c3171643f7570300729968
2026-03-19T19:32:25.767Z
github
aquasecurity
trivy-action
dc6f85ca176e03d3e17ecbfe6537bb1b3b68b443
2026-03-19T19:32:25.273Z
github
aquasecurity
trivy-action
7076cb9c7194cc5f04f0f7212cae9011dadc22cc
2026-03-19T19:32:33.825Z
github
aquasecurity
trivy-action
cc9f0bf46f2af06ca2e1d130b8ab5cfdb530c6e1
2026-03-19T19:32:39.792Z
github
aquasecurity
trivy-action
f10f2e1891ad18beac5eca4f9bcf1cf58462f28e
2026-03-19T19:32:45.026Z
github
aquasecurity
trivy-action
44e2bf03b4c3e84fe486e412b7cb0d96c6d966f1
2026-03-19T19:32:50.922Z
github
aquasecurity
trivy-action
f1a2f80ca0f9ed58b9f930fc0b8d3c3d9ccf0da0
2026-03-19T19:32:57.693Z
github
aquasecurity
trivy-action
c5f9b9a42f0434067cb9d4dce219a0b6d8db14ed
2026-03-19T19:33:03.358Z
scan.aquasecurtiy.org - typosquatted domain which resolves to 45.148.10.212
What to Do if You Are Affected
Here’s what to do if you are affected:
Rotate all credentials. If you read so far, you can see that the infostealer targeted a wide variety of credentials. If you run a compromised version within your environment, you must treat mentioned credentials as compromised.
Check whether your organization pulled or executed Trivy v0.69.4 from any source. Remove any affected artifacts immediately.
Review all workflows using aquasecurity/trivy-action or aquasecurity/setup-trivy. Check workflow run logs from March 19–20, 2026 for signs of compromise.
Look for repositories named tpcp-docs in your GitHub organization. The presence of such a repository may indicate that the fallback exfiltration mechanism was triggered and secrets were successfully stolen.
GHSA-69fq-xp46-6x23: Security advisory with details regarding the incident provided by Aqua Security. If you suspect that you are affected, we strongly suggest you look at the advisory, since it contains important information such as the exposure window for affected components.