Le 22 avril 2024, une version malveillante du CLI officiel de Bitwarden a été publiée sur le registre npm sous l'identifiant @bitwarden/[email protected]. Pendant 93 minutes, tout utilisateur installant le CLI via npm a reçu une version piratée de l'outil, conçue pour compromettre les systèmes des victimes.
Bitwarden a rapidement détecté l'incident, supprimé le package compromis et publié une déclaration rassurante : aucune donnée sensible des utilisateurs n'a été accédée, et ses systèmes de production n'ont pas été compromis.
Une attaque ciblant les identifiants critiques
L'entreprise de cybersécurité JFrog a analysé le payload malveillant et révélé que son objectif n'était pas les coffres-forts Bitwarden, mais les identifiants d'infrastructure. Le malware a spécifiquement ciblé :
- Tokens GitHub : Accès aux dépôts et aux workflows automatisés
- Tokens npm : Permettant de publier des paquets malveillants ou de modifier des flux de release
- Clés SSH : Ouverture d'accès aux serveurs et aux dépôts internes
- Historique des commandes shell : Révélant des secrets collés ou des noms d'hôtes internes
- Identifiants AWS, GCP et Azure : Exposant les infrastructures cloud et les pipelines de déploiement
- Secrets GitHub Actions : Accès aux environnements CI/CD et aux secrets en aval
- Fichiers de configuration des outils d'IA : Exposant des clés API et des endpoints internes
Un vecteur d'attaque exploitant la chaîne d'approvisionnement
Bitwarden, utilisé par plus de 50 000 entreprises et 10 millions d'utilisateurs, décrit son CLI comme un outil « puissant et complet » pour gérer les coffres-forts, y compris dans des workflows automatisés. La méthode d'installation recommandée par Bitwarden passe par npm, ce qui place le CLI au cœur des environnements de développement où transitent les identifiants sensibles.
Selon l'analyse de JFrog, le package malveillant a modifié à la fois le hook preinstall et l'entrée principale du binaire bw pour charger un runtime Bun et exécuter un payload obfusqué. L'attaque se déclenche à l'installation et à l'exécution, permettant de collecter des identifiants sans nécessiter de mots de passe stockés.
Une faille liée à une campagne plus large
La société de sécurité Socket suggère que l'attaque aurait exploité une action GitHub compromise dans le pipeline CI/CD de Bitwarden. Cette hypothèse s'aligne avec une campagne de chaîne d'approvisionnement identifiée par les chercheurs de Checkmarx, que Bitwarden a confirmée être liée à cet incident.
Les leçons à tirer pour la sécurité des chaînes d'approvisionnement
Ce piratage illustre les risques liés à la chaîne d'approvisionnement logicielle, où un seul package compromis peut compromettre des milliers de systèmes. Npm, conscient de cette menace, a renforcé son modèle de publication avec l'authentification OIDC pour les pipelines CI/CD, réduisant ainsi la dépendance aux tokens longs et vulnérables.
Pour les entreprises, cette attaque souligne l'importance de :
- Vérifier systématiquement l'intégrité des packages avant installation
- Utiliser des outils de détection des menaces en temps réel
- Limiter les permissions des identifiants utilisés dans les pipelines
- Former les développeurs aux bonnes pratiques de sécurité des chaînes d'approvisionnement