Sophos X-Ops a obtenu des informations selon lesquelles deux outils de développement largement utilisés, le scanner de sécurité Checkmarx KICS et l'interface de ligne de commande (CLI) Bitwarden, ont été piratés le 22 avril 2026 afin de voler des identifiants dans des environnements de développement.
Ces attaques se sont produites à quelques heures d'intervalle et partagent le même domaine command-and-control (C2), ce qui pourrait indiquer qu'un seul et même acteur malveillant a mené une campagne coordonnée.
Les deux éditeurs auraient depuis lors maîtrisé les incidents. Cet article détaille les évènements ayant eu lieu, les éléments volés et ce que les défenseurs doivent faire maintenant. Les protections Sophos sont en place pour les deux types d'intrusion ; les détections et les indicateurs sont inclus à la fin de cet article.
Que savons-nous à propos de ce piratage ?
Un acteur malveillant a compromis les pipelines et les canaux de distribution de deux éditeurs d'outils de développement, apparemment le même jour. Des versions malveillantes de Checkmarx KICS (distribuées via Docker Hub, Open VSX et GitHub Actions) et de l'interface de ligne de commande Bitwarden (distribuée via npm) ont été distribuées via les canaux officiels et présentées comme des versions légitimes.
Les deux charges virales malveillantes ont tenté de collecter les informations sensibles suivantes :
- Jetons GitHub et npm.
- Clés SSH.
- Identifiants du fournisseur Cloud.
- Configurations de l'assistant IA.
De plus, les deux charges virales ont tenté d'exfiltrer des données volées vers audit.checkmarx[.]cx (94.154.172[.]43).
Il convient de noter que, le mois dernier, un acteur malveillant connu sous le nom de TeamPCP a compromis GitHub Actions de Checkmarx concernant deux dépôts, en exploitant apparemment des secrets CI/CD volés précédemment. Les dépôts de Trivy, Telnyx et LiteLLM auraient également été touchés lors de ces attaques.
Pour le moment, nous ne disposons d'aucun renseignement permettant de suggérer que les attaques les plus récentes soient liées à cette campagne.
Incident 1 : Checkmarx KICS
Checkmarx KICS est un scanner de sécurité open source de type infrastructure-as-code largement utilisé dans les pipelines CI/CD. Le 22 avril, un attaquant a diffusé des éléments malveillants via trois canaux de distribution :
- Docker Hub : le dépôt checkmarx/kics, qui compte plus de cinq millions de pulls cumulés, a reçu des images altérées sous les étiquettes v2.1.20-debian, v2.1.20, debian, alpine et versions ultérieures, ainsi qu'une étiquette nouvellement introduite v2.1.21. Dans chaque image, le binaire KICS ELF basé sur Go avait été modifié pour ajouter une télémétrie non autorisée et une routine d'exfiltration qui chiffrait les rapports d'analyse et les envoyait vers le système endpoint de l'attaquant.
- Ouverture des extensions VSX / VS Code : deux extensions officielles de Checkmarx auraient été altérées : checkmarx/cx-dev-assist (versions 1.17.0 et 1.19.0) et checkmarx/ast-results (versions 2.63.0 et 2.66.0). Le nombre total d'installations dépassait 1 000 au moment de l'analyse. L'attaquant a ajouté une fonctionnalité cachée « MCP addon » qui récupérait une charge virale d'environ 10 Mo (mcpAddon.js) à partir d'une URL GitHub hardcodée et l'exécutait via un runtime Bun lors de l'activation de l'extension. Il est à noter que l'attaquant a manipulé l'historique Git pour antidater le commit d'introduction à 2022, faisant ainsi apparaître la fonctionnalité malveillante comme un code établi de longue date.
- GitHub Actions : le dépôt ast-github-action a été étiqueté avec une version malveillante (2.3.35) contenant la même logique de vol d'identifiants.
mcpAddon.js est conçu pour analyser les environnements de développement à la recherche de secrets de grande valeur, notamment les jetons GitHub, les jetons npm, les identifiants AWS/Azure/GCP, les clés SSH, les variables d'environnement et les fichiers de configuration de Claude et d'autres outils IA. Ces données collectées sont ensuite exfiltrées vers hxxps://audit[.]checkmarx[.]cx/v1/telemetry.
Incident 2 : Bitwarden CLI
Le 22 avril également, un attaquant a compromis un GitHub Action utilisé dans le pipeline CI/CD de Bitwarden et a publié une version 2026.4.0 de @bitwarden/cli infectée par un cheval de Troie sur npm. Le paquet malveillant est resté actif pendant environ 90 minutes, entre 17h57 et 19h30 ET, avant d'être retiré. Ce logiciel enregistre plus de 70 000 téléchargements par semaine.
Il existe des similitudes avec la charge virale Checkmarx décrite ci-dessus. Un hook de préinstallation a invoqué un chargeur/loader (bw_setup.js) qui a téléchargé un runtime Bun et a lancé une charge virale de type second-stage obfusquée (bw1.js). Cette charge virale ciblait des actifs similaires (jetons GitHub et npm, clés SSH, historique Shell, identifiants Cloud et configurations d'outils IA pour Claude, Cursor et Aider), puis chiffrait les données collectées avec AES-256-GCM et les exfiltrait vers le même système endpoint audit.checkmarx[.]cx.
Deux caractéristiques de cette charge virale se distinguent. Tout d'abord, les jetons GitHub volés ont été utilisés de manière malveillante en ligne : la charge virale les a utilisés pour injecter des flux de travail malveillants dans les dépôts des victimes, donnant ainsi à l'attaquant un point d'ancrage durable et un moyen automatisé de se propager davantage. Deuxièmement, l'attaquant a créé des dépôts publics dans les comptes GitHub de la victime et y a stocké les données volées chiffrées, utilisant ainsi l'infrastructure de la victime comme un dead drop.
À notre connaissance, seul le package npm de l'interface de ligne de commande a été affecté ; les extensions de navigateur Bitwarden, les applications desktop et mobiles ainsi que les données du coffre-fort utilisateur n'ont pas été compromises.
Implications
Ces attaques ont ciblé des outils dans lesquels la confiance joue un rôle central : un scanner de sécurité et un gestionnaire de mots de passe. Les deux se déroulent dans des contextes très privilégiés, où les identifiants sont abondants et où le contrôle du comportement des outils peut être faible. Un identifiant Cloud volé ou un jeton GitHub à longue durée de vie récupéré sur la machine d'un développeur constitue une porte d'entrée potentielle pour toute une infrastructure de production.
Le C2 partagé, les similitudes de charge virale et le ciblage délibéré des configurations d'assistant IA (configurations Claude, Cursor, Aider et MCP) pourraient indiquer un acteur malveillant qui comprend les environnements de développement modernes et collecte des données en vue d'un changement de stratégie ultérieur.
Que faire maintenant ?
Si votre organisation a utilisé l'un des éléments concernés pendant la période décrite, considérez les hôtes concernés comme compromis et agissez en conséquence :
- Supprimez immédiatement les versions malveillantes : épinglez ou rétrogradez vers des versions stables connues, reconstruisez toutes les images de conteneur dérivées des balises KICS affectées et purgez les caches.
- Effectuez une rotation des identifiants : les jetons GitHub et npm, les clés des fournisseurs Cloud (AWS, Azure, GCP), les clés SSH et tous les secrets CI/CD qui pourraient avoir été présents sur les hôtes affectés doivent être considérés comme compromis. Effectuez une rotation et vérifiez qu'elles ne sont pas utilisées à partir d'adresses IP inconnues.
- Auditez GitHub pour détecter les flux de travail injectés et les dépôts inattendus : le malware Bitwarden a, à la fois, modifié les flux de travail existants et créé de nouveaux référentiels publics dans les comptes des victimes. Examinez l'historique des flux de travail et la liste des référentiels pour identifier les comptes auxquels un jeton compromis pourrait accéder.
- Activez l'authentification multifacteur (MFA) sur le registre des paquets et les comptes Cloud partout où elle n'est pas déjà activée.
- Vérifiez les configurations de l'assistant IA : si des fichiers de configuration Claude, Cursor, Aider ou MCP étaient présents sur un hôte affecté, considérez que leur contenu a été exfiltré. Effectuez une rotation de tous les secrets intégrés.
Des informations complémentaires sont disponibles dans l’avis de sécurité de Checkmarx et la déclaration de Bitwarden.
Les protections de Sophos
Sophos a mis en place les protections suivantes concernant les attaques décrites :
- JS/Steal-EAP
- JS/Agent-BLZZ
- Linux/Agnt-HZ
L'infrastructure C2 de l'attaquant connu est bloquée dans tous les produits Sophos. Nos équipes MDR (Managed Detection and Response) mènent des chasses aux menaces.
Indicateurs de compromission
Artefacts concernés
- Docker Hub : checkmarx/kics, étiquettes v2.1.20-debian, v2.1.20, debian, alpine, et versions ultérieures, v2.1.21.
- Open VSX : checkmarx/cx-dev-assist versions 1.17.0, 1.19.0.
- Open VSX : checkmarx/ast-results versions 2.63.0, 2.66.0.
- GitHub Actions : ast-github-action tag 2.3.35.
- npm : @bitwarden/cli version 2026.4.0 (live 17:57–19:30 ET, April 22, 2026)
Réseau/Network
- audit[.]checkmarx[.]cx
- 94.154.172[.]43
- hxxps://audit.checkmarx[.]cx/v1/telemetry
Sophos X-Ops continue de suivre cette campagne et mettra à jour cet article dès que de nouvelles informations seront disponibles.
Billet inspiré de Supply chain attacks hit Checkmarx and Bitwarden developer tools, sur le Blog Sophos.

