24/04/2024
Les attaques de la chaîne d'approvisionnement, comme la dernière découverte de PyPi, insèrent du code malveillant dans des packages logiciels apparemment fonctionnels utilisés par les développeurs.  Ils deviennent de plus en plus fréquents.

PyPI a stoppé les nouveaux utilisateurs et projets tout en repoussant les attaques de la chaîne d'approvisionnement


Agrandir / Les attaques contre la chaîne d'approvisionnement, comme la dernière découverte de PyPI, insèrent du code malveillant dans des progiciels apparemment fonctionnels utilisés par les développeurs. Ils sont de plus en plus courants.

Getty Images

PyPI, un référentiel essentiel pour les développeurs open source, a temporairement interrompu la création de nouveaux projets et l'enregistrement de nouveaux utilisateurs à la suite d'une vague de téléchargements de packages exécutant du code malveillant sur tout appareil les installant. Dix heures plus tard, elle a levé la suspension.

Abréviation de Python Package Index, PyPI est la source incontournable pour les applications et les bibliothèques de code écrites dans le langage de programmation Python. Les sociétés Fortune 500 et les développeurs indépendants s'appuient sur le référentiel pour obtenir les dernières versions de code nécessaires à l'exécution de leurs projets. Mercredi, peu après 19 heures (heure du Pacifique), le site a commencé à afficher une bannière informant les visiteurs que le site suspendait temporairement la création de nouveaux projets et l'enregistrement de nouveaux utilisateurs. Le message n'expliquait pas pourquoi ni ne fournissait une estimation du moment où la suspension serait levée.

Capture d'écran montrant une notification de suspension temporaire.
Agrandir / Capture d'écran montrant une notification de suspension temporaire.

Checkmarx

Environ 10 heures plus tard, PyPI a restauré la création de nouveaux projets et l'enregistrement de nouveaux utilisateurs. Une fois de plus, le site n'a fourni aucune raison pour justifier cet arrêt de 10 heures.

Selon la société de sécurité Checkmarx, dans les heures qui ont précédé la fermeture, PyPI a été attaqué par des utilisateurs qui ont probablement utilisé des moyens automatisés pour télécharger des packages malveillants qui, une fois exécutés, infectaient les appareils des utilisateurs. Les attaquants ont utilisé une technique connue sous le nom de typosquatting, qui exploite les fautes de frappe commises par les utilisateurs lors de la saisie des noms de packages populaires dans les interfaces de ligne de commande. En donnant aux packages malveillants des noms similaires à des packages inoffensifs populaires, les attaquants s'attendent à ce que leurs packages malveillants soient installés lorsque quelqu'un entre par erreur un mauvais nom.

« Les acteurs de la menace ciblent leurs victimes avec une technique d'attaque Typosquatting en utilisant leur CLI pour installer des packages Python », chercheurs de Checkmarx Yehuda Gelb, Jossef Harush Kadouri et Tzachi Zornstain. a écrit jeudi. « Il s’agit d’une attaque en plusieurs étapes et d’une charge utile malveillante visant à voler des portefeuilles cryptographiques, des données sensibles des navigateurs (cookies, données d’extensions, etc.) et diverses informations d’identification. De plus, la charge utile malveillante utilisait un mécanisme de persistance pour survivre aux redémarrages.

Capture d'écran montrant certains des packages malveillants trouvés par Checkmarx.
Agrandir / Capture d'écran montrant certains des packages malveillants trouvés par Checkmarx.

Checkmarx

Le message indiquait que les packages malveillants étaient « très probablement créés à l'aide d'automatisation », mais ne donnait pas de détails. Les tentatives visant à joindre les responsables de PyPI pour obtenir leurs commentaires n'ont pas immédiatement abouti. Les noms des paquets imité ceux des packages et bibliothèques populaires tels que Demandes, Oreilleret Colorama.

La suspension temporaire n'est que le dernier événement mettant en évidence les menaces croissantes auxquelles est confronté l'écosystème du développement logiciel. Le mois dernier, des chercheurs ont révélé une attaque contre le référentiel de code open source GitHub qui inondait le site de millions de packages contenant du code obscurci qui volait des mots de passe et des crypto-monnaies sur les appareils des développeurs. Les paquets malveillants étaient des clones de paquets légitimes, ce qui les rendait difficiles à distinguer à un œil occasionnel.

La partie responsable a automatisé un processus qui a créé des packages légitimes, ce qui signifie que le code source a été copié afin que les développeurs puissent l'utiliser dans un projet indépendant basé sur celui d'origine. Le résultat fut des millions de fourchettes avec des noms identiques à ceux d'origine. À l’intérieur du code identique se trouvait une charge utile malveillante enveloppée dans plusieurs couches d’obscurcissement. Bien que GitHub ait pu supprimer rapidement la plupart des packages malveillants, la société n'a pas été en mesure de tous les filtrer, laissant le site dans une boucle persistante de whack-a-mole.

Des attaques similaires sont une réalité pour pratiquement tous les référentiels open source, y compris npm pack picks et RubyGems.

Plus tôt cette semaine, Checkmarx a signalé un attaque distincte sur la chaîne d’approvisionnement qui ciblait également les développeurs Python. Les acteurs de cette attaque ont cloné l'outil Colorama, y ​​ont caché du code malveillant et l'ont rendu disponible en téléchargement sur un faux site miroir avec un domaine typosquatté qui imitait celui légitime de files.pythonhosted.org. Les attaquants ont détourné les comptes de développeurs populaires, probablement en volant les cookies d'authentification qu'ils utilisaient. Ensuite, ils ont utilisé les comptes piratés pour contribuer à des commits malveillants comprenant des instructions pour télécharger le clone malveillant de Colorama. Checkmarx a déclaré avoir trouvé des preuves que certains développeurs avaient été infectés avec succès.

Dans le message de jeudi, les chercheurs de Checkmarx ont rapporté :

Le code malveillant se trouve dans le fichier setup.py de chaque package, permettant une exécution automatique lors de l'installation.

De plus, la charge utile malveillante utilisait une technique dans laquelle le fichier setup.py contenait du code obscurci qui était chiffré à l'aide du module de chiffrement Fernet. Lorsque le package a été installé, le code obscurci a été automatiquement exécuté, déclenchant la charge utile malveillante.

Checkmarx

Lors de son exécution, le code malveillant contenu dans le fichier setup.py a tenté de récupérer une charge utile supplémentaire à partir d'un serveur distant. L'URL de la charge utile a été construite dynamiquement en ajoutant le nom du package comme paramètre de requête.

Capture d'écran du code créant une URL dynamique.
Agrandir / Capture d'écran du code créant une URL dynamique.

Checkmarx

La charge utile récupérée a également été chiffrée à l'aide du module Fernet. Une fois décryptée, la charge utile a révélé un vaste voleur d'informations conçu pour récolter des informations sensibles sur la machine de la victime.

La charge utile malveillante utilisait également un mécanisme de persistance pour garantir qu'elle restait active sur le système compromis même après l'exécution initiale.

Capture d'écran montrant le code qui permet la persistance.
Agrandir / Capture d'écran montrant le code qui permet la persistance.

Checkmarx

En plus d'utiliser le typosquatting et une technique similaire connue sous le nom de brandjacking pour inciter les développeurs à installer des packages malveillants, les acteurs malveillants ont également recours à la confusion des dépendances. La technique fonctionne en téléchargeant des packages malveillants vers des référentiels de code publics et en leur attribuant un nom identique à celui d'un package stocké dans le référentiel interne du développeur cible dont dépendent une ou plusieurs applications du développeur pour fonctionner. Les applications de gestion de logiciels des développeurs privilégient souvent les bibliothèques de codes externes par rapport aux bibliothèques internes, de sorte qu'ils téléchargent et utilisent le package malveillant plutôt que celui de confiance. En 2021, un chercheur a utilisé une technique similaire pour exécuter avec succès un code contrefait sur des réseaux appartenant à Apple, Microsoft, Tesla et des dizaines d’autres sociétés.

Il n’existe aucun moyen infaillible de se prémunir contre de telles attaques. Au lieu de cela, il incombe aux développeurs de vérifier et de revérifier méticuleusement les packages avant de les installer, en accordant une attention particulière à chaque lettre d'un nom.





Source

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *