Quel est l'impact du typosquattage dans les gestionnaires de paquets des langages de programmation ?
Un étudiant montre que même les institutions gouvernementales américaines ne sont pas à l'abri
Nikolai Philipp Tschacher, un étudiant allemand, a publié un mémoire de licence en système d’information à l’université de Hambourg (Allemagne) dans lequel il a parlé du typosquattage dans les gestionnaires de paquets des langages de programmation.
« Durant l’avènement du web 2.0, des langages de programmation de haut niveau comme Ruby, Node.js (JavaScript), Python, Perl et PHP ont gagné en popularité, ce qui a permis à plus de bibliothèques d’être hébergées sur des gestionnaires de paquets centralisés. Comme l’enseigne le typosquattage (mais aussi pour le cybersquattage ainsi que le squattage de domaine), la popularité des grands sites Web peut être utilisée à mauvais escient par des parties tierces en enregistrant des noms de domaine qui ressemblent à leurs domaines cibles, mais contiennent des fautes de frappe intentionnelles. Le même principe peut être appliqué aux gestionnaires de paquets : si un utilisateur a l'intention d'installer un logiciel populaire et se trompe dans l’orthographe du nom du paquet, un paquet squatté malveillant est téléchargé à la place, ce qui peut conduire à l'exécution de code (potentiellement avec des privilèges administratifs) », a-t-il expliqué en guise de préambule.
Et de continuer en disant que « ce travail va tenter de montrer que la même méthodologie employée pour le squattage de domaine peut être appliquée aux gestionnaires de paquets. L'objectif principal de ce travail est d'estimer les risques liés à de telles attaques. En outre, dans ce mémoire, nous essaierons de développer des contre-mesures simples et efficaces que les gestionnaires de paquets pourraient employer ».
Le typosquattage, qui est une forme de cybersquattage, se fonde principalement sur les fautes de frappe et d'orthographe commises par l'internaute au moment de saisir une adresse web dans un navigateur. Lorsqu’un internaute saisit accidentellement le nom mal orthographié dans sa barre d’adresse, les typos (erreurs) les redirigent vers des sites factices qui, dans bien des cas, imitent le site original tandis qu’ils tentent de télécharger un logiciel malveillant ou de récupérer des identifiants de l’utilisateur.
Se servant de cette méthode vieille d’une décennie (l’un des exemples que nous pouvons citer est « Goggle.com », une variante de Google qui était présente sur internet de 2006 à 2008), il a d’abord identifié 214 des paquets les plus téléchargés par les utilisateurs. Par la suite, il a effectué un upload de codes tests des 214 paquets dans trois communautés populaires de développeurs (notamment PyPI, RubyGems et NPM qui sont les communautés de développeurs Python, Ruby et JavaScript) en prenant le soin d’attribuer à chaque fois des noms qui étaient semblables à des paquets largement utilisés déjà présentés par d'autres utilisateurs. Le code de l’étudiant fournissait un avertissement qui informait les développeurs qu’ils avaient téléchargé le mauvais paquet. Mais, avant de le faire, le code envoyait une requête web à un ordinateur de l’université afin qu’il puisse garder une trace du nombre de fois où les codes tests avaient été téléchargés et s’ils avaient reçu des droits administrateurs (via un booléen). D'autres informations étaient également associées comme le système d'exploitation et le type d'architecture de l'hôte (exemple Linux-3.14.48), la liste des paquets installés avec le gestionnaire des paquets, les informations hardware de l'hôte ou encore l'historique de commande de l'utilisateur actuel et qui contient le gestionnaire de paquet comme substring.
Sur une période de plusieurs mois, son code factice été exécuté plus de 45 000 fois sur plus de 17 000 domaines distincts, et plus de la moitié du temps son code s’est vu octroyé des droits administrateur. Deux des domaines concernés se terminaient par « .mil », ce qui suggère que les personnes appartenant au corps de l'armée américaine ont exécuté son script.
« Il y avait également 23 domaines en .gov des institutions gouvernementales des États-Unis », a-t-il indiqué. Selon lui, « ce nombre est très alarmant, car la prise en charge des hôtes dans les laboratoires de recherche américains et les institutions gouvernementales peut avoir des conséquences potentiellement désastreuses pour eux ».
Les États-Unis ont été le pays qui a le plus été touché avec 5810 installations uniques, suivis par la Chine avec 2050 installations uniques et l'Allemagne avec 743 installations uniques. La France quant à elle figure en 8e position avec 469 installations uniques.
Selon Dan Rosenberg, senior researcher pour le compte d’Azimut Security, « je pense que nous sommes assez conscients du fait que si nous installons un module aléatoire tiers que personne n'a examiné et vous ne connaissez pas, il y a un risque inhérent parce qu'il peut tout faire ». « La nouveauté ici c’est que même si vous connaissez et avez confiance en un module, si vous faites une erreur vous pouvez encore exécuter un code non sécurisé ».
Parmi les contre-mesures que propose Tschacher aux gestionnaires de paquets figurent entre autres :
- la prohibition de noms de paquets de base : ce travail a montré que la plupart des installations issues de typo sont dues à des utilisateurs qui essayent de réinstaller des noms standards de bibliothèque avec le gestionnaire de paquets. Donc, il est obligatoire pour chaque dépôt de paquet d'empêcher tout nom de module d'être enregistré par des utilisateurs tiers, qui a été une partie du langage de base à un moment donné dans le temps. Il arrive que des utilisateurs arrêtent de se servir d'un langage de développement pendant des années et, quand ils reviennent par la suite, ils essayent de se servir de bibliothèques dépréciées ou retirées. La première chose qu'ils essayent de faire est de réinstaller les fonctionnalités manquantes en se servant d'un gestionnaire de paquets ;
- réduire le jeu de caractères dans les noms de paquets ;
- empêcher l'exécution directe de code ou les installations ;
- générer une liste de candidats potentiels de typo.
Source : Typosquatting in Programming Language Package Managers (mémoire au format PDF)
Partager