Le paquet PyPI "keep" aurait inclus par erreur un voleur de mots de passe
le mainteneur aurait involontairement introduit une dépendance malveillante par une faute de frappe
Une analyse a révélé récemment que les paquets PyPI "keep", "pyanxdns" et "api-res-py" contiennent une porte dérobée en raison de la présence de la dépendance malveillante 'request' dans certaines versions. Par exemple, alors que la plupart des versions du projet "keep" utilisent le module Python légitime "requests", qui permet d'effectuer des requêtes HTTP, la version 1.2 de "keep" contient "request" (sans s) qui est un paquet malveillant. À la question de savoir si cela était dû à une simple erreur typographique, à un autosabotage ou au piratage des comptes du responsable, un développeur de "pyanxdns" a confirmé qu'il s'agissait d'une erreur de frappe.
En mai, l'utilisateur de GitHub "duxinglin1" a remarqué que les versions vulnérables des paquets PyPI "keep", "pyanxdns" et "api-res-py" contenaient la dépendance mal orthographiée "request", par opposition à la bibliothèque légitime "requests". En tant que tels, les CVE suivants ont été attribués cette semaine en ce qui concerne les versions vulnérables :
- CVE-2022-30877 : la version 1.2 de 'keep' contient la porte dérobée 'request' ;
- CVE-2022-30882 : la version 0.2 de 'pyanxdns' est affectée ;
- CVE-2022-31313 : la version 0.1 de "api-res-py" est affectée.
Bien que les paquets "pyanxdns" et "api-res-py" soient des projets à petite échelle, le paquet "keep", en particulier, est téléchargé plus de 8 000 fois par semaine en moyenne. « 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 paquet "request". Même si le paquet malveillant "request" a été supprimé par PyPI, de nombreux sites miroirs n'ont pas complètement supprimé ce paquet, il peut donc encore être installé », a écrit l'utilisateur de GitHub duxinglin1. Le code malveillant contenu dans le paquet "request" est mis en évidence ci-dessous (image).
La ligne 57 contient une URL codée en base64 vers le programme malveillant "check.so". Un autre analyste a également identifié une autre URL (x.pyx) associée à la dépendance "request" contrefaite. Le fichier "check.so" contient un cheval de Troie d'accès à distance (RAT), tandis que le fichier "x.pyx" contient un logiciel malveillant de vol d'informations qui vole les cookies et les informations personnelles des navigateurs Web tels que Chrome, Firefox, Yandex, Brave, etc. L'analyse a révélé que le cheval de Troie voleur d'informations tentera de dérober les noms de connexion et les mots de passe stockés dans les navigateurs Web.
Après avoir obtenu l'accès aux informations d'identification de l'utilisateur, les acteurs de la menace peuvent ensuite tenter de compromettre d'autres comptes utilisés par le développeur, ce qui peut conduire à d'autres attaques de la chaîne d'approvisionnement. Cependant, la présence d'une dépendance malveillante dans plusieurs paquets PyPI soulève une question cruciale : comment cela s'est-il produit ? Les analystes se demandent en effet s'il s'agissait d'une simple erreur typographique, d'un autosabotage ou d'un détournement de comptes de mainteneurs. Les mainteneurs des paquets "keep" et "api-res-py" ne se sont pas encore prononcé.
En revanche, l'auteur et mainteneur de "pyanxdns", Marky Egebäck, a confirmé qu'il s'agissait d'une erreur typographique et non d'une compromission de compte. En outre, selon les analystes, à première vue, il semble que les auteurs des deux autres paquets aient également introduit par inadvertance "request" au lieu du paquet légitime "requests", en raison d'une innocente erreur de frappe. « Désolé de dire qu'il s'agit d'une simple faute de frappe dans le fichier setup.py puisque l'historique git montre que cela a été ajouté lorsque "install_requires" a été ajouté par moi », a déclaré Egebäck.
Egebäck a depuis retéléchargé une nouvelle version sur PyPI et supprimé la version faisant référence à la dépendance malveillante "request". « C'était une erreur honnête basée sur une faute de frappe dans le fichier setup.py. Je ne publie généralement pas de choses sur PyPI, mais j'ai fait cela rapidement pour un ami et moi-même. Je ne suis pas sûr qu'il en a fait la promotion, mais le but était principalement un usage personnel dans un projet docker interne », explique-t-il. Egebäck a remercié l'utilisateur de GitHub "duxinglin1" d'avoir mis en évidence la présence de la dépendance malveillante dans son projet.
Il a également expliqué qu'il n'avait pas consacré beaucoup de temps à la maintenance du projet ces derniers temps. « Cela aurait été beaucoup mieux de corriger ça plus tôt, mais je n'ai pas compris la gravité de la situation et, comme je consacre très peu de temps au codage, cela a pris beaucoup de temps », a déclaré Egebäck. En effet, lors du codage d'applications, d'innocentes fautes de frappe de la part du développeur peuvent, par inadvertance, donner lieu à des attaques de typosquattage qui comptent sur de telles erreurs pour compromettre la chaîne d'approvisionnement des logiciels.
Le typosquattage est un type d'attaque d'ingénierie sociale qui cible les internautes qui tapent incorrectement une URL dans leur navigateur Web plutôt que d'utiliser un moteur de recherche. Il s'agit généralement d'inciter les utilisateurs à visiter des sites Web malveillants dont les URL sont des fautes d'orthographe courantes de sites Web légitimes. Les utilisateurs peuvent être amenés à saisir des informations sensibles sur ces faux sites. Pour les organisations victimes de ces attaquants, ces sites peuvent causer des dommages importants à leur réputation.
Le terme "typo", dans typosquattage, fait référence aux petites erreurs que l'on peut faire en tapant sur un clavier. Le typosquattage est également connu sous le nom de détournement d'URL, d'imitation de domaine, de sites piégés ou de fausses URL. Ceux qui ont l'habitude de taper rapidement et de manière imprécise ou qui se fient beaucoup à la correction automatique sont particulièrement susceptibles d'en être victimes - par exemple, en tapant gogle.com au lieu de google.com. Parfois, un utilisateur n'a pas fait de faute de frappe, mais ignore l'orthographe correcte d'un nom de marque, et les squatteurs sont bien conscients de ce fait.
Bien que dans ce cas, la dépendance malveillante "request" ait été retirée depuis longtemps du registre PyPI, les personnes utilisant une version vulnérable des paquets PyPI et s'appuyant sur un miroir pour récupérer les dépendances peuvent se retrouver avec des voleurs d'informations sur son système. Par ailleurs, plusieurs paquets npm ont été autosabotés par leurs propres auteurs ces derniers mois. Par exemple, en mars, un paquet npm compromis par l'auteur efface les fichiers sur les ordinateurs russes et biélorusses lors de l'installation. Le mainteneur du paquet a déclaré l'avoir fait pour protester contre l'invasion de l'Ukraine par la Russie.
Sources : keep (1, 2), CVE-2022-30877,
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous de la déclaration selon laquelle la dépendance malveillante a été introduite par erreur ?
Que pensez-vous des attaques de typosquattage ?
Selon vous, comment les développeurs peuvent s'en prémunir ?
Voir aussi
Un paquet npm compromis par l'auteur efface les fichiers sur les ordinateurs russes et biélorusses lors de l'installation, pour protester contre l'invasion de l'Ukraine par la Russie
La bibliothèque npm populaire "coa" est détournée pour voler les mots de passe des utilisateurs, le paquet npm "rc" serait également compromis
Un dev open source aurait volontairement corrompu des bibliothèques largement utilisées, affectant des tonnes de projets, il avait précédemment demandé à être rémunéré pour son travail
Partager