Le rapport des chercheurs de Phylum indique que les paquets concernés sont des typosquats, c'est-à-dire que les acteurs de la menace qui les publient les ont nommés intentionnellement de manière similaire aux bibliothèques Python légitimes, dans l'espoir que les développeurs qui tentent de récupérer la vraie bibliothèque fassent une erreur d'orthographe et récupèrent par inadvertance l'un des paquets malveillants. Comme les tentatives précédentes, cette attaque particulière commence par la copie de bibliothèques populaires existantes et l'injection d'une déclaration __import__ malveillante dans une base de code autrement saine.
Selon les chercheurs, l'avantage de mettre en place une attaque basée sur la copie d'un paquetage légitime existant est que, comme la page d'accueil du paquet sur le dépôt PyPI est générée à partir du setup.py et du README.md, il dispose immédiatement d'une véritable page d'accueil avec des liens qui fonctionnent pour la plupart et tout le reste. L'image ci-dessus montre la page d'accueil PyPI pour le paquet malveillant typesutil. Vous pouvez constaté que le pirate a simplement copié le paquet datetime2 et a apporté quelques légères modifications afin de rendre le texte cohérent avec le nom du faux paquet sous lequel il a été publié.
« À moins d'une inspection approfondie, un bref coup d'œil pourrait laisser croire qu'il s'agit également d'un paquet légitime », affirment les chercheurs. Dans le rapport, les chercheurs expliquent en détail les difficultés qu'ils ont rencontrées lors de l'analyse du code obfusqué de plus de 71 000 caractères, ce qui représente "une sacrée quantité de boue" dans laquelle ils ont dû se frayer un chemin. En fin de compte, ils ont conclu que le logiciel malveillant distribué par ces paquets était W4SP Stealer. Il s'agit en effet d'un logiciel malveillant voleur d'informations qui exfiltre vos jetons Discord, vos cookies et vos mots de passe enregistrés.
Le rapport note que dans la majorité des paquets, en particulier les plus anciens, l'importation malveillante était simplement injectée dans le fichier setup.py ou __init__.py. Au lieu de placer l'importation à un endroit évident, les acteurs de la menace le cachent, profitant du point-virgule rarement utilisé en Python pour glisser le code malveillant sur la même ligne que le code légitime. En conclusion, voici ci-dessous la manière exacte dont cette attaque de la chaîne d'approvisionnement est exécutée :
- des dizaines de paquets sont publiés activement sur PyPI avec des noms anodins (certains sont des typosquats) qui copient de manière flagrante des paquets légitimes existants et tentent d'y introduire en douce un petit bout de code malveillant ;
- le code malveillant est une déclaration __import__ cachée dans les fichiers setup.py, __init__.py ou dans des classes d'erreur personnalisées. Quoi qu'il en soit, il contient une chaîne codée en Base64 qui est exécutée. Parfois, au lieu de l'importation directe dans ces fichiers, il peut s'agir simplement d'un appel os.system() qui installe un de leurs autres paquets malveillants ;
- décodée, cette chaîne encodée en Base64 contient un script Python qui est écrit dans un fichier temporaire qui est exécuté ;
- ce fichier temporaire contient du code qui atteint un nombre quelconque d'URL ;
- de chaque URL, il tire un code Python légèrement obfusqué qui exécute un objet octet compressé ;
- décompressé, cet objet octet contient le logiciel malveillant W4SP Stealer déployé sur le système.
Selon les chercheurs, au moment de la publication du rapport, les paquets concernés représentent collectivement plus de 5 700 téléchargements. Notez que certains de ces paquets semblent être des tentatives évidentes de typosquattage comme twyne et colorsama (qui copient twine et colorama), qui représentent ensemble des centaines de millions de téléchargements par mois). En août, les chercheurs de Kaspersky Securelist ont également analysé des paquets PyPI malveillants qui ont été obfusqués par un outil open source appelé Hyperion et ont été surpris en train de déployer le logiciel malveillant W4SP.
Par ailleurs, le développeur de logiciels et chercheur Hauke Lübbers a également identifié les paquets PyPI pystile et threadings qui contiennent un logiciel malveillant qui se faisait appeler GyruzPIP. Toutefois, le chercheur estime que ce logiciel malveillant est basé sur le projet open source evil-pip publié à "des fins éducatives uniquement". Le développement de cette semaine marque un autre incident parmi une série d'attaques de typosquattage ciblant les développeurs tout en exploitant les plateformes de distribution de logiciels open source comme PyPI et npm. Voici la liste des paquets infectés par W4SP identifiés par les chercheurs :
- algorithmic
- colorsama
- colorwin
- curlapi
- cypress
- duonet
- faq
- fatnoob
- felpesviadinho
- iao
- incrivelsim
- installpy
- oiu
- pydprotect
- pyhints
- pyptext
- pyslyte
- pystyle
- pystyte
- pyurllib
- requests-httpx
- shaasigma
- strinfer
- stringe
- sutiltype
- twyne
- type-color
- typestring
- typesutil
Source : Phylum
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous de la multiplication des attaques de typosquattage ?
Aviez-vous été victime de cela dernièrement ? Si oui, partagez votre expérience.
Selon vous, comment les développeurs peuvent-ils se protéger contre les attaques de ce type ?
Voir aussi
Un groupe de plus de 200 paquets npm malveillants ciblant les développeurs qui utilisent Microsoft Azure, a été supprimé deux jours après avoir été mis à la disposition du public
Les paquets npm malveillants font partie d'un "déferlement" de logiciels malveillants qui frappent les référentiels, la popularité des paquets en fait de parfaits vecteurs d'attaques
Le paquet PyPI "keep" aurait inclus par erreur un voleur de mots de passe, le mainteneur aurait involontairement introduit une dépendance malveillante par une faute de frappe
PyPI : des paquets Python volent les clés AWS des utilisateurs et les envoient vers des sites non sécurisés et accessibles au public, selon un rapport