GitHub est assiégé par des millions de dépôts malveillants dans le cadre d'une attaque en cours, d'après Apiiro, GitHub ne cesse de supprimer les dépôts malveillants, mais il en reste des milliers

GitHub a du mal à contenir une attaque en cours qui inonde le site de millions de dépôts de code. Ces dépôts contiennent des logiciels malveillants obscurcis qui volent les mots de passe et la cryptomonnaie des appareils des développeurs, ont déclaré les chercheurs.

Les équipes de recherche en sécurité et en science des données d'Apiiro ont détecté une résurgence d'une campagne de confusion de dépôts malveillants qui a commencé au milieu de l'année dernière, mais cette fois à une échelle beaucoup plus grande. L'attaque touche plus de 100 000 dépôts GitHub (et probablement des millions) lorsque des développeurs peu méfiants utilisent des dépôts qui ressemblent à des dépôts connus et fiables, mais qui sont en fait infectés par un code malveillant.

Comment les attaques par confusion de dépôts se produisent-elles ?

Comme pour les attaques par confusion de dépendances, les acteurs malveillants incitent leur cible à télécharger leur version malveillante au lieu de la vraie. Mais les attaques par confusion de dépendances tirent parti du fonctionnement des gestionnaires de paquets, tandis que les attaques par confusion de dépôts s'appuient simplement sur le fait que les humains choisissent par erreur la version malveillante au lieu de la vraie, en recourant parfois aussi à des techniques d'ingénierie sociale.

Dans le cas présent, afin de maximiser les chances d'infection, l'acteur malveillant inonde GitHub de dépôts malveillants, en suivant les étapes suivantes :

  1. Cloner des dépôts existants (par exemple : TwitterFollowBot, WhatsappBOT, discord-boost-tool, Twitch-Follow-Bot, et des centaines d'autres).
  2. Les infecter avec des chargeurs de logiciels malveillants.
  3. Les uploader à nouveau sur GitHub avec des noms identiques.
  4. En les forkant automatiquement des milliers de fois.
  5. Les promouvoir secrètement sur le web via des forums, discord, etc.

Que se passe-t-il lorsque les dépôts malveillants sont utilisés ?

Lorsque des développeurs peu méfiants utilisent l'un des dépôts malveillants, la charge utile cachée déballe sept couches d'obscurcissement, ce qui implique également l'extraction d'un code Python malveillant et, plus tard, d'un exécutable binaire. Le code malveillant (en grande partie une version modifiée de BlackCap-Grabber) recueille alors les identifiants de connexion de différentes applications, les mots de passe et les cookies du navigateur, ainsi que d'autres données confidentielles. Il les renvoie ensuite au serveur C&C (commande et contrôle) des acteurs malveillants et exécute une longue série d'activités malveillantes supplémentaires.

Nom : banana4-red.gif
Affichages : 9790
Taille : 1,91 Mo

Les effets de l'automatisation sur GitHub

La plupart des dépôts forkés sont rapidement supprimés par GitHub, qui identifie l'automatisation. Cependant, la détection de l'automatisation semble manquer de nombreux dépôts, et ceux qui ont été téléchargés manuellement survivent. Étant donné que la chaîne d'attaque semble être principalement automatisée à grande échelle, les 1 % qui survivent représentent tout de même des milliers de dépôts malveillants. Vous pouvez vérifier vous-même une petite partie de la vague actuelle en recherchant simplement ce qui suit dans GitHub : 🔥 2024 language:python.

Nom : Github attack 1.png
Affichages : 1642
Taille : 31,5 Ko

En comptant ceux qui ont été supprimés, le nombre de dépôts atteint des millions. En général, la suppression a lieu quelques heures après l'upload, il est donc difficile de les documenter. L'équipe d'Apiiro sait que la suppression est automatisée parce que beaucoup des originaux existent encore, et elle cible principalement les fork bombs. Par exemple, vous pourrez observer que des milliers de forks apparaissent dans le résumé mais aucune dans les détails.

Nom : fork-bombs-red.gif
Affichages : 1638
Taille : 1,05 Mo

En raison de l'ampleur de l'opération, cette campagne a une sorte d'effet de réseau d'ingénierie sociale de second ordre lorsque, de temps en temps, des utilisateurs naïfs forcent les dépôts malveillants sans se rendre compte qu'ils propagent des logiciels malveillants. Il est assez ironique de constater que la propagation est le fait d'humains après une telle dépendance à l'égard de l'automatisation.

Quand la campagne a-t-elle commencé ?

Voici un bref historique de cette campagne malveillante :

Mai 2023 : Comme l'a initialement signalé Phylum, plusieurs paquets malveillants ont été téléchargés sur PyPI, contenant les premières parties de la charge utile actuelle. Ces paquets ont été diffusés par des appels "os.system("pip install package")" placés dans des forks de dépôts GitHub populaires, tels que "chatgpt-api".

Juillet - août 2023 : Plusieurs dépôts malveillants ont été téléchargés sur GitHub, cette fois-ci en livrant la charge utile directement au lieu d'importer des paquets PyPI. Cela s'est produit après que PyPI a supprimé les paquets malveillants et que la communauté de la sécurité s'y est intéressée de plus près.

Novembre 2023 - Aujourd'hui : Apiiro a détecté plus de 100 000 dépôts contenant des charges utiles malveillantes similaires, et ce nombre ne cesse d'augmenter. Cette méthode d'attaque présente plusieurs avantages :

GitHub est énorme, donc malgré le grand nombre d'instances, leur part relative reste insignifiante et donc difficile à détecter.
Les gestionnaires de paquets ne sont pas impliqués comme auparavant, les noms de paquets malveillants explicites ne sont donc pas mentionnés, ce qui constitue un indicateur de moins.
Les dépôts ciblés se trouvent dans une petite niche et ont une faible popularité, ce qui facilite la tâche des développeurs peu méfiants qui commettent l'erreur de cloner leurs imitateurs malveillants.

Nom : Github attack 2.png
Affichages : 1656
Taille : 37,0 Ko

La transition des logiciels malveillants des gestionnaires de paquets vers les SCM

À en juger par les nombreux incidents qui ont été observés dans les gestionnaires de paquets et les plateformes SCM, la transition de cette campagne des paquets malveillants de PyPI vers les dépôts malveillants de GitHub semble refléter une tendance générale. Il semble qu'aujourd'hui, la communauté de la sécurité se concentre davantage sur les gestionnaires de paquets, ce qui était prévisible.

La facilité de génération automatique de comptes et de dépôts sur GitHub et autres, à l'aide d'API confortables et de limites de taux souples faciles à contourner, combinée au grand nombre de dépôts dans lesquels se cacher, en fait une cible parfaite pour infecter secrètement la chaîne d'approvisionnement logicielle.

Cette campagne, ainsi que les campagnes de confusion des dépendances qui sévissent dans les registres de paquets et les codes malveillants généralement diffusés par les gestionnaires de contrôle des sources, montrent à quel point la sécurité de la chaîne d'approvisionnement logicielle est fragile, en dépit de l'abondance des outils et des mécanismes de sécurité disponibles.

Comment se protéger contre les confusions de dépôts

GitHub a été prévenu et la plupart des dépôts malveillants ont été supprimés, mais la campagne se poursuit et les attaques visant à injecter du code malveillant dans la chaîne d'approvisionnement sont de plus en plus fréquentes. Il existe d'innombrables solutions pour attraper les logiciels malveillants au niveau du système et du réseau, mais la chaîne d'approvisionnement reste une surface d'attaque massive et lucrative pour les acteurs malveillants.

Chez Apiiro, un système de détection des codes malveillants a été mis au point pour surveiller toutes les bases de code connectées. Les attaques sont ensuite détectées par une analyse approfondie du code à l'aide de plusieurs techniques avancées : analyse de code basée sur LLM, déconstruction du code en un graphique complet du flux d'exécution, moteur heuristique élaboré, décodage, décryptage et désobfuscation dynamiques, et plus encore, de sorte qu'il est très difficile de le tromper.

Sans surveillance de votre code pour les charges utiles malveillantes injectées, la sécurité de toute votre organisation est déterminée par des choses telles que la capacité de vos développeurs à ne pas choisir le mauvais dépôt, qui est presque identique, à ne pas avoir une seule mauvaise configuration CI/CD, à avoir un code tiers sécurisé à 100 %, et d'autres conditions impossibles. C'est pourquoi, en tant qu'industrie, nous devons commencer à aller au-delà de la détection et de l'ingestion de vulnérabilités classiques pour mettre en évidence la nouvelle génération de risques liés à la chaîne d'approvisionnement et aux applications logicielles.

Sources : Apiiro (Matan Giladi, chercheur en sécurité, Gil David, responsable de l'IA)

Et vous ?

Quelle lecture faites-vous de cette situation ?

Voir aussi :

GitHub est victime de pirates ; les certificats de signature de code des applications GitHub Desktop et Atom ont été dérobés

GitHub : des cybercriminels ont volé les informations de connexion de 100 000 comptes d'utilisateurs de NPM, en utilisant des jetons d'utilisateur OAuth