Des paquets malveillants portant des noms trompeurs ont été découverts sur la plateforme PyPI
Ils pourraient avoir été utilisés dans des logiciels

Le , par Olivier Famien, Chroniqueur Actualités
L’autorité de sécurité nationale slovaque vient d’alerter les mainteneurs de la plateforme Python Package Index (PyPI) sur du code malveillant qui a été introduit dans des paquets et mis à la disposition des développeurs sur ce dépôt. Ces codes malicieux qui sont en majeure partie des bibliothèques ont été publiés sous des noms légèrement modifiés ressemblant aux paquets officiels disponibles sur PyPI. Par exemple, un paquet a été nommé urllib en référence au dépôt officiel nommé urrlib3, ou encore un autre paquet a été nommé bzip pour semer la confusion par rapport au paquet officiel nommé bzip2. Ci-dessous, la liste complète des paquets publiés sur la plateforme avec du code malveillant.

  • Le paquet Django-server a été publié sur la plateforme le 2 juin dernier à 8 h 22 pour se faire passer pour django-server-guardian-api ;
  • Le paquet acqusition a été posté sur la plateforme le 3 juin dernier à 1 h 58 en référence au dépôt officiel nommé acquisition ;
  • Le paquet apidev-coop a été posté sur la plateforme le 3 juin dernier à 5 h 16 afin de se faire passer pour apidev-coop_cms ;
  • Le paquet bzip a été publié sur la plateforme le 4 juin dernier à 7 h 8 pour se faire passer pour bz2file ;
  • Le paquet crypt a été publié sur la plateforme le 3 juin dernier à 8 h 3 pour se faire passer pour le dépôt crypto ;
  • Le paquet pwd a été publié sur la plateforme le 2 juin dernier à 13 h 12 afin de se faire passer pour Pwdhash ;
  • Le paquet setup-tools a été publié sur la plateforme le 2 juin dernier à 8 h 54 pour se faire passer pour setuptools ;
  • Le paquet telnet a été publié sur la plateforme le 2 juin dernier à 15 h 35 pour se faire passer pour telnetsrvlib ;
  • Le paquet urlib3 a été publié sur la plateforme le 2 juin dernier à 7 h 9 pour se faire passer pour urllib3 ;
  • Le paquet urllib a été publié sur la plateforme le 2 juin dernier à 7 h 3 pour se faire passer pour urllib3.


Selon les découvertes faites par l’agence de sécurité slovaque, « ces paquets contiennent exactement le même code que leur paquet en amont, leur fonctionnalité est identique, mais le script d’installation, setup.py, est modifié pour inclure un code malveillant (mais relativement bénin) ». « Le code malveillant ajouté aux faux paquets est exécuté dès que le développeur ou l’administrateur système installe le paquet (ce qui se fait souvent avec des privilèges administrateur) ».

Après analyse des échantillons des paquets disponibles, les chercheurs slovaques expliquent que les auteurs de ces paquets falsifiés ont utilisé des techniques d’offuscation pour cacher les données. Seules quelques informations comme l’exécution d’une requête HTTP vers un serveur distant à partir de l’adresse http://121.42.217.44:8080/, le nom d’hôte, le nom de l’utilisateur qui a installé le paquet ont pu être récoltées.

Et pour couronner le tout, les chercheurs expliquent qu’il existe des « preuves que les faux paquets ont effectivement été téléchargés et incorporés dans plusieurs logiciels entre juin 2017 et septembre 2017. »

Pour l'agence slovaque, « le succès de l’attaque repose sur la négligence du développeur, ou de l’administrateur système, qui ne vérifie pas complètement le nom du paquet ». Plusieurs personnes ayant téléchargé ces paquets par divers moyens y compris avec l’utilitaire pip, les chercheurs soulignent l’attaque est facilitée par cet outil qui ne nécessite pas la signature cryptographique et exécute du code arbitraire pendant l’installation du paquet, ce qui est un bogue et une fonctionnalité bien documentée. En outre, l’agence de sécurité slovaque met en avant le fait qu’il est « également facile de publier n’importe quel code Python arbitraire dans le dépôt PyPI, qui n’a pas de contrôle de qualité ou d’évaluation de code.»

Après avoir découvert la supercherie, les chercheurs de l’agence slovaque ont alerté la plateforme PyPI. Les paquets malveillants ont été automatiquement retirés du dépôt. Toutefois, le danger n’est pas pour autant écarté avec les différents paquets qui auraient été intégrés dans les logiciels et distribués à travers les serveurs.

Après la lumière faite sur ce problème de typographie utilisé pour tromper les visiteurs de la plateforme PyPI, le chercheur Benjamin Bach et le journaliste Hanno Böck ont rapporté qu’ils ont également alimenté le dépôt PyPI avec des paquets dont les noms ressemblent fortement aux paquets officiels de la plateforme. Vu que cette approche n’avait d’autres buts que de montrer le degré d’exposition des développeurs lors du téléchargement des paquets sur PyPI, Bach a modifié les paquets qui contenaient le code des paquets officiels afin qu’ils se connectent seulement à un serveur qui enregistre l’adresse IP de chaque développeur. En l’espace de deux jours, 7535 téléchargements ont été effectués avec leurs 20 paquets les plus téléchargés. Par ailleurs, bien que ces paquets aient été retirés de PyPI, Bach informe que ses 108 autres paquets portant des noms trompeurs n’ont pas encore été retirés.

Source : Rapport de l’agence de sécurité slovaque, Rapport de Benjamin Bach

Et vous ?

Fréquentez-vous PyPI ?

Avec ces possibilités de télécharger des paquets infectés sur cette plateforme, allez-vous continuer à la fréquenter ?

Voir aussi

Un bogue dans Java et Python permettrait à des attaquants de contourner les défenses des pare-feu, selon des chercheurs en sécurité


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Bktero Bktero - Modérateur https://www.developpez.com
le 19/09/2017 à 8:28
Comme toute personne utilisant Python, oui j'utilise PyPI pour installer des paquets avec pip(3).

Et, je pense, que comme toute personne utilisant Python, je ne vais pas m'arrêter d'utiliser cette plateforme.... mais je ferai attention ! :-o
Avatar de CaptainDangeax CaptainDangeax - Membre averti https://www.developpez.com
le 20/09/2017 à 9:37
J'utilise des paquets issus de pypi pour certains projets, comme "splinter" pour automatiser des pages web. Mais ça m'a toujours gêné, ce dépot en dehors, à coté, des dépôts officiels. J'aurais 100x préféré pouvoir télécharger splinter depuis apt-get.
Avatar de cervo cervo - Membre averti https://www.developpez.com
le 21/09/2017 à 12:02

je pense qu'uliser une signature crypto pour telecharger les paquets sera un bon debut. mais la réelle solution sera d'evaluer ou de tester les codes avant leur publication sur le depot pypi... au moins on obtient une garantie que le code posté à été évalué auparavant... meme si faut pas se cacher que ce sera une grosse tâche.
Offres d'emploi IT
Agent secret Java JEE
Capgemini - Ile de France - Paris (75000)
IT lead développeur H/F
Capgemini - Bretagne - Rennes (35000)
Ingénieur Support Applicatif
Bspp Sourcing - France - Paris

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil