Les logiciels malveillants téléchargés à partir de PyPI 41 000 fois étaient étonnamment furtifs

Les logiciels malveillants téléchargés à partir de PyPI 41 000 fois étaient étonnamment furtifs

19 novembre 2021 0 Par Le Caiman

PyPI – le référentiel open source utilisé par les grandes et les petites organisations pour télécharger des bibliothèques de code – a hébergé 11 packages malveillants téléchargés plus de 41 000 fois dans l’un des incidents de chaîne d’approvisionnement de logiciels les plus récemment signalés. .

JFrog, une entreprise de sécurité qui surveille PyPI et d’autres référentiels de logiciels malveillants, a déclaré que les packages se distinguent par le temps que ses développeurs ont mis pour détecter leur code malveillant à partir de la détection du réseau. Ces longueurs comprennent un nouveau mécanisme qui utilise ce qu’on appelle un coque inversée communication proxy avec des serveurs contrôlés via le réseau de distribution de contenu Fast. Une autre technique est Tunnellisation DNS, ce que JFrog a déclaré n’avoir jamais vu avant de télécharger des logiciels malveillants sur PyPI.

Vecteur puissant

« Les gestionnaires de packages sont un vecteur puissant et croissant pour l’installation involontaire de code malveillant, et comme nous l’avons découvert avec ces 11 nouveaux packages PyPI, les attaquants sont de plus en plus sophistiqués dans leur approche, a écrit Shachar Menashe, directeur principal de la recherche JFrog, à l’e-mail . . « Les techniques d’évasion avancées utilisées dans ces packages de logiciels malveillants, telles que les émulsions novices ou même le tunneling DNS (le premier que nous avons vu dans les packages téléchargés sur PyPI) montrent une tendance inquiétante selon laquelle les attaquants deviennent de plus en plus agressifs dans leurs attaques contre les logiciels open source. . « 

Les chercheurs ont déclaré que PyPI a rapidement supprimé tous les packages malveillants lorsqu’ils ont été signalés par JFrog.

L’utilisation de référentiels open source pour pousser les logiciels malveillants remonte au moins à 2016, lorsqu’un étudiant a téléchargé des packages malveillants sur PyPI, RubyGems et npm. Il a donné aux packages des noms similaires à des packages déjà largement utilisés et soumis par d’autres utilisateurs.

Sur une période de plusieurs mois, son code booster a été exécuté plus de 45 000 fois sur plus de 17 000 domaines distincts, et plus de la moitié du temps, son code a reçu des droits administratifs omnipotents. Deux des domaines concernés se sont retrouvés en .mil, signe que des personnes au sein de l’armée américaine ont peut-être exécuté leur script.

En 2017, l’Autorité nationale de sécurité slovaque a signalé que des packages malveillants téléchargés à partir de PyPI avaient été trouvés dans plusieurs logiciels de production sur une période de trois mois. Depuis lors, il y a eu un nombre presque incalculable de violations de logiciels malveillants dans les référentiels.

En juillet, JFrog a acquis des packages malveillants PyPI, téléchargés plus de 30 000 fois, qui ont mené une série d’activités néfastes, notamment le vol de données de carte de crédit et l’injection de code malveillant dans des machines infectées. Plus tôt cette année, un chercheur a développé un nouveau type d’attaque de la chaîne d’approvisionnement qui pourrait avoir de graves conséquences. Les soi-disant « attaques par confusion de dépendance » fonctionnent en téléchargeant des packages malveillants dans des référentiels de code publics et en leur donnant des noms identiques aux packages légitimes stockés dans le référentiel interne de Microsoft, Apple ou d’un autre développeur de logiciels majeur. Les applications de gestion de logiciels sont souvent préférées par les développeurs de bibliothèques de code externes plutôt que internes, de sorte qu’elles téléchargent et utilisent le package malveillant plutôt que celui de confiance.

De l’agresseur à la victime en passant par Fastly

Or, ces types d’attaques sont plus difficiles à détecter. La percée la plus significative en matière d’abris a été identifiée par les chercheurs dans deux packages, l’un appelé « package important » (ou « package important » comme alternative) et l’autre appelé « 10Cent10 » (ou « 10Cent11 »). Les packages utilisent le CDN Fastly pour communiquer entre la machine infectée et un serveur de contrôle.

Le code malveillant caché dans les packages provoque l’envoi d’une requête HTTPS à pypi.python.org d’une manière qui ne peut pas être identifiée à partir d’une application légitime vers PyPI. Fastly remplace finalement les requêtes en tant que requête HTTP au serveur de contrôle psec.forward.io.global.prod.fastly.net. Le serveur envoie ensuite des réponses via la même configuration, permettant une communication bidirectionnelle. Cela permet aux utilisateurs d’enregistrer rapidement leurs domaines avec le service. Dans de nombreux cas, l’enregistrement peut même se faire de manière anonyme.

JFrog

Les chercheurs de JFrog Andrey Polkovnychenko et Menashe ont expliqué :

L’infrastructure PyPI est hébergée sur le CDN rapidement. Cet hébergement utilise le Vernis serveur proxy HTTP transparent pour héberger les communications client-week-end. Le trafic entre dans Terminaison TLS pour le déchiffrement, afin que le proxy Varnish puisse inspecter le contenu du paquet HTTP. Le proxy analyse les en-têtes HTTP de la requête de l’utilisateur et redirige la requête vers le week-end correspondant en fonction du Host entête. Le processus se répète ensuite dans le sens inverse, permettant au malware d’imiter les communications duplex avec PyPI.

En conséquence, la session de commande et de contrôle (C2) est cryptée et signée avec un certificat de serveur légitime, ce qui rend impossible la communication avec les ressources légitimes de PyPI.

Le tunnelage DNS, l’autre technique d’évasion avancée découverte par les chercheurs, fonctionne à l’aide d’un canal DNS – généralement maintenu pour mapper les noms de domaine aux adresses IP – pour envoyer la communication entre un ordinateur infecté et un serveur contrôlé. Le tunneling DNS n’est pas nouveau, mais les chercheurs ont déclaré que c’était la première fois qu’ils téléchargeaient la technique utilisée dans les logiciels malveillants sur PyPI.

La sophistication croissante est le signe que du code malveillant est introduit dans PyPI et dans d’autres référentiels, qui continuera probablement à être utilisé pour propager des logiciels malveillants. Les développeurs qui s’appuient sur des référentiels publics doivent veiller à ce que le nom du package qu’ils téléchargent ne contienne pas de fautes de frappe ou de lettres triviales.