Actus

Le package PyPI ‘keep’ incluait par erreur un voleur de mot de passe

Par , le 12 juin 2022 - 8 minutes de lecture
Le package PyPI 'keep' incluait par erreur un voleur de mot de passe
Notez l'article

Les packages PyPI “keep”, “pyanxdns”, “api-res-py” contiennent une porte dérobée en raison de la présence d’une dépendance malveillante “request” dans certaines versions.

Par exemple, alors que la plupart des versions du projet “keep” utilisent les requêtes légitimes du module Python pour effectuer des requêtes HTTP, “keep” v.1.2 contient “request” (sans s) qui est un logiciel malveillant.

BleepingComputer a contacté les auteurs de chacun de ces packages pour comprendre si cela était dû à une simple erreur typographique, à un auto-sabotage ou à un piratage des comptes du responsable.

Le paquet PyPI ‘keep’ utilise une ‘demande’ malveillante

Le paquet PyPI 'keep' utilise une 'demande' malveillante

Certaines versions des packages PyPI, “keep”, “pyanxdns” et “api-res-py” ont été détectées à l’aide d’une dépendance malveillante, “request”,

En mai, l’utilisateur de GitHub duxinglin1 a remarqué que les versions vulnérables contenaient la dépendance “request” mal orthographiée, par opposition à la bibliothèque de requêtes légitimes.

Ainsi, les CVE suivants ont été attribués cette semaine en ce qui concerne les versions vulnérables :

Bien que “pyanxdns” et “api-res-py” puissent être des projets à petite échelle, le package “keep”, en particulier, est téléchargé plus de 8 000 fois par semaine en moyenne, sa version 1.2 utilisant la dépendance malveillante :

En 2020, Tencent Onion Anti-Intrusion System a découvert une “requête” typosquat malveillante téléchargée dans le registre PyPI qui empruntait l’identité de la bibliothèque HTTP des requêtes, mais laissait plutôt tomber des voleurs d’informations malveillants.

“Nous avons trouvé une porte dérobée malveillante dans la version 1.2 de ce projet, et sa porte dérobée malveillante est le package de requête. Même si le package de requête a été supprimé par PyPI, de nombreux sites miroirs n’ont pas complètement supprimé ce package, il peut donc toujours être installé.” écrit l’utilisateur GitHub duxinglin1.

Le code malveillant à l’intérieur de la “demande” contrefaite est mis en évidence ci-dessous :

La ligne 57 contient une URL encodée en base64 vers le logiciel malveillant “check.so” illustré ci-dessous. L’analyste des menaces d’Intel blackorbird a également identifié une autre URL (x.pyx), également indiquée ci-dessous, associée à la dépendance “demande” contrefaite :

http://dexy[.]top/request/check.so

http://dexy[.]top/x.pyx

Le fichier « check.so » fournit un cheval de Troie d’accès à distance (RAT), tandis que « x.pyx » obtenu par BleepingComputer contient des logiciels malveillants voleurs d’informations qui volent des cookies et des informations personnelles à partir de navigateurs Web tels que Chrome, Firefox, Yandex, Brave et beaucoup plus:

Le cheval de Troie voleur d’informations tentera de voler les noms de connexion et les mots de passe stockés dans les navigateurs Web.

Détournement ou véritable faute de frappe ?

Détournement ou véritable faute de frappe ?

Après avoir obtenu l’accès aux informations d’identification de l’utilisateur, les acteurs de la menace peuvent alors tenter de compromettre d’autres comptes utilisés par le développeur, ce qui pourrait entraîner encore plus d’attaques de la chaîne d’approvisionnement.

La présence d’une dépendance malveillante dans plusieurs packages PyPI soulève une question cruciale : comment cela s’est-il produit ?

BleepingComputer a contacté les auteurs de chacun de ces packages pour comprendre si cela était dû à une simple erreur typographique, à un auto-sabotage ou au piratage des comptes du responsable.

Nous avons reçu une réponse de l’auteur et responsable de “pyanxdns”, Marky Egebäck, qui confirme que cela résulte d’une erreur typographique plutôt que d’un compromis de compte.

Et, à première vue, il semble que les auteurs des deux autres paquets aient également introduit par inadvertance la “demande” par opposition aux “demandes” légitimes en raison d’une erreur de frappe innocente.

“Désolé de dire par une simple faute de frappe dans le fichier setup.py puisque l’historique de git montre que cela a été ajouté lorsque le install_requires a été ajouté par moi”, a déclaré Egebäck à BleepingComputer.

Le développeur a depuis rechargé une nouvelle version sur PyPI et supprimé la version faisant référence à la dépendance “request” malveillante.

“C’était [une] erreur honnête basée sur une faute de frappe dans setup.py. Je ne publie généralement pas de choses sur PyPI mais je l’ai fait rapidement pour un ami et moi-même. Je ne sais pas s’il en a fait la promotion, mais le but était principalement pour un usage personnel dans [un] projet docker interne”, déclare Egebäck.

Egebäck a apprécié l’utilisateur GitHub duxinglin1 pour avoir mis en évidence la présence de la dépendance malveillante dans son projet et a expliqué qu’il n’a pas passé beaucoup de temps à maintenir le projet Python contribué ces derniers temps :

“Ce qui aurait bien sûr pu être fait beaucoup mieux aurait été de résoudre ce problème plus tôt, mais je n’en comprenais pas la gravité et comme j’ai mis très peu de temps malheureusement [de nos jours] avec le codage, cela a pris beaucoup de temps”, déclare Egebäck.

Lors du codage d’applications, des fautes de frappe innocentes de la part du développeur peuvent, par inadvertance, donner du succès à des attaques de typosquattage qui comptent sur des dérapages aussi précis pour compromettre la chaîne d’approvisionnement logicielle au sens large.

Comment créer un package PyPI ?

Bien que dans ce cas, la dépendance malveillante “demande” ait depuis longtemps été supprimée du registre PyPI, toute personne utilisant une version vulnérable des packages PyPI et s’appuyant sur un miroir pour récupérer les dépendances peut se retrouver avec des voleurs d’informations malveillants sur son système.

  • Commençons!
  • Étape 0 : Préparez votre code à partager. …
  • Étape 1 : créez le fichier __init__.py. …
  • Étape 2 : Créez le fichier setup.py. …
  • Étape 3 : Installez votre package localement. …
  • Étape 4 : Créez les fichiers de licence et README. …
  • Générez votre distribution source. …

Quelle est la signification de PyPI ?

Quelle est la signification de PyPI ?

Créez des comptes pour les référentiels Test PyPI et PyPI.

Le Python Package Index, abrégé en PyPI (/ËŒpaɪpiˈaɪ/) et également connu sous le nom de Cheese Shop (une référence au sketch “Cheese Shop” de Monty Python’s Flying Circus), est le dépôt officiel de logiciels tiers pour Python .

Qu’est-ce que PyPI contre pip ?

A quoi sert PyPI ? PyPI est le référentiel de logiciels par défaut pour les développeurs Python pour stocker les développeurs de logiciels de langage de programmation Python créés et les programmeurs qu’ils utilisent pour publier et partager leurs logiciels. PyPI lui-même simplifie également le processus d’empaquetage Python pour les programmes Python.

Que signifie l’installation de pip ?

pip est utilisé pour télécharger et installer des packages directement à partir de PyPI. PyPI est hébergé par Python Software Foundation. Il s’agit d’un gestionnaire de packages spécialisé qui ne traite que des packages python.

A quoi servent pip et PyPI ?

Pip est un acronyme récursif qui peut signifier “Pip Installs Packages” ou “Pip Installs Python”. Alternativement, pip signifie “programme d’installation préféré”. Python 2.7. 9 et versions ultérieures (sur la série python2), et Python 3.4 et versions ultérieures incluent pip (pip3 pour Python 3) par défaut.

Pouvez-vous attraper un virus de PyPI ?

Pouvez-vous attraper un virus de PyPI ?

La commande pip recherche le package dans PyPI, résout ses dépendances et installe tout dans votre environnement Python actuel pour garantir que les requêtes fonctionneront. La commande pip install recherche toujours la dernière version du package et l’installe.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.