Une nouvelle technique d’attaque de la chaîne d’approvisionnement ciblant le registre Python Package Index (PyPI) a été exploitée dans la nature pour tenter d’infiltrer des organisations en aval.
Le nom de code de cette attaque a été donné par la société de sécurité de la chaîne d’approvisionnement de logiciels JFrog, Revival Hijack. Selon elle, cette méthode d’attaque pourrait être utilisée pour détourner 22 000 packages PyPI existants et entraîner le téléchargement de « centaines de milliers » de packages malveillants. Ces packages sensibles ont été téléchargés plus de 100 000 fois ou sont actifs depuis plus de six mois.
« Cette technique d’attaque consiste à détourner les packages logiciels PyPI en manipulant l’option permettant de les réenregistrer une fois qu’ils sont supprimés de l’index de PyPI par le propriétaire d’origine », ont déclaré les chercheurs en sécurité de JFrog Andrey Polkovnychenko et Brian Moussalli dans un communiqué. rapport partagé avec The Hacker News.
À la base, l’attaque repose sur le fait que plusieurs packages Python publiés dans le référentiel PyPI sont supprimés, les rendant disponibles pour l’enregistrement à tout autre utilisateur.
Les statistiques partagées par JFrog montrent qu’environ 309 packages sont supprimés chaque mois en moyenne. Cela peut se produire pour de nombreuses raisons : manque de maintenance (c’est-à-dire abandonware), republication du package sous un nom différent ou introduction de la même fonctionnalité dans les bibliothèques officielles ou les API intégrées.
Cela constitue également une surface d’attaque lucrative, plus efficace que le typosquatting, et qu’un attaquant, utilisant ses propres comptes, pourrait exploiter pour publier des packages malveillants sous le même nom et une version supérieure pour infecter les environnements de développement.
« Cette technique ne repose pas sur une erreur de la part de la victime lors de l’installation du package », ont expliqué les chercheurs, soulignant que Revival Hijack peut donner de meilleurs résultats du point de vue d’un adversaire. « La mise à jour d’un package autrefois sûr vers sa dernière version est considérée comme une opération sûre par de nombreux utilisateurs. »
Bien que PyPI dispose de mesures de protection contre l’usurpation d’identité de l’auteur et les tentatives de typosquattage, l’analyse de JFrog a révélé que l’exécution de « liste de pip –obsolèteLa commande » répertorie le package contrefait comme une nouvelle version du package d’origine, le premier correspondant à un package différent provenant d’un auteur entièrement différent.
Encore plus inquiétant, l’exécution du «pip install – mise à niveauLa commande » remplace le paquet réel par le faux sans même avertir que l’auteur du paquet a changé, exposant potentiellement les développeurs inconscients à un énorme risque pour la chaîne d’approvisionnement en logiciels.
JFrog a déclaré avoir pris la décision de créer un nouveau compte utilisateur PyPI appelé «détention_de_sécurité » qu’il utilisait pour détourner en toute sécurité les packages sensibles et les remplacer par des espaces réservés vides afin d’empêcher les acteurs malveillants de capitaliser sur les packages supprimés.
De plus, à chacun de ces packages a été attribué le numéro de version 0.0.0.1 – l’opposé d’un scénario d’attaque par confusion de dépendances – pour éviter d’être retiré par les développeurs lors de l’exécution d’une commande de mise à niveau pip.
Ce qui est plus inquiétant, c’est que Revival Hijack a déjà été exploité dans la nature, avec un acteur de menace inconnu appelé Jinnis introduisant une version bénigne d’un package nommé « pingdomv3 » le 30 mars 2024, le même jour où le propriétaire d’origine (cheneyyan) a supprimé le package de PyPI.
Le 12 avril 2024, le nouveau développeur aurait publié une mise à jour contenant une charge utile codée en Base64 qui vérifie la présence du « URL_JENKIN » variable d’environnement et, si elle est présente, exécute un module d’étape suivante inconnu récupéré à partir d’un serveur distant.
« Cela suggère que les attaquants ont soit retardé la diffusion de l’attaque, soit l’ont conçue pour être plus ciblée, en la limitant éventuellement à une plage d’adresses IP spécifique », a déclaré JFrog.
Cette nouvelle attaque est un signe que les acteurs malveillants envisagent des attaques de chaîne d’approvisionnement à plus grande échelle en ciblant les packages PyPI supprimés afin d’étendre la portée des campagnes. Il est recommandé aux organisations et aux développeurs d’inspecter leurs pipelines DevOps pour s’assurer qu’ils n’installent pas de packages qui ont déjà été supprimés du référentiel.
« L’utilisation d’un comportement vulnérable dans la gestion des packages supprimés a permis aux attaquants de détourner des packages existants, permettant ainsi de les installer sur les systèmes cibles sans aucune modification du flux de travail de l’utilisateur », a déclaré Moussalli, responsable de l’équipe de recherche en sécurité de JFrog.
« La surface d’attaque du paquet PyPI ne cesse de croître. Malgré une intervention proactive, les utilisateurs doivent toujours rester vigilants et prendre les précautions nécessaires pour se protéger et protéger la communauté PyPI de cette technique de piratage. »