Attaque Supply Chain Trivy — Ce Qu'il Faut Savoir
Le 19 mars 2026, Trivy, le scanner de vulnérabilités d'Aqua Security utilisé par des millions de développeurs, a été compromis dans une attaque supply chain sophistiquée. TeamPCP, le groupe de menaces auto-identifié, a injecté un malware voleur de credentials dans les releases officielles, les GitHub Actions et les images Docker. Si vous utilisez Trivy, l'heure est à l'audit immédiat.
L'attaque a touché trois composants du projet Trivy : le scanner principal, l'action GitHub trivy-action et l'action setup-trivy. Les attaquants ont profité d'un accès conservé après une compromission précédente mal contenue plus tôt en mars. Ils ont créé des commits usurpés, se faisant passer pour des mainteneurs légitimes, et ont poussé le tag v0.69.4, déclenchant une release malveillante.
Le mécanisme d'infection reposait sur un domaine typosquatté. Le code malveillant récupérait un voleur de credentials depuis scan.aquasecurtiy[.]org, avec un 't' manquant dans aquasecurity. Ce domaine résolvait vers 45.148.10.212, un serveur contrôlé par les attaquants. Les binaires backdoorés ont été publiés sur GitHub Releases, Docker Hub, GHCR et ECR avant que les mainteneurs ne les retirent.
Le payload, auto-décrit comme TeamPCP Cloud Stealer, opère en trois étages. Premièrement, la collecte : le malware_scrappe_ la mémoire du processus Runner.Worker en lisant /proc/mem et en cherchant le pattern des secrets GitHub. Il balaie également le système de fichiers pour les clés SSH, les credentials cloud comme AWS, GCP et Azure, les tokens Kubernetes et les portefeuilles de cryptomonnaies sur plus de 50 chemins sensibles.
Deuxièmement, le chiffrement : les credentials récoltés sont chiffrés avec un système hybride AES-256-CBC et RSA-4096, puis empaquetés dans tpcp.tar.gz. Cette couche de chiffrement complique l'analyse forensique et suggère une opération mature.
Troisièmement, l'exfiltration : le bundle chiffré est transmis au domaine typosquatté. En fallback, le malware peut créer un dépôt tpcp-docs dans le compte GitHub de la victime et uploader les credentials volés comme asset de release. Cette redondance assure l'exfiltration même si le serveur C2 tombe.
L'attaque a touché 75 des 76 tags de trivy-action, force-pushed vers des versions malveillantes. Sept tags de setup-trivy ont subi le même sort. Les workflows GitHub Actions infectés s'exécutaient sur les runners des victimes, donnant aux attaquants accès aux secrets du repository, aux credentials de déploiement et aux tokens d'environnement.
Le 22 mars, les attaquants ont étendu leurs opérations à l'écosystème npm via un worm appelé CanisterWorm. Ce ver exploite les tokens de publication volés pour se propager. Le serveur C2 de fallback hébergé sur ICP sert maintenant un payload itérativement développé appelé kamikaze.sh. Vers 16h00 UTC, des images Docker malveillantes de Trivy en versions 0.69.5 et 0.69.6 ont été publiées sur Docker Hub. Les attaquants ont également démontré un accès continu chez Aqua en publiant des dépôts internes publiquement sur GitHub.
Pour les homelabs et les équipes DevOps, les leçons sont multiples. Premièrement, la confiance dans les outils de sécurité doit être remise en question. Trivy est conçu pour détecter les vulnérabilités, mais qui audite Trivy lui-même ? Les outils de sécurité deviennent des vecteurs d'attaque quand ils sont compromis.
Deuxièmement, la rotation des credentials doit être systématique. Si vous avez utilisé Trivy ou ses GitHub Actions entre le 19 et le 22 mars, tous les secrets potentiellement exposés doivent être révoqués : tokens GitHub, clés SSH, credentials cloud, tokens Kubernetes. L'attaque a eu trois jours pour opérer avant containment.
Troisièmement, la vérification des signatures et des checksums devrait être obligatoire. Les releases malveillantes étaient signées avec les clés GPG d'Aqua compromises. La confiance aveugle dans les canaux officiels ne suffit plus.
Quatrièmement, l'isolation des runners GitHub Actions limite l'impact. Les workflows exécutés sur des runners auto-hébergés exposent l'infrastructure interne. Les runners GitHub-hosted isolent l'attaque au repository, bien que les secrets restent vulnérables.
Cinquièmement, la surveillance des créations de dépôts inattendus peut détecter les compromissions. La création d'un dépôt tpcp-docs dans votre compte GitHub signale une infection active.
L'incident rappelle que la supply chain logicielle reste le maillon faible de la sécurité moderne. Les attaquants n'ont pas besoin d'exploiter des vulnérabilités zero-day quand ils peuvent compromettre les outils que nous installons volontairement. Trivy n'est que le dernier d'une série incluant SolarWinds, Codecov et event-stream. La question n'est pas si le prochain outil sera compromis, mais quand.