Aller au contenu

Préférences et cookies

Afin d’améliorer votre expérience sur notre site et de réaliser des statistiques de visites, nous utilisons des cookies. Rien n’est déposé sans votre accord, et le refus n’enlève l’accès à aucun contenu. Ce choix peut être modifié à tout moment.

Gérer les traceursVos données

Personnaliser

ArticleApplications & Développement

PyPI veut détecter les malwares dans les logiciels Python

De plus en plus populaire, les logiciels en Python ne sont pas exempts de problèmes de sécurité. Un responsable de PyPi a déployé le projet Quarantine visant à éviter la prolifération de logiciels malveillants.

La rédaction

Pour faire face au détournement généralisé de programmes Python à des fins malveillantes, les administrateurs du Python Package Index (PyPI) ont lancé un projet pour renforcer la sécurité. Nommé Quarantine, l’initiative a été lancée en début d’année 2024 et elle vient d’être déployée en ce début d’année 2025. Elle consiste à identifier et à empêcher les paquets contenant des malwares de proliférer au sein de la communauté open source qui contribue et consomme des logiciels Python.

Le projet, présenté dans un billet de blog par Mike Fiedler, seul administrateur responsable de la sécurité de Python, permet aux administrateurs de PyPI et à un groupe restreint de développeurs de marquer un projet comme potentiellement dangereux et de l'empêcher d'être facilement installé par les utilisateurs, afin d'éviter d'autres dommages.

Le PyPI, un vecteur intéressant pour les mauvais acteurs

Python est victime de son propre succès. Le Python Package Index (PyPI) répertorie plus de 625 000 paquets et plusieurs sont ajoutés chaque jour. Les auteurs de logiciels malveillants sont donc tentés d'injecter leur code dans ces paquets. À partir de là, le code est distribué sur Internet par des développeurs sans savoir qu’il est pollué. D’autant que, « avec un tel volume de paquets, l'index est constamment menacé par des cybercriminels qui peuvent détourner les paquets en leur donnant des noms similaires aux paquets légitimes, ou créer une confusion supplémentaire au niveau des dépendances », comme l'avait écrit Tom Callaway (développeur chez AWS et ancien de Red Hat) dans un blog en 2023.

« Étant donné que Python est modulaire par nature, la plupart des applications Python s'appuient fortement sur l’index PyPI pour fournir les dépendances nécessaires aux fonctions de base plutôt que de les réinventer à chaque fois. PyPI est également le principal point de distribution des applications et des bibliothèques Python. » Le langage « attire les nouveaux programmeurs parce qu'il est facile à apprendre, ce qui signifie qu’ils sont nombreux à ne pas pensés nécessairement à la sécurité », a pointé Ed Woodruff, un expert en sécurité offensive. « Avant ce projet de quarantaine, nous ne mettions pas beaucoup l'accent sur la sécurité, et je me réjouis de voir ce projet prendre les devants. »

Une question de ressources et de soutien financier

D'autres projets open source ont des volumes de paquets plus faibles ou peuvent s’appuyer sur des entreprises qui disposent de fonds et de ressources pour assurer le contrôle nécessaire. C’est le cas par exemple de NPM, l'index des logiciels Java géré par GitHub. « GitHub est très doué pour détecter les malwares et dispose de certains des meilleurs chercheurs en sécurité au monde », a rappelé Janet Worthington, analyste chez Forrester Research.

Selon Shachar Menashe, vice-président de la recherche en sécurité chez Jfrog, NPM dispose de beaucoup plus de ressources pour empêcher la compromission des paquets. « PyPI n'a que quatre administrateurs à temps plein, M. Fiedler étant le seul expert de la sécurité. Et même avec toutes ces ressources, NPM détecte encore une douzaine de paquets 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 pour 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 les nomenclatures des logiciels (SBOM) pour fournir une certaine visibilité sur les projets dépendants. Ce dernier point a suscité beaucoup d’attention en 2021, au moment des exploits Apache Log4j, et il a été inscrit comme une priorité dans un récent décret de Joe Biden visant à encourager une meilleure sécurité des logiciels.

On trouve également des outils d'analyse commerciaux, comme Repository Firewall de Sonatype, qui affirme pouvoir intercepter les malwares dès le début du cycle de développement. Une autre voie consiste à former les développeurs, « afin qu'ils prennent en compte la sécurité plus tôt dans leur processus de codage ». Mme Worthington estime aussi que « les entreprises devraient procéder à un filtrage préalable de tout paquet logiciel avant de l'utiliser, ce qui constitue une bonne pratique générale. » Malheureusement, cela fait des décennies que cette notion de sécurité par design a été introduite dans le monde du développement.

Quarantine : une bonne détection des faux-positifs

Depuis sa mise en action en août dernier, le projet Quarantine a permis de trouver environ 140 projets, dont tous, sauf un, contenaient des malwares et ont été retirés de la circulation depuis. Avant le déploiement de la fonction de quarantaine, les administrateurs de PyPI résolvaient la question des paquets suspects de manière plus brutale : ils les supprimaient définitivement de leur base de données. C'était une bonne chose si le paquet contenait effectivement des logiciels malveillants, mais parfois, la suspicion reposait sur de faux positifs et il n'était pas facile de rétablir les choses.

Le processus de quarantaine met le paquet en attente pendant qu'il est analysé. Il raccourcit le temps pendant lequel un paquet malveillant peut être utilisé et « décourage davantage les acteurs malveillants à utiliser PyPI pour distribuer leurs malwares », a écrit M. Fiedler dans son billet. Il précise que les administrateurs cherchent à rendre plus efficace l’utilisation de l'automatisation pour passer au crible les différents paquets Python afin d'identifier les comportements douteux plus tôt dans le processus d'évaluation. « Le processus de mise en quarantaine permet aussi de réduire les faux positifs », a indiqué M. Menashe. « On ne peut pas bloquer quelque chose sans examiner attentivement le code, et cela prend du temps. »

« La quarantaine semble être une approche très pratique pour résoudre un problème complexe », a fait valoir Jeff Williams, directeur technique de Contrast Security. « Ce n'est certainement pas la panacée pour les codes malveillants. C'est plutôt un garrot, mais c'est un excellent moyen de protéger temporairement les utilisateurs le temps de procéder à une évaluation plus rigoureuse. Les malwares sont impossibles à détecter automatiquement, parce que les attaquants peuvent les faire passer pour inoffensifs et qu'il existe de nombreuses sources de code qui contribuent à des projets open source. Les défenses traditionnelles, y compris nos outils, n’essayent donc pas de bloquer les logiciels malveillants. Un processus manuel est toujours nécessaire », a ajouté M. Williams.

Newsletter

La Quotidienne LMI

Recevez chaque matin l’actualité IT de la rédaction.

PyPI veut détecter les malwares dans les logiciels Python