Une attaque de la chaîne d’approvisionnement ciblant les outils Checkmarx a exposé des environnements de développement.
Les attaquants ont publié des images Docker malveillantes et des extensions compromises capables de dérober des identifiants et d’autres données sensibles.
« Cette situation s’inscrit dans une tendance dangereuse qui s’est accélérée au cours du mois dernier : les pipelines CI/CD sont devenus le nouveau périmètre », a déclaré Eli Woodward, conseiller en renseignement sur les cybermenaces chez Team Cymru, dans un e-mail adressé à eSecurityPlanet.
Il a ajouté : « Plutôt que de recourir à des zero-days spectaculaires ou à des campagnes d’hameçonnage sophistiquées, TeamPCP abuse méthodiquement de ressources de confiance dans l’ensemble de nos écosystèmes technologiques. »
Au cœur de l’attaque de la chaîne d’approvisionnement de Checkmarx
La compromission concerne Keeping Infrastructure as Code Secure (KICS), un outil très répandu conçu pour analyser Terraform, Kubernetes, ainsi que d’autres fichiers de configuration cloud à la recherche de risques de sécurité.
Les chercheurs de Socket ont découvert que les attaquants avaient empoisonné les images officielles du dépôt Docker Hub checkmarx/kics en modifiant le binaire KICS inclus afin d’y intégrer des fonctions cachées de collecte de données.
Par conséquent, les résultats des analyses — qui contiennent souvent des détails de configuration sensibles, des identifiants ou des secrets — pouvaient être récupérés discrètement et transmis à une infrastructure contrôlée par les attaquants.
Le risque est amplifié, car KICS est couramment intégré aux pipelines CI/CD : des organisations ont donc pu exposer à leur insu des données d’infrastructure sensibles lors d’analyses automatisées de routine.
Plusieurs balises couramment utilisées, notamment v2.1.20, alpine, debian et latest, ont été temporairement redirigées vers des images malveillantes avant d’être restaurées.
Une balise v2.1.21 frauduleuse a également été introduite, bien qu’elle ne corresponde à aucune version amont légitime.
Extensions VS Code malveillantes et distribution de la charge utile
À mesure que l’enquête progressait, il est apparu clairement que l’incident ne se limitait pas aux images de conteneurs compromises.
Les chercheurs ont identifié un comportement suspect dans des extensions VS Code liées à Checkmarx, révélant une attaque coordonnée de plus grande ampleur contre la chaîne d’approvisionnement, menée sur plusieurs canaux de distribution.
Une analyse plus approfondie a révélé que certaines versions d’extensions — notamment 1.17.0 et 1.19.0 — contenaient une fonctionnalité cachée qui téléchargeait et exécutait une charge utile de seconde étape, mcpAddon.js, à l’aide de l’environnement d’exécution Bun.
La charge utile était récupérée depuis une URL GitHub codée en dur, liée à un commit antidaté et manipulé dans le dépôt de Checkmarx, ce qui permettait aux attaquants de s’appuyer sur une source de confiance pour échapper à la détection.
Vol d’identifiants et propagation de l’attaque
La charge utile mcpAddon.js fonctionne comme un collecteur d’identifiants complet, ciblant des données sensibles telles que les jetons GitHub, les identifiants cloud, les configurations npm, les clés SSH et les variables d’environnement.
Une fois collectées, les données sont compressées, chiffrées puis exfiltrées vers une infrastructure externe et des dépôts GitHub publics contrôlés par les attaquants, parfois au sein des comptes des victimes.
Dans certains cas, les métadonnées des dépôts et les messages de commit ont également servi de canaux de transit dissimulés.
Cette campagne constitue une compromission sophistiquée et en plusieurs étapes de la chaîne d’approvisionnement logicielle.
Elle combine des techniques telles que l’empoisonnement d’images Docker par réécriture de balises, la manipulation de l’historique Git au moyen de commits antidatés, l’exécution de code à distance via des extensions de développement et l’exploitation des pipelines CI/CD.
À l’aide d’identifiants GitHub dérobés, le logiciel malveillant se propage en identifiant les dépôts contenant des secrets, en créant de nouvelles branches et en injectant des workflows malveillants pour extraire ces secrets sous forme d’artefacts.
Ces workflows s’exécutent automatiquement lors d’un commit, puis sont supprimés afin de réduire la visibilité forensique, ce qui permet à l’attaque de s’étendre à plusieurs dépôts, organisations et pipelines.
Attribution et impact plus large
Les chercheurs ont confirmé l’existence d’une chaîne d’attaque opérationnelle, même si certains aspects de l’opération font encore l’objet d’une enquête active.
Un groupe d’acteurs malveillants connu sous le nom de TeamPCP revendique la responsabilité de l’incident.
Cette campagne semble également dépasser le seul périmètre des outils Checkmarx.
Des résultats distincts montrent que l’interface de ligne de commande Bitwarden a également été compromise via un vecteur GitHub Actions similaire, ce qui indique une attaque de la chaîne d’approvisionnement de plus grande ampleur visant les outils de développement et les pipelines CI/CD.
L’équipe de recherche de Socket continue également d’enquêter sur l’incident Bitwarden.
Comment réduire les risques liés à la chaîne d’approvisionnement
Les organisations doivent considérer cet incident comme un problème touchant la chaîne d’approvisionnement et l’exposition d’identifiants, plutôt que comme un simple problème lié aux outils.
Si le confinement immédiat est important, la réduction des risques à long terme dépend du renforcement des contrôles dans les pipelines CI/CD, les dépendances et la gestion des identités.
- Supprimez toutes les images Docker Checkmarx affectées, les extensions et les artefacts associés, puis remplacez-les par des versions vérifiées et de confiance, épinglées sur des condensats immuables.
- Faites tourner tous les identifiants potentiellement exposés, notamment les jetons GitHub, les identifiants cloud, les jetons npm, les clés SSH et les secrets CI/CD, et adoptez, lorsque cela est possible, des identifiants à durée de vie courte ou délivrés juste à temps.
- Auditez les environnements GitHub et CI/CD à la recherche de dépôts non autorisés, de workflows injectés, d’exécutions suspectes et de créations ou téléchargements inattendus d’artefacts.
- Renforcez les pipelines CI/CD en limitant la création de workflows, en restreignant les autorisations des jetons, en appliquant le principe du moindre privilège et en exigeant une approbation pour tout workflow nouveau ou modifié.
- Surveillez les points de terminaison, les systèmes de build et les environnements cloud à la recherche d’un comportement, notamment toute exécution inattendue à l’exécution (par exemple, Bun), tout accès à des identifiants et toute utilisation anormale de jetons.
- Renforcez la chaîne d’approvisionnement sur le plan de la sécurité en épinglant les dépendances, en vérifiant les artefacts, en appliquant des listes d’autorisation pour les registres et en mettant en place un suivi des SBOM pour assurer la visibilité.
- Testez les plans de réponse aux incidents au moyen de scénarios d’attaque de la chaîne d’approvisionnement afin de valider les capacités de détection, de confinement et de reprise.
Ces mesures aident les organisations à renforcer leur résilience face aux attaques de la chaîne d’approvisionnement tout en limitant l’ampleur potentielle des dégâts en cas de compromission.
L’évolution vers les menaces visant la chaîne d’approvisionnement
Cet incident illustre une évolution plus générale de l’attention des attaquants vers la chaîne d’approvisionnement logicielle, où la compromission d’outils de confiance peut donner accès à plusieurs environnements depuis un seul point d’entrée.
Il met également en évidence l’importance des attaques fondées sur les identifiants, dans lesquelles des jetons, des clés et des secrets dérobés permettent de maintenir la persistance et de se déplacer entre les systèmes, les pipelines et les environnements cloud.
C’est pourquoi les organisations utilisent des solutions zero trust pour les aider à gérer la confiance et à limiter l’ampleur des dégâts lors d’incidents touchant la chaîne d’approvisionnement.

