Le langage de programmation populaire a ajouté un moyen de rechercher les packages contenant des logiciels malveillants.
Les administrateurs du Python Package Index (PyPI) ont commencé à s’efforcer d’améliorer les centaines de milliers de progiciels répertoriés. La tentative, qui a débuté au début de l’année dernière, vise à identifier et à empêcher la prolifération des packages contenant des logiciels malveillants au sein de la communauté open source qui contribue et consomme les logiciels Python. Comme indiqué précédemment, le détournement de programmes Python est devenu très répandu.
L’effort appelé Project Quarantine est décrit dans un article de blog de Mike Fiedler, qui est le seul administrateur responsable de la sécurité Python. Le projet permet aux administrateurs PyPI et à un groupe sélectionné de développeurs de marquer un projet comme potentiellement dangereux et d’empêcher son installation facile par les utilisateurs, évitant ainsi d’autres dommages.
Ce qui rend PyPI intéressant pour les mauvais acteurs
Python est victime de son propre succès. PyPI répertorie plus de 625 000 packages, et de nouveaux sont ajoutés quotidiennement. Cela offre aux auteurs de logiciels malveillants une opportunité tentante d’injecter leur code dans un package. À partir de là, le code est distribué sur Internet par des développeurs qui ne savaient pas que leur code était pollué.
Ce volume de packages signifie que l’index est constamment menacé par des acteurs malveillants, avec des attaques incluant l’utilisation de packages portant des noms similaires pour squatter les packages légitimes ou créer davantage de confusion en matière de dépendances, comme l’a écrit Tom Callaway dans un blog en 2023. « Puisque Python est modulaire par nature, la plupart des applications Python s’appuient fortement sur PyPI pour fournir les dépendances nécessaires aux fonctions principales plutôt que de les réinventer à chaque fois. PyPI est également le principal point de distribution des applications et bibliothèques Python.
Comment d’autres projets open source se comportent contre les mauvais acteurs
NPM dispose de beaucoup plus de ressources pour empêcher les packages compromis, selon Shachar Menashe, vice-président de la recherche en sécurité chez Jfrog. « PyPI ne compte que quatre administrateurs à temps plein, Fiedler étant le seul spécialiste de la sécurité. » Même avec toutes ces ressources chez NPM, ils voient toujours environ une douzaine de packages Java malveillants chaque jour.
Autres moyens de sécuriser les projets open source
Il existe d’autres moyens complémentaires aux mécanismes de quarantaine qui permettent de mieux sécuriser ces vastes collections de codes open source. Par exemple, de nombreux fournisseurs proposent des scanners d’applications statiques et dynamiques, et il existe d’autres outils qui collectent la nomenclature des logiciels pour offrir une certaine visibilité sur les projets dépendants. Ce dernier a reçu une grande attention lorsque les exploits Apache Log4j ont frappé en 2021, et est l’un des objectifs d’un récent décret de Biden visant à encourager une meilleure sécurité des logiciels. Et il existe des outils d’analyse commerciaux, tels que Repository Firewall de Sonatype, qui prétendent être capables d’intercepter les logiciels malveillants dès le début du cycle de vie de développement.
Une autre voie consiste à former les développeurs, « afin qu’ils prennent en compte la sécurité plus tôt dans leurs processus de codage. Et les entreprises devraient présélectionner tout package avant son utilisation en tant que bonne pratique générale », a déclaré Worthington. Malheureusement, cette notion de sécurité dès la conception est répandue dans le monde du développement depuis des décennies.
La fonctionnalité de quarantaine a été activée en août dernier et a initialement détecté environ 140 projets, tous sauf un contenant des logiciels malveillants et depuis retirés de la circulation. Avant le déploiement de la fonctionnalité de quarantaine, les administrateurs PyPI disposaient d’un outil simple pour gérer les paquets suspects : la suppression définitive de leur base de données. C’était bien si le paquet contenait effectivement un logiciel malveillant, mais parfois ces désignations étaient de faux positifs et difficiles à rétablir. Le processus de quarantaine met le colis dans les limbes pendant son analyse. Cela permet également de réduire la durée pendant laquelle un package malveillant est disponible et « réduit encore davantage l’incitation des acteurs malveillants à utiliser PyPI comme méthode de distribution », a écrit Fiedler dans son article. Il mentionne qu’ils travaillent sur des moyens d’utiliser plus efficacement l’automatisation pour aider à filtrer les différents packages Python afin d’identifier les comportements malveillants plus tôt dans le processus d’évaluation. « Le processus de quarantaine contribue également à réduire les faux positifs », a déclaré Menashe. « Vous ne pouvez tout simplement pas bloquer quelque chose sans examiner attentivement le code, et cela prend du temps. »