Une attaque majeure de la chaîne d'approvisionnement attribuée à l'acteur malveillant « TeamPCP » a compromis le scanner de vulnérabilités Trivy d'Aqua Security ainsi qu'au moins deux autres frameworks à partir du 19 mars 2026, injectant un malware de vol d'identifiants en détournant la fonctionnalité de balises (tags) de dépôt GitHub pour pirater les pipelines CI/CD. La campagne a transformé des outils de sécurité de confiance en vecteurs de vol massif d'identifiants, ciblant les secrets des trois principaux fournisseurs de cloud.
« Cette activité s'est depuis étendue à d'autres frameworks, notamment Checkmarx KICS et LiteLLM », a déclaré l'équipe Defender for Cloud de Microsoft dans un blog de sécurité, notant que la chaîne d'attaque principale restait similaire dans chaque vague. « Chaque vague a utilisé un nouveau domaine C2 thématique lié au projet compromis. »
Les attaquants ont forcé la mise à jour (force-push) de 76 des 77 tags de version dans le dépôt GitHub aquasecurity/trivy-action et des sept tags dans aquasecurity/setup-trivy, les redirigeant vers du code malveillant. Un binaire Trivy malveillant, version 0.69.4, a également été publié sur les canaux officiels. Le malware a exfiltré des identifiants cloud pour AWS, GCP et Azure, ainsi que des secrets Kubernetes, vers des domaines typosquattés comme scan.aquasecurtiy[.]org.
l'attaque transforme des outils de sécurité et de développement fiables en menaces internes, créant un risque significatif pour toute organisation utilisant des pipelines CI/CD automatisés avec les versions compromises. L'accent mis sur la récolte massive d'identifiants suggère que l'objectif de l'acteur est d'obtenir un accès étendu à l'infrastructure cloud pour des attaques ultérieures, le rayon d'impact total étant toujours en cours d'investigation.
l'attaque a exploité une caractéristique de conception fondamentale de Git : les tags mutables. Par défaut, un tag — une étiquette pointant vers une version spécifique d'un logiciel — peut être réassigné par toute personne ayant accès en écriture à un dépôt. L'acteur malveillant a utilisé des identifiants compromis pour re-tagger 76 versions existantes de trivy-action et toutes les versions de setup-trivy, les faisant pointer vers de nouveaux commits contenant la charge utile malveillante.
Les flux de travail CI/CD en aval qui référençaient ces actions par tag de version ont automatiquement récupéré le code de l'attaquant lors de leur prochaine exécution, sans aucun changement visible dans l'interface utilisateur de GitHub pour alerter les développeurs. L'acteur a également usurpé l'identité des commits, faisant paraître les commits malveillants légitimes, une tactique déjà vue dans d'autres attaques de la chaîne d'approvisionnement. Cette méthode contourne les vérifications de version classiques et permet au malware de se propager silencieusement.
Un casse d'identifiants en plusieurs étapes
Une fois exécuté dans un exécuteur CI/CD, le malware a commencé une opération de récolte d'identifiants à large spectre. Après avoir identifié la machine hôte, un programme de vol basé sur Python a recherché des identifiants pour Amazon Web Services, Google Cloud Platform et Microsoft Azure, en interrogeant à la fois les variables d'environnement et les services de métadonnées d'instance.
Le malware ne s'est pas arrêté aux clés cloud. Il a également énuméré et exfiltré des secrets Kubernetes, fouillé le système de fichiers pour trouver des clés API dans les fichiers de configuration et récolté des URL de webhook Slack et Discord. Les données volées ont été cryptées dans une archive tpcp.tar.gz et envoyées via HTTP POST à un serveur contrôlé par l'attaquant. Pour masquer la compromission, le malware exécutait ensuite le scanner Trivy légitime, permettant au pipeline de se terminer avec succès avec la sortie attendue.
Atténuation et versions affectées
Les organisations sont instamment priées d'auditer immédiatement leurs pipelines CI/CD et de s'assurer qu'elles utilisent des versions sûres et vérifiées des outils affectés. Le blocage des actions sur des SHA de commit immuables au lieu de tags de version mutables est la mesure préventive la plus critique.
Microsoft a fourni le tableau suivant des produits affectés et des versions minimales sûres à utiliser :
| Produit | Composant | Version sûre |
|---|
| Trivy | Binaire Trivy | v0.69.2 – v0.69.3 |
| trivy-action | v0.35.0 |
| setup-trivy | v0.2.6 |
| LiteLLM | litellm | v1.82.6 et moins |
| Checkmarx | checkmarx.cx-dev-assist | 1.10.0 et plus |
| checkmarx.ast-results | 2.56.0 et plus |
| ast-github-action | 2.3.33 |
| kics-github-action | 2.1.20 |
Les équipes de sécurité peuvent également rechercher des indicateurs de compromission. Les clients de Microsoft Defender peuvent utiliser des requêtes de recherche avancée pour trouver des commandes malveillantes, des requêtes DNS suspectes vers des domaines d'attaquants et l'énumération de secrets Kubernetes. Par exemple, la requête suivante peut aider à identifier les lignes de commande associées aux attaques de TeamPCP :
CloudProcessEvents | where ProcessCommandLine has_any ('scan.aquasecurtiy.org','checkmarx.zone','tpcp.tar.gz')
Cet incident rappelle de manière cruciale la fragilité de la chaîne d'approvisionnement logicielle. Pour les investisseurs, il souligne les risques opérationnels et financiers pour les entreprises dépendant fortement des logiciels open-source sans processus de vérification rigoureux. Les entreprises utilisant des outils compromis pourraient faire face à des coûts de remédiation importants, à des responsabilités potentielles en cas de violation de données et à une perte de confiance des clients, impactant la performance de leur action. À l'inverse, l'événement peut agir comme un vent arrière pour des entreprises de cybersécurité comme Palo Alto Networks (PANW) ou CrowdStrike (CRWD) qui se spécialisent dans la sécurité de la chaîne d'approvisionnement et la protection des charges de travail cloud.
Cet article est à titre informatif uniquement et ne constitue pas un conseil en investissement.