Vulnérabilité Cargo : Le risque de vol de jetons de dépendances dans l'écosystème Rust

Le gestionnaire de paquets Cargo, essentiel à l'écosystème Rust, est confronté à une faille de sécurité critique. Des chercheurs ont identifié une vulnérabilité (CVE-2026-5222) liée à la manière dont Cargo normalise les adresses URL des registres tiers utilisant le protocole d'indexation éparse (sparse index). Cette faille pourrait permettre à un attaquant malveillant de capturer les identifiants de connexion de plusieurs utilisateurs partageant le même domaine de registre.
Historiquement, Cargo a été conçu pour gérer les index de registres en les stockant dans des dépôts Git. Par conséquent, il a adopté un comportement de normalisation qui permettait d'accéder à un dépôt qu'on possédait ou non l'extension `.git` dans l'URL. Cette logique, bien qu'initialement adaptée au protocole Git, a été appliquée de manière inappropriée aux nouveaux index éparses. Le problème réside dans le fait que les serveurs HTTPS peuvent traiter différemment une URL se terminant par `.git` et celle qui ne le contient pas, créant une ambiguïté exploitable par un acteur externe.
L'enchaînement des événements pour l'attaquant est précis. Si un fournisseur d'hébergement autorise la présence de multiples registres sous un même domaine, un pirate peut publier des paquets sur un registre spécifique. Il peut ensuite téléverser des fichiers arbitraires dans le répertoire apparenté, mais avec l'extension `.git`. L'étape la plus dangereuse consiste à configurer ce répertoire malveillant pour qu'il exige une authentification de téléchargement, pointant vers un serveur capable d'enregistrer tout jeton de connexion qui lui est transmis.
Ensuite, l'attaquant publie un paquet qui dépend d'une librairie fabriquée dans ce registre compromis. Lorsqu'une victime télécharge ce paquet apparemment inoffensif, Cargo interprète le contexte de manière erronée, considérant que les deux registres partagent le même ensemble d'identifiants. Le jeton de connexion de la victime est alors envoyé au serveur malveillant, permettant le vol des accès. Bien que la sévérité de cette faille soit jugée faible en raison des conditions extrêmement spécifiques requises pour l'exploitation, le risque demeure majeur pour la sécurité des développeurs.
La communauté Rust a rapidement réagi pour atténuer ce risque. Une mise à jour majeure, prévue dans la version 1.96 de Rust et devant sortir le 28 mai 2026, corrigera le comportement de Cargo. Cette nouvelle version limitera strictement le retrait de l'extension `.git` aux cas strictement liés au protocole Git. Il est crucial de noter que les versions de Cargo antérieures à cette mise à jour, et couvrant la période entre la stabilisation des index éparses (Rust 1.68) et la nouvelle version, sont considérées comme vulnérables. Les développeurs utilisant ces anciennes versions doivent impérativement planifier la migration vers le dernier jalon de Rust pour garantir l'intégrité de leur chaîne d'approvisionnement logicielle.
Articles similaires
Source : Rust Blog
Cet article est généré par IA. Les informations présentées peuvent ne pas être exhaustives ou actualisées.