Ax Sharma, chercheur chez Sonatype, a découvert que ce nouveau paquet PyPi fait partie d'une campagne précédemment connue sous le nom de « Cool package », nommée d'après une chaîne de caractères dans les métadonnées du paquet, qui a ciblé les utilisateurs de Windows l'année dernière. Ce paquet PyPi s'appelle « pytoileur » et a été téléchargé par des cybercriminels sur le dépôt PyPi au cours du week-end, en prétendant qu'il s'agissait d'un outil de gestion d'API. Remarquez que le paquet comporte la chaîne « Cool package » dans le champ Summary metadata, ce qui indique qu'il fait partie de cette campagne en cours.
Envoyé par Sonatype
Les paquets malveillants de ce type sont généralement promus en utilisant des noms similaires à d'autres paquets populaires, un processus appelé typo-squatting. Cependant, avec ce paquet, les acteurs de la menace ont adopté une approche plus novatrice en répondant à des questions sur Stack Overflow et en présentant le paquet comme une solution. Stack Overflow étant une plateforme largement utilisée par les développeurs de tous horizons pour poser des questions et y répondre, elle constitue un environnement idéal pour diffuser des logiciels malveillants déguisés en interfaces de programmation et en bibliothèques.
« Nous avons également remarqué qu'un compte StackOverflow “EstAYA G”, créé il y a environ deux jours, exploite maintenant les membres de la communauté de la plateforme qui cherchent de l'aide pour le débogage [1, 2, 3] en les incitant à installer ce paquet malveillant comme une “solution” à leur problème, même si la “solution” n'est pas liée aux questions posées par les développeurs », a expliqué Sharma dans le rapport de Sonatype, indiquant que « nous ne pouvons qu'espérer que les développeurs feront preuve de discernement et ne tomberont pas dans ce piège ! ».
Bien que le fichier « setup.py » du paquet ait l'air propre à première vue, on pourrait croire qu'il s'agit d'un paquet vide.
Jeff Thornhill, chercheur en sécurité chez Sonatype et passionné de menaces open source, a remarqué que la ligne 17 contenait un peu trop d'espaces blancs, ce qui cachait du code beaucoup plus à droite, qu'il serait facile de manquer, à moins de remarquer la barre de défilement. La commande exécute une charge utile codée en base64 :
« Bien que le codage base64 soit assez courant dans les applications et n'offre pas grand-chose en termes de masquage du code malveillant, ce qui signifie qu'il n'est pas vraiment "suspect" de l'utiliser, l'auteur a tenté de "cacher" cette chaîne codée particulière à l'examen humain manuel en l'injectant après une instruction d'impression, puis en incluant un espace blanc d'une longueur d'un paragraphe avant le code », explique Thornhill. « Les utilisateurs qui visualisent ce code dans un éditeur sans retour à la ligne (ce qui est assez courant dans le codage) manqueraient facilement cette ligne ».
Qu'accomplit le code encodé en base64 ?
Essentiellement, le code cible les utilisateurs de Windows et invoque des commandes Python pour récupérer un exécutable malveillant sur un serveur externe : hxxp://51.77.140[.]144:8086/dl/runtime
Le binaire récupéré, « Runtime.exe », est ensuite exécuté en utilisant les commandes Windows PowerShell et VBScript sur le système.
L'exécutable, une fois installé, devient persistant et contient plusieurs mesures anti-détection pour empêcher l'analyse par les chercheurs et les bacs à sable de logiciels malveillants. Le paquet dépose en outre des exécutables suspects, modifie les paramètres du registre Windows et déploie des charges utiles qui ont déjà été identifiées comme des logiciels espions.
L'un des binaires (« main.exe ») contient des capacités de vol d'informations et de cryptojacking. Le binaire, par exemple, tente d'exfiltrer des profils d'utilisateurs et des données enregistrées dans des navigateurs web courants (Google Chrome, Brave, Firefox, etc.) et d'accéder à des actifs locaux associés à des services fintech et crypto comme Binance, Coinbase, Exodus Wallet, PayPal, Payoneer, PaySafeCard, Crypto.com, Skrill, parmi d'autres.
Toutes ces informations sont ensuite renvoyées à l'attaquant, qui peut les vendre sur les marchés du dark web ou les utiliser pour violer d'autres comptes appartenant à la victime.
Conclusion
Si les paquets PyPi malveillants et les voleurs d'informations n'ont rien de nouveau, la stratégie des cybercriminels consistant à se faire passer pour des contributeurs utiles sur un forum professionnel est une approche astucieuse, car elle leur permet d'exploiter la confiance et l'autorité du site dans la communauté des codeurs. Cette approche nous rappelle que les tactiques des cybercriminels changent constamment et, malheureusement, illustre pourquoi il ne faut jamais faire aveuglément confiance à ce que quelqu'un partage en ligne. Les développeurs doivent au contraire vérifier la source de tous les paquets qu'ils ajoutent à leurs projets et, même s'ils semblent dignes de confiance, vérifier le code (en activant la fonction « word wrap ») pour détecter les commandes inhabituelles ou obscurcies qui seront exécutées.
« La réapparition, cette semaine, d'un paquet Python malveillant identique témoigne du fait que les cybercriminels reprennent et recyclent d'anciennes tactiques pour élargir leur filet et leurs cibles, qui comprennent souvent des développeurs de plusieurs niches (c'est-à-dire des passionnés d'IA et d'apprentissage automatique à ceux qui s'appuient sur des framework Python populaires tels que Pyston) ».
Source : Sonatype
Et vous ?
Pensez-vous que les plateformes de questions-réponses en ligne devraient faire plus pour détecter et bloquer les comptes de cybercriminels ?
Comment pouvons-nous encourager une communauté plus vigilante et proactive pour signaler les activités suspectes sur ces plateformes ?
Quelles mesures de sécurité supplémentaires pourraient être mises en place pour protéger les développeurs et les utilisateurs de logiciels malveillants ?
Avez-vous déjà rencontré des réponses suspectes ou des liens douteux sur des forums professionnels ? Comment avez-vous réagi ?