28. avril 2026 | Imprimer l'article |

Attaque de la chaîne d’approvisionnement via GitHub Actions contre Bitwarden CLI

7 min de lecture

L’affaire de la CLI Bitwarden du 22 avril 2026 n’est pas une panne de bibliothèque, mais un problème de pipeline. La GitHub Action compromise checkmarx/ast-github-action a rendu accessibles à l’attaque les tokens et le matériel de build propres à Bitwarden — et a ainsi distribué brièvement @bitwarden/cli@2026.4.0 sur npm. Les responsables de la DevSecOps en région DACH ne vérifient désormais plus la CLI elle-même, mais plutôt les machines de build qui l’entourent.

Les points clés en bref

  • L’affaire. Entre 23h57 et 1h30 CEST dans la nuit du 22 au 23 avril 2026, une version compromise de @bitwarden/cli@2026.4.0 était disponible sur npm. Bitwarden a depuis déprécié cette version.
  • La cause profonde. Une action tierce compromise dans le cadre de l’affaire Checkmarx plus large, nommée checkmarx/ast-github-action, intégrée au workflow GitHub de Bitwarden, a exfiltré des secrets de workflow.
  • Les conséquences. Le payload bw1.js a recueilli lors de l’installation sur npm des tokens GitHub/npm, des clés SSH, des variables d’environnement ainsi que des identifiants cloud. Selon Bitwarden, les données du coffre-fort des utilisateurs finaux n’ont pas été compromises.
  • Les contrôles obligatoires. Inventaire des runners CI, fixation des hash pour les actions tierces, audit des fichiers lock et du cache, rotation des tokens, filtres d’égress sur les runners de build.

Qu’est-ce qu’une attaque par chaîne d’approvisionnement via GitHub Actions ? Une attaque par chaîne d’approvisionnement via GitHub Actions est une catégorie d’attaques où les cybercriminels ne compromettent pas directement le paquet logiciel livré, mais une action tierce intégrée au workflow de build. Cette action, lorsqu’elle est exécutée, obtient l’accès à des secrets de workflow (tokens, identifiants cloud) qu’elle peut exfiltrer vers un point final contrôlé par l’attaquant. Grâce aux tokens volés, il devient possible de manipuler des releases, de remplir des référentiels tiers ou de prendre le contrôle de ressources cloud — sans que l’utilisateur final ne s’en aperçoive avant que le paquet ainsi construit ne soit visible sur le canal de distribution.

Pourquoi cet incident est un incident de pipeline, et non un incident de CLI

La version médiatique de l’incident Bitwarden est réduite : un gestionnaire de mots de passe en CLI aurait été compromis, mettant ainsi les données du Vault en péril. Ce n’est toutefois pas ce qui s’est passé. La déclaration officielle de Bitwarden confirme un canal de distribution de 93 minutes via npm et exclut explicitement tout accès aux contenus du Vault. Le véritable problème se situe une couche plus basse – dans le workflow CI/CD qui a construit et publié la CLI.

Le dépôt GitHub de Bitwarden utilise, comme de nombreux stacks DevSecOps, une action tierce nommée checkmarx/ast-github-action pour l’analyse statique. Cette action avait été préparée dans le cadre d’une campagne plus large de vérification des chaînes d’approvisionnement Checkmarx et avait exfiltré des secrets de workflow. Grâce aux tokens obtenus, l’attaquant a brièvement infiltré le job de publication et a déposé une version modifiée de la version 2026.4.0 sur le canal npm. Des chercheurs en sécurité de Socket, Endor Labs et Palo Alto Networks ont indépendamment retrouvé le mécanisme : le payload bw1.js collectait, lors du hook d’installation, les tokens GitHub et npm, les clés SSH, l’historique de shell ainsi que les credentials cloud, puis les envoyait chiffrés avec AES-256-GCM à la domaine imité audit.checkmarx.cx.

Pour les responsables DACH, cela signifie que toute organisation utilisant GitHub Actions est potentiellement exposée de la même manière – indépendamment du fait que la CLI Bitwarden soit intégrée au stack. L’attaque ne vise pas le package publié, mais plutôt le point du workflow où une étape tierce obtient accès aux secrets du job. Pour ceux qui exploitent des workflows GitHub avec des références uses:- sans pinning de hash, chaque exécution charge le dernier état de l’action externe – y compris une compromission qui peut avoir lieu entre deux builds.

93 minutes
Période de distribution du @bitwarden/cli@2026.4.0 manipulé sur npm. Pendant cette période, chaque exécution CI non surveillée qui installait la CLI comme dépendance a téléchargé le payload préparé.
Source : Déclaration de Bitwarden sur l’incident de chaîne d’approvisionnement Checkmarx, 23 avril 2026

Trois couches que les équipes DevSecOps doivent désormais traverser

Le processus d’analyse se déroule de manière pragmatique en trois étapes. Quels étaient réellement les flux sur les runners de build au cours des dernières semaines ? Quels secrets étaient alors disponibles ? Quelles étapes de tiers fournisseurs avaient un accès en lecture ou en écriture au contexte du workflow ? Ce n’est qu’après avoir répondu à ces trois questions que l’on procède à l’analyse des fichiers de version et de verrouillage de la CLI.

La première couche est l’inventaire des runners CI. Chaque runner de build ayant exécuté des workflows entre le 22 avril au soir et le 24 avril à midi doit figurer dans une liste indiquant l’ID de l’exécution, le nom du job, les actions impliquées ainsi que l’image du conteneur lancée. Les runners auto-hébergés sont particulièrement critiques, car ils conservent un état entre les jobs : si un workflow préparé a écrit des jetons dans le cache du runner, ces derniers y demeurent même après le nettoyage effectué par Bitwarden. Les runners hébergés par GitHub sont éphémères, mais les journaux d’exécution y révèlent également les versions des actions chargées.

La deuxième couche est le répertoire des secrets. Les jetons référencés dans un job concerné sont considérés comme compromis, même si ce job s’est exécuté sans problème. Cela inclut les secrets des dépôts, des organisations et des environnements, les jetons OIDC-Issuer, les jetons de publication npm, les GitHub PAT ainsi que les identifiants cloud intégrés au job via la fédération. La rotation ne doit pas être menée de façon panique, mais elle doit suivre un ordre documenté, car les jetons rotés peuvent encore être utilisés simultanément dans les systèmes de production.

La troisième couche est l’inventaire des actions. Quelles actions de tiers fournisseurs sont utilisées dans nos propres workflows ? Parmi celles-ci, quelles sont référencées par tag (@v3) et lesquelles par hash ? Le pinning par tag fonctionne comme une versionnage, mais il n’offre aucune garantie : un attaquant disposant d’un accès en tant que mainteneur peut modifier le tag pour qu’il pointe vers un commit compromis. En revanche, le pinning par hash fige l’action sur une SHA de commit précise et exclut ce type d’attaque.

Ordre de vérification immédiate pour les équipes DevSecOps de la région DACH

1. Exporter les journaux d’audit GitHub des sept derniers jours et rechercher les pushs de fichiers de workflow ainsi que l’utilisation de jetons d’actions vers des domaines externes. 2. Supprimer checkmarx/ast-github-action de chaque workflow ou la fixer sur une SHA de commit antérieure au 22 avril. 3. Effectuer la rotation de tous les secrets des dépôts, des organisations et des environnements qui ont été référencés dans un workflow entre le 22 et le 24 avril. 4. Vérifier les fichiers lockfile npm avec @bitwarden/cli@2026.4.0 et, en cas de correspondance, revenir à une version antérieure. 5. Activer la règle SIEM signalant les connexions vers audit.checkmarx.cx.

Ce qui fonctionne immédiatement – et ce qui n’offre qu’une fausse sécurité

La communauté DevSecOps débat depuis plusieurs jours des mesures réellement efficaces. Certains réflexes sont opérationnellement justes, tandis que d’autres procurent un faux sentiment de sécurité. L’évaluation suivante distingue les mesures obligatoires des simples souhaits.

Efficace immédiatement

  • Épinglage par hachage (Hash-Pinning) pour chaque action tierce (uses: checkmarx/ast-github-action@<sha>)
  • Fédération OIDC au lieu de jetons cloud à longue durée de vie dans les workflows
  • npm ci –ignore-scripts comme valeur par défaut dans les pipelines CI
  • Filtres de sortie (Egress) sur les runners de build (liste blanche pour le registre, le miroir et vos propres domaines)
  • TTL des jetons inférieure au cycle de build typique

Sécurité illusoire

  • Épinglage par tag sans hachage (le tag peut être réattribué)
  • Revue de code en deux étapes sans protection de branche sur les fichiers de workflow
  • Solutions Vault sans durcissement des runners de build
  • Rapports SBOM affichant uniquement les dépendances d’exécution
  • Scanners statiques sans visibilité sur vos propres fichiers de workflow

La mesure immédiate la plus efficace consiste à séparer les étapes de build qui chargent des actions externes de celles qui nécessitent des secrets. Dans le modèle simple, cela signifie : le linting, l’analyse statique et l’analyse des dépendances s’exécutent dans un job sans bloc secrets:, tandis que l’étape de publication se déroule dans un second job avec des jetons minimaux et aucune action externe, hormis celles maintenues par GitHub lui-même. La plupart des workflows combinent les deux pour des raisons historiques, sans que cela soit techniquement nécessaire.

Au niveau architectural, la fédération OIDC deviendra une norme obligatoire dans les 12 prochains mois. L’effet est radical : les identifiants cloud n’existent plus sous forme de valeurs stockées dans le workflow, mais sont émis de manière éphémère par le fournisseur cloud pour chaque exécution. Un attaquant qui compromet une seule exécution ne dispose plus ensuite d’un accès réutilisable. L’effort de migration correspond généralement à une journée-personne par compte cloud, plus l’audit des conditions de confiance – un coût dérisoire comparé aux dommages causés par une fuite de jeton.

« L’enseignement tiré de 2026 n’est pas que les actions tierces doivent être interdites. La leçon à retenir est que chaque action externe exige le même degré de rigueur qu’une bibliothèque d’exécution – y compris l’épinglage, la revue lors des mises à jour de version et la télémétrie sur ce qu’elle fait réellement dans le workflow. »

– Consensus de plusieurs responsables DevSecOps de la région DACH lors de tables rondes sectorielles consacrées à l’analyse de l’incident

Ce que l’incident signifie pour les stratégies de coffre-fort et de secrets

La question réflexe dans de nombreux équipes de sécurité DACH est : allons-nous remplacer Bitwarden ? Cette question ne répond pas au problème. L’incident ne dit rien sur la sécurité de l’infrastructure serveur de Bitwarden ou du chiffrement du coffre-fort. Il dit quelque chose sur la pipeline de construction et de distribution. C’est précisément cette pipeline qui est un point d’entrée potentiel pour chaque fournisseur open-source ou closed-source sérieux.

Ce qui change, c’est la façon dont les stratégies de secrets sont protégées contre les risques CI/CD. Trois ajustements que nous voyons chez les équipes qui traitent correctement l’incident. Premièrement : les outils CLI pour l’accès aux secrets ne s’exécutent plus que sur des exécuteurs dédiés avec leurs propres règles de sortie, et non dans les pools CI généraux. Deuxièmement : les jetons de coffre-fort utilisés dans les pipelines reçoivent des étendues par référentiel et des TTL inférieurs à la durée de construction moyenne. Troisièmement : chaque accès au coffre-fort à partir d’un workflow génère un événement d’audit qui est intégré au monitoring de la sécurité – et non seulement dans le journal propre du coffre-fort.

Opérationnellement, ce n’est pas trivial. La portée des jetons augmente les coûts de maintenance par référentiel, les exécuteurs dédiés coûtent plus cher pour l’exploitation CI, les flux d’audit nécessitent des analyseurs. Ceux qui ont évité les coûts avant l’incident voient maintenant le coût comptabilisé : un seul workflow compromis peut dévaluer un paysage de jetons complet. L’investissement dans le durcissement des pipelines se justifie dans les branches avec des obligations DORA, NIS2 ou KRITIS, car ces exigences d’audit demandent des contrôles similaires.

Une question secondaire concerne la gestion de la CLI elle-même. La CLI Bitwarden reste pour de nombreuses équipes la connexion la plus efficace au coffre-fort à partir de scripts et de CI. La recommandation n’est pas d’abandonner la CLI, mais de contrôler sa source : pas d’installations npm directes à partir de pipelines de production, mais distribution via un miroir interne qui libère les versions. Ceux qui soupçonnent une fuite de jeton regardent d’abord dans ~/.bw-state.json et dans les journaux du serveur du coffre-fort pour des modèles de lecture inhabituels – et non dans la binaire CLI elle-même.

Ce qui reste – et ce que la prochaine vague apportera

L’incident Bitwarden fait partie d’une série. L’attaque Trivy en mars, le détournement de npm Maintainer chez Axios début avril et la faille de sécurité Vercel via Context.ai-OAuth appartiennent à la même catégorie : des attaques contre les chaînes d’approvisionnement qui ne passent pas par le produit fini, mais par l’atelier. Ceux qui sont responsables de la DevSecOps DACH doivent modéliser cette classe comme une axe de menace propre – distincte des sujets de vulnérabilité et de point de terminaison classiques.

La prochaine vague ne sera probablement pas GitHub Actions, mais les images de base de conteneur et les empoisonnements de cache de construction. Les deux vecteurs sont techniquement plus proches de la fédération de workflow et sont actuellement moins systématiquement vérifiés que les hachages d’actions. Les équipes qui nettoient actuellement leur inventaire de pipeline ne devraient pas s’arrêter à l’audit d’actions, mais devraient intégrer la provenance de conteneur (Sigstore, in-toto) et la signature de cache dans leur plan de 12 mois.

La musique d’accompagnement réglementaire arrive. La mise en œuvre de l’UE NIS2 exige déjà aujourd’hui que les relations de fournisseurs critiques soient documentées et surveillées. Les actions GitHub qui voient les secrets de workflow sont exactement cela – et seront pondérées en conséquence lors des audits 2026. Ceux qui peuvent présenter un rapport d’inventaire d’actions propre ont déjà terminé la moitié de la partie conformité.

Foire aux questions

Les données du coffre-fort Bitwarden sont-elles affectées ?

Non. Bitwarden a confirmé dans sa déclaration officielle que ni les données du coffre-fort des utilisateurs finals ni les systèmes de production Bitwarden n’ont été compromis. L’incident ne concerne que la construction CLI distribuée via npm pendant une fenêtre de 93 minutes dans la nuit du 22 au 23 avril 2026.

Quelle version est affectée ?

La variante manipulée a été distribuée sous la forme @bitwarden/cli@2026.4.0. Cette version est dépréciée. Ceux qui ont installé pendant cette fenêtre (23h57 à 01h30 HE) devraient supprimer la version des fichiers de verrouillage et des caches, faire pivoter les jetons et vérifier les journaux des exécuteurs de construction pour les connexions à audit.checkmarx.cx.

Est-il suffisant d’utiliser le repérage de balise pour les actions GitHub ?

Non. Le repérage de balise ne gèle que l’étiquette de balise, et non le commit sous-jacent. Un attaquant avec un accès de mainteneur peut accrocher l’étiquette à un commit manipulé. Le repérage de hachage par SHA de commit est la seule serrure fiable contre cette classe d’attaque.

Nous devons faire pivoter tous les Tokens

Die Rotation gilt für jedes Token, das zwischen dem 22. und 24. April in einem Workflow referenziert wurde – unabhängig davon, ob der Build erfolgreich war. Repository-, Organisations- und Environment-Secrets sowie OIDC-bezogene Cloud-Credentials gehören auf die Rotationsliste. Eine vollständige Rotation aller Tokens ist nicht erforderlich, sofern sie nicht in betroffenen Workflows referenziert wurden.

Welche Compliance-Folgen ergeben sich?

Unter NIS2 fällt der Vorfall unter die Meldepflicht für erhebliche Vorfälle, sofern eigene kritische Dienste betroffen sind. Nach DORA gilt die gleiche Logik für Finanzinstitute. Unabhängig davon dokumentieren alle DACH-Teams den Vorfall sinnvoll im internen Incident-Log mit den ergriffenen Maßnahmen, da Aufsichtsbehörden bei Folge-Audits verstärkt nach Lieferketten-Kontrollen fragen.

Conseils de lecture de la rédaction

Plus de contenu du réseau MBF Media

cloudmagazin: BSI-KRITIS und Cloud-Nutzung – Multi-Cloud-Compliance unter NIS2 und C5
mybusinessfuture: KI teurer als geplant – die 33-Prozent-Cost-Overrun-Rate
digital-chiefs: KI-Cost-Overruns als Steuerungsfrage für C-Level

Source de l’image de couverture : Pexels / panumas nikhomkhai (px:17489157)

Tobias Massow

À propos de l'auteur: Tobias Massow

Plus d'articles de

Aussi disponible en

EspañolEnglishDeutsch
Un magazine de Evernine Media GmbH