Selon Socket (socket.dev), une nouvelle attaque de chaîne d’approvisionnement visant l’écosystème Trivy a été détectée à partir d’environ 19:15 UTC, distincte du précédent incident OpenVSX/VS Code. L’attaque cible l’action GitHub officielle aquasecurity/trivy-action et transforme des références de versions largement utilisées en vecteur de distribution d’un infostealer.

L’acteur a force-push 75 des 76 tags de version du dépôt aquasecurity/trivy-action afin de les faire pointer vers de nouveaux commits malveillants, tout en conservant une apparence légitime via des métadonnées spoofées. Plus de 10 000 workflows GitHub référencent ces tags, amplifiant le rayon d’impact. Les tags compromis « restent actifs » au moment de la rédaction. Le tag 0.35.0 est le seul non empoisonné, car il pointe déjà vers le commit parent utilisé par l’attaquant (57a97c7e). Des indices de fraude incluent l’absence de signatures GPG d’origine, des dates incohérentes (dates anciennes avec un parent de mars 2026) et des commits ne modifiant que entrypoint.sh. Des « releases immuables » ont été publiées lors du poisonnement, compliquant le rétablissement. Homebrew a déjà amorcé des retours arrière.

Le payload malveillant (entrypoint.sh, ~204 lignes) exécute d’abord l’infostealer (lignes 4–105) puis la véritable analyse Trivy (lignes 106–204), masquant l’attaque. Trois phases sont décrites : 1) Collecte des secrets (variables d’environnement, SSH, etc.), avec sur runners GitHub hébergés un dump mémoire de Runner.Worker via sudo pour extraire des secrets en clair; sur runners auto-hébergés/OS non Linux, un stealer Python (« TeamPCP Cloud stealer ») moissonne largement fichiers et configurations sensibles (SSH, cloud AWS/GCP/Azure, Kubernetes, Docker, fichiers .env, DB, gestionnaires de paquets, CI/CD, clés TLS, VPN, webhooks, historiques shell, système, wallets crypto). 2) Chiffrement hybride des données (AES‑256‑CBC + clé de session enveloppée en RSA‑4096 OAEP). 3) Exfiltration vers un domaine typosquatté (scan.aquasecurtiy.org), avec repli utilisant un PAT GitHub fourni par la victime pour créer un repo public « tpcp-docs » et y publier l’archive en asset de release.

Socket a généré 182 alertes en temps réel et classe les actions malveillantes comme Backdoor/Infostealer/Reconnaissance. Il s’agit du deuxième incident supply chain lié à Trivy en mars (après la compromission de l’extension VS Code via OpenVSX). L’attaque s’attribue elle‑même à TeamPCP (DeadCatx3/PCPcat/ShellForce) dans un commentaire du stealer, avec un chevauchement technique jugé plausible. Le rapport souligne que GitHub recommande le pin sur SHA comme seul mode réellement immuable, et indique que les pipelines ayant exécuté un tag empoisonné doivent être considérés comme compromis.

IOCs et TTPs

  • Réseau: scan[.]aquasecurtiy[.]org (typosquat de aquasecurity.org)
  • Hash fichier: SHA256 18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671a (entrypoint.sh)
  • Versions compromises: aquasecurity/trivy-action @ 0.0.1 → 0.34.2 (75 tags, ex. @0.18.0, @0.33.0, @0.34.2) ; seul @0.35.0 non affecté
  • TTPs clés: accès aux identifiants du projet, réécriture de tags Git (force-push) avec métadonnées spoofées; absence de signature GPG; détournement de « releases immuables »; Credential Access via scraping d’environnements et dump /proc//mem avec sudo; moissonnage fichiers/IMDS cloud; chiffrement AES‑256‑CBC + RSA‑4096 OAEP; exfiltration HTTPS vers domaine typosquatté; repli GitHub PAT (création repo tpcp-docs + asset release); effacement de traces temporaires.

Type d’article : analyse technique détaillée d’une compromission supply chain sur GitHub Actions visant à documenter le mécanisme d’attaque, l’impact, les IOCs et les TTPs.

🧠 TTPs et IOCs détectés

TTP

Backdoor/Infostealer/Reconnaissance, Credential Access via scraping d’environnements et dump /proc//mem avec sudo, moissonnage fichiers/IMDS cloud, chiffrement AES‑256‑CBC + RSA‑4096 OAEP, exfiltration HTTPS vers domaine typosquatté, repli GitHub PAT (création repo tpcp-docs + asset release), réécriture de tags Git (force-push) avec métadonnées spoofées, absence de signature GPG, détournement de releases immuables

IOC

scan.aquasecurtiy.org, SHA256 18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671a


🔗 Source originale : https://socket.dev/blog/trivy-under-attack-again-github-actions-compromise