Typosquatting de dépendances : gare à cette pratique résiduelle

confusion dépendances npm typosquatting

Des chercheurs attirent l’attention sur une campagne de diffusion de code malveillant par l’intermédiaire de typosquatting sur le gestionnaire de paquets npm.

« Le strike à 140 000 $ d’un white hat ». Ainsi avions-nous réagi, l’an dernier, à une opération qui avait mis à défaut la sécurité de dizaines de grandes entreprises. Parmi lesquelles Apple, Microsoft, Netflix, PayPal, Tesla et Uber.

Plusieurs de ces entreprises avaient récompensé ledit white hat. Mais la faille exploitée venait de l’extérieur. En l’occurrence, des gestionnaires de paquets de plusieurs langages de programmation : npm (Node.js), PyPi (Python) et RubyGems (Ruby).

À l’origine, il y a la découverte, sur un dépôt GitHub public, d’un paquet npm apparemment destiné à un usage interne chez PayPal. Le fichier de manifeste associé faisait référence à un « mix » de dépendances : certaines présentes dans le dépôt public, d’autres hébergées en interne.

De là, une question : s’il existait, dans le dépôt public, un paquet du même nom qu’une dépendance privée, aurait-il la priorité ? Et, au fil des essais, une réponse : oui, sous conditions. Sauf paramétrage spécifique, les gestionnaires priorisaient le paquet ayant le plus haut numéro de version, peu importe où il se trouvait. La porte ouverte à l’introduction de code malveillant… et à ses effets sur les applications en aval.

Typosquatting sur npm… et au-delà

Une approche plus « classique » mais moins discrète (elle requiert une action de la part des victimes) consiste à user du typosquatting. En d’autres termes, à usurper le nom de paquets légitimes. ionicons, swiper et umbrellajs en ont dernièrement fait les frais sur npm. Le premier en particulier : on a trouvé trace de multiples paquets malveillants au nom proche (ionic-icon, ionicio, ionicon-package…).

Les différents paquets repérés avaient en commun d’exploiter des fonctions Ajax pour exfiltrer des données. Au fil des mois qu’a duré l’opération, ces fonctions se sont « durcies », pour brasser de plus en plus large, allant jusqu’à aspirer tous les éléments de formulaire dans les applications infectées.

Le typosquatting est allé au-delà de npm. Il a aussi englobé les noms de domaines utilisés pour exfiltrer les données. Les pages hébergées à ces adresses usurpaient parfois elles-mêmes des sites authentiques.

A-t-on eu affaire à une démarche coordonnée ? Le peu de comptes ayant publié les paquets en question le laisse penser. Tout comme le schéma de nommage des domaines malveillants.

Photo d’illustration © Dmitry Baranovskiy / CC BY 2.0