CloudGuard Spectral détecte plusieurs packages malveillants sur PyPI – le référentiel logiciel officiel pour les développeurs Python – Check Point Research
8 août 2022
Points forts:
- CloudGuard Spectral détecte 10 packages malveillants sur PyPI, le principal index de packages Python utilisé par les développeurs pour le langage de programmation Python
- Des packages malveillants installent des voleurs d’informations qui permettent aux attaquants de voler les données privées et les informations d’identification personnelles des développeurs
- Une fois détecté, CPR a divulgué les informations et alerté PyPI sur ces colis. Plus tard pour être supprimé par PyPI
- Le CPR exhorte les utilisateurs à être alertés et conscients de ces packages
Arrière plan
PyPI est le principal référentiel Python, le plus couramment utilisé par les utilisateurs de Python. Chaque développeur python connaît la routine quotidienne d’installation de pip pour apporter le logiciel Python dont il a besoin.
Pypi aide les développeurs à trouver et à installer des logiciels développés et partagés par d’autres développeurs de cette communauté. La plate-forme et son utilisation sont actuellement gratuites et les développeurs utilisent le référentiel quotidiennement. Selon leur propre site Web, Pypi compte plus de 612 240 utilisateurs actifs, travaillant sur 391 325 projets, avec 3 664 724 versions.
Ce que de nombreux utilisateurs ne savent pas, c’est le fait que cette simple commande peut les exposer à un risque élevé. La commande pip install déclenche une installation de package qui peut inclure un script setup.py. Ce script peut inclure des extraits de code Python pour effectuer le processus d’installation requis sur la machine d’installation cible. Les pirates exploitent cette fonctionnalité pour placer du code malveillant dans le script d’installation, code qui s’exécute de manière transparente sur la machine de l’utilisateur sans être remarqué. L’ignorance n’est pas un bonheur dans ce cas, car de telles attaques récoltent généralement des points de données très critiques tels que les mots de passe et les jetons Api. De plus, ces attaques se multiplient. Un exemple pertinent serait la récente attaque pygrata où des packages malveillants ont été utilisés pour voler des clés et des variables d’environnement AWS (Amazon Web Services) dans le cadre d’une attaque de la chaîne d’approvisionnement. Il est important de noter que les acteurs malveillants n’attendent pas, et comme vous le verrez, les mêmes attaquants semblent déjà avoir généré une nouvelle campagne contre les utilisateurs de PyPI. Les détails des paquets que nous avons détectés sont décrits et détaillés dans ce blog.
Ascii2text
Ascii2text est un package malveillant, imitant simplement le package d’art populaire par son nom et sa description. Fait intéressant, ils ont été assez intelligents pour copier l’intégralité de la description du projet sans la partie release, empêchant les utilisateurs de se rendre compte qu’il s’agit d’un faux package.
La fausse description ascii2text VS la description du paquet d’art d’origine
La partie malveillante du package se trouvait dans le fichier __init__.py du package, importé par le script d’installation setup.py. Le code du fichier __init__.py était responsable du téléchargement et de l’exécution d’un script malveillant qui recherche les mots de passe locaux et les télécharge à l’aide d’un crochet Web Discord.
L’extrait malveillant à l’intérieur du __init__.py
Le script malveillant qu’il télécharge
Pyg-utils, Pymocks et PyProto2
Pyg-utils semble être un vestige de la récente campagne Pygrata dont le but était de récolter les informations d’identification AWS des utilisateurs. Dans le cadre de son installation setup.py, Pyg-utils se connecte au même domaine malveillant (pygrata.com) qui pourrait être une infrastructure pour une attaque de phishing. Il est intéressant de noter que Pymocks et PyProto2 ont un code presque identique qui cible un domaine différent – pymocks.com. Alors que Pyg-utils est sorti le 15/6, Pymocks et PyProto sont sortis plus récemment (24/6 et 4/7 respectivement). Le domaine Pymocks.com a également été créé le même jour (24/6). Par conséquent, il est logique de supposer que tous ces packages ont été créés par le même acteur malveillant, probablement motivé par le fait que Pyg-utils est passé sous le capot et a décidé de copier et de redéclencher leurs campagnes malveillantes.
Le fichier setup.py malveillant Pyg-utils à côté des fichiers Pymocks et PyProto2 presque identiques
Test-asynchrone
Test-async est décrit dans sa description comme un paquet de test très cool qui est extrêmement utile et dont tout le monde a besoin à 100 %. Dans son script d’installation setup.py, il télécharge et exécute du code, probablement malveillant, à partir du Web. Fait intéressant, avant de télécharger cet extrait, il informe un canal Discord qu’une nouvelle exécution a été lancée.
Script d’installation test-async setup.py
Free-net-vpn
Free-net-vpn et Free-net-vpn2 sont des packages malveillants qui ciblent les variables d’environnement. Avoir sur son script d’installation setup.py un code propre et documenté pour récolter les informations d’identification de l’utilisateur (c’est bien de voir que même les pirates font attention aux normes de code). Ces secrets sont ensuite publiés sur un site mappé par un service de cartographie DNS dynamique.
Script d’installation free-net-vpn setup.py
ZlibsrcName
Le package zlibsrc a probablement essayé de confondre les utilisateurs légitimes avec le populaire package zlib intégré à Python. Sur son script setup.py, il télécharge et exécute un fichier malveillant dans le cadre de son installation.
Script Zlibsrc __init__.py
Navigateurdiv
Browserdiv est un package malveillant dont le but était de voler les informations d’identification des installateurs en les collectant et en les envoyant à un webhook discord prédéfini. Fait intéressant, alors que selon son nom, il semble cibler la programmation liée à la conception Web (bowser, div), selon sa description, la motivation du package est de permettre l’utilisation de selfbots à l’intérieur de la discorde.
Script d’installation de Browserdiv setup.py
WINRPCexploit
Un paquet malveillant qui vole les informations d’identification des utilisateurs dans le cadre de son script d’installation setup.py (il est intéressant de noter que, d’après sa description, il s’agit d’un package pour exploiter la vulnérabilité Windows RPC, la réalité est qu’il ne fait que voler les informations d’identification de l’installateur).
Script d’installation de WINRPCexploit setup.py
Les utilisateurs de CloudGuard Spectral restent protégés contre les paquets malveillants
Les attaques de la chaîne d’approvisionnement sont conçues pour exploiter les relations de confiance entre une organisation et des parties externes. Ces relations peuvent inclure des partenariats, des relations avec des fournisseurs ou l’utilisation de logiciels tiers. Les acteurs des cybermenaces compromettront une organisation, puis remonteront la chaîne d’approvisionnement, profitant de ces relations de confiance pour accéder aux environnements d’autres organisations. De telles attaques sont devenues plus fréquentes et ont gagné en impact ces dernières années, il est donc essentiel que les développeurs s’assurent de protéger leurs actions, de revérifier chaque ingrédient logiciel utilisé et en particulier ceux qui sont téléchargés à partir de différents référentiels, en particulier ceux qui n’étaient pas eux-mêmes. -établi.
Chez Spectralops.io, Now A Check Point company, notre mission est de générer un processus de développement sécurisé, pour nous assurer que les développeurs font les bonnes choses (en termes de sécurité). Dans le cadre de cet effort, nous analysons constamment PyPI après les packages malveillants pour prévenir de tels risques d’attaque de la chaîne d’approvisionnement.
Divulgation responsable à PyPi
Une fois que nous avons identifié ces utilisateurs et packages malveillants, nos chercheurs ont alerté PyPI, via l’e-mail désigné indiqué sur le site officiel de PyPi, invitant les utilisateurs à alerter sur les questions de sécurité, en demandant leur suppression. Suite à notre divulgation, PyPI a supprimé ces packages.