Notre équipe de chercheurs de la Global Research and Analysis Team (GReAT) a découvert deux paquets malveillants dans le Python Package Index (PyPI), un célèbre dépôt tiers officiel du langage de programmation Python. Selon les descriptions des paquets, il s’agit de bibliothèques qui permettaient de travailler avec des LLM populaires (grands modèles de langage). En réalité, elles imitaient la fonctionnalité énoncée en utilisant une version de démonstration de ChatGPT et cherchaient avant tout à installer la programme malveillant JarkaStealer.
Ces paquets ont pu être téléchargés pendant plus d’un an. À en juger par les statistiques du dépôt, au cours de cette période, ils ont été téléchargés plus de 1700 fois par des utilisateurs de plus de 30 pays.
Paquets malveillants et leur utilisation
Un seul auteur a téléchargé ces paquets malveillants sur le dépôt qui ne se différentiaient que par leur nom et leur description. Le premier s’appelait « gptplus » et donnait soi-disant accès à l’API GPT-4 Turbo d’OpenAI. Le second s’intitulait « claudeai-eng » et, selon sa description, il permettait d’accéder à l’API Claude AI d’Anthropic PBC.
Les descriptions de ces deux paquets incluaient des exemples d’utilisation qui expliquaient comment créer des conversations et envoyer des messages aux modèles de langage. Mais en réalité, le code de ces paquets contenait un mécanisme d’interaction avec le proxy de démonstration de ChatGPT afin de convaincre la victime que le paquet fonctionnait. Pendant ce temps, le fichier __init__.py du paquet décodait les données qui se trouvaient à l’intérieur et téléchargeait le fichier JavaUpdater.jar du dépôt GitHub. Si la victime n’avait pas installé Java sur son dispositif, le paquet téléchargeait et installait Java Runtime Environment (JRE) depuis Dropbox. Le fichier jar contenait le programme malveillant JarkaStealer, qui était ensuite utilisé pour compromettre l’environnement de développement et pour exfiltrer les données volées sans être détecté.
Qu’est-ce que le programme malveillant JarkaStealer et pourquoi est-il dangereux ?
JarkaStealer est un programme malveillant, vraisemblablement écrit par des auteurs russophones, qui était principalement utilisé pour recueillir des données confidentielles et les envoyer aux cybercriminels. Voici tout ce dont il était capable :
- Voler les données de plusieurs navigateurs
- Prendre des captures d’écran
- Recueillir des informations sur le système
- Voler les jetons de session de diverses applications (dont Telegram, Discord, Steam ou encore un client de triche Minecraft)
- Interrompre les processus de navigation pour récupérer les données sauvegardées.
Les informations recueillies étaient ensuite archivées, envoyées au serveur des cybercriminels puis supprimées du dispositif de la victime.
Les auteurs de ce programme malveillant l’ont distribué via Telegram grâce au modèle de « malware en tant que service » (MaaS). Cependant, nous avons aussi trouvé le code source de JarkaStealer sur GitHub, ce qui signifie que les auteurs originaux du programme malveillant n’étaient peut-être pas impliqués dans cette campagne.
Comment vous protéger
Nous avons rapidement informé les administrateurs de PyPI des implants de ce programme malveillant dans les paquets gptplus et claudeai-eng, et ils ont d’ores et déjà été retirés du dépôt. Pourtant, rien ne garantit que cette technique, ou toute autre similaire, ne soit pas utilisée sur une autre plateforme. Nous ne cessons de surveiller les activités liées au programme malveillant JarkaStealer et de rechercher d’autres menaces dans les dépôts de logiciels libres.
Quant aux utilisateurs qui ont téléchargé et utilisé l’un des paquets malveillants, nous leur conseillons de le supprimer immédiatement. Le programme malveillant ne dispose pas d’une fonction de persistance et il ne s’exécute que lorsque le paquet est utilisé. En revanche, JarkaStealer a pu voler tous les mots de passe et jetons de session utilisés sur le dispositif de la victime, et doivent donc être immédiatement modifiés ou réédités.
Nous conseillons aux développeurs d’être particulièrement prudents lorsqu’ils travaillent avec des paquets de logiciels libres et de les inspecter minutieusement avant de les intégrer dans leurs projets. Ce processus inclut une analyse détaillée des dépendances et de la chaîne d’approvisionnement respective des produits logiciels, surtout lorsqu’il s’agit d’un sujet aussi brûlant que l’intégration des technologies de l’IA.
Dans ce cas, la date de création du profil de l’auteur sur PyPI aurait dû éveiller les soupçons. Si vous analysez de plus près la capture d’écran ci-dessus, vous verrez que les deux paquets ont été publiés le même jour, alors que le compte qui les a publiés n’a été créé que quelques jours plus tôt.
Afin de minimiser les risques lorsque vous travaillez avec des paquets logiciels libres de tiers et d’éviter une attaque de la chaîne d’approvisionnement, nous vous conseillons d’inclure les processus DevSecOps de Kaspersky Open Source Software Threats Data Feed. Ce programme a spécialement été conçu pour surveiller les composants libres que vous utilisez afin de détecter les menaces qu’ils pourraient contenir.