Les pirates piratent les comptes GitHub et insèrent du code malveillant déguisé en contributions Dependabot pour voler les secrets d’authentification et les mots de passe des développeurs.
La campagne s’est déroulée en juillet 2023, lorsque les chercheurs ont découvert des commits inhabituels sur des centaines de référentiels publics et privés, falsifiés pour apparaître comme les commits Dependabot.
Dependabot est un outil automatisé fourni par GitHub qui analyse les projets à la recherche de dépendances vulnérables, puis émet automatiquement des demandes d’extraction pour installer les versions mises à jour.
Comme le rapporte aujourd’hui Checkmarx, ces fausses contributions à Dependabot ont été rendues possibles grâce à des jetons d’accès GitHub volés dans le but des attaquants d’injecter du code malveillant pour voler les secrets du projet.
Se faire passer pour le Dependabot de GitHub
L’attaque a commencé lorsque les attaquants ont obtenu d’une manière ou d’une autre les jetons d’accès GitHub personnels de leurs cibles, dont Checkmarx n’a aucune idée.
Les auteurs de la menace semblent ensuite utiliser des scripts automatisés pour créer de faux messages de validation intitulés « fix » qui semblent provenir du compte utilisateur « dependabot.[bot] ».
Ces commits introduisent du code malveillant dans le projet qui effectue les deux actions suivantes :
- Extrayez les secrets du projet GitHub ciblé et envoyez-les au serveur de commande et de contrôle de l’attaquant.
- Modifiez les fichiers JavaScript existants dans le référentiel piraté pour ajouter des logiciels malveillants qui volent les mots de passe des soumissions de formulaires Web et les envoient à la même adresse C2.
L’exfiltration des secrets est réalisée en ajoutant le fichier d’action GitHub « hook.yml » en tant que nouveau workflow déclenché à chaque événement push de code sur le référentiel impacté.
Le composant voleur de mots de passe injecte du JavaScript obscurci à la fin de tous les fichiers JavaScript (.js) qui chargent le script suivant à partir d’un site distant. Ce script surveillera les soumissions de formulaires pour voler les mots de passe de toutes les entrées de formulaire de type « mot de passe ».
Comme de nombreux jetons compromis donnaient également accès à des référentiels privés, l’attaque a affecté à la fois les référentiels GitHub publics et privés.
Points de compromis possibles
Les analystes de Checkmarx ont examiné les journaux de certaines victimes et ont découvert que leurs comptes avaient été compromis à l’aide de PAT (jetons d’accès personnels) volés.
Ces jetons sont stockés localement sur les ordinateurs du développeur et peuvent être utilisés pour se connecter à GitHub sans passer par les étapes 2FA (authentification à deux facteurs).
« Malheureusement, l’activité du journal d’accès du jeton n’est pas visible dans le journal d’audit du compte. Donc, si votre jeton a été compromis, vous ne pouvez pas en être sûr car les journaux d’accès sont manquants », prévient Checkmarx.
Bien que la société de cybersécurité ne soit pas parvenue à une conclusion concrète sur les moyens exacts par lesquels les attaquants ont volé ces jetons, ils supposent que cela pourrait être dû à une infection par un logiciel malveillant éventuellement introduit dans l’appareil du développeur via un package malveillant.
La plupart des utilisateurs compromis viennent d’Indonésie, ce qui implique une attaque ciblée adaptée à ce groupe démographique. Cependant, les preuves disponibles ne fournissent pas de détails spécifiques sur ce thème.
Une mesure proposée pour se défendre contre ces attaques consiste à passer au serveur GitHub. jetons d’accès personnels à granularité finequi limite chaque utilisateur à des autorisations spécifiques, réduisant ainsi les risques en cas de compromission.