Des chercheurs en sécurité ont trouvé un ensemble de projets Python malveillants distribués via PyPI, le référentiel officiel de paquets Python. La menace cible les systèmes Windows et Linux et propose généralement une porte dérobée personnalisée avec des capacités de cyber-espionnage.
Lors de la publication de cette recherche, la plupart des paquets avaient déjà été supprimés par PyPI. ESET a contacté PyPI pour prendre des mesures concernant ceux qui restent ; aujourd’hui, tous les paquets malveillants connus ne sont plus en ligne.
116 fichiers ont été découverts (distributions sources et roues) dans 53 projets contenant des maliciels. Les victimes ont téléchargé ces fichiers plus de 10 mille fois. Depuis mai 2023, le taux de téléchargement était d’environ 80 par jour.
Des failles dans PyPI
PyPI est populaire parmi les programmeurs Python pour le partage et le téléchargement de code. Puisque n’importe qui peut contribuer au référentiel, des logiciels malveillants – se faisant parfois passer pour des bibliothèques de codes légitimes et populaires – peuvent apparaître.

Les techniques utilisées
La faille permet l’exécution de commandes à distance, l’exfiltration de fichiers et parfois des captures d’écran. Parfois, la charge utile finale est une variante du tristement célèbre W4SP Stealer, qui vole des données personnelles et des informations d’identification, ou un simple moniteur presse-papiers qui vole des crypto-monnaies, ou même les deux.
ESET a observé les opérateurs derrière cette campagne. Ils utilisent trois techniques pour regrouper le code malveillant dans les paquets Python. La première consiste à placer un module de « test » avec du code légèrement obscurci à l’intérieur du paquet. La deuxième technique consiste à intégrer du code PowerShell dans le fichier setup.py, qui est généralement exécuté automatiquement par les gestionnaires de paquets tels que pip pour faciliter l’installation des projets Python. Dans la troisième technique, les opérateurs ne font aucun effort pour inclure du code légitime dans le paquet, seul le code malveillant est présent, sous une forme légèrement masquée.
La charge utile finale est une porte dérobée personnalisée capable d’exécuter des commandes à distance, d’exfiltrer des fichiers et parfois de faire des captures d’écran.
- Sous Windows, la porte dérobée est implémentée en Python.
- Sous Linux, c’est le langage de programmation Go qui est utilisé.


