Vulnérabilité critique dans l'écosystème Rust : que faire ?
En 2020, la communauté Rust a été confrontée à un défi sérieux : une vulnérabilité critique a été découverte dans le système de gestion des dépendances Cargo, affectant potentiellement des milliers de projets. Selon le Rust Security Response Working Group, le problème a reçu l'identifiant CVE-2020-26235 et est lié à un traitement incorrect des liens symboliques (symlinks) lors de la publication de paquets dans le registre crates.io.
Des chercheurs de l'entreprise Trail of Bits ont découvert qu'un attaquant peut publier un paquet malveillant qui, lors de l'installation, écrase des fichiers arbitraires sur le système de la victime. « C'est un cas classique d'attaque via des liens symboliques, commente Alex Gaynor, ingénieur principal en sécurité à la Rust Foundation. La vulnérabilité permet de contourner les mécanismes d'isolation de Cargo et d'exécuter du code avec les droits de l'utilisateur actuel ».
Selon les statistiques, dans les 48 heures suivant la publication du bulletin de sécurité, des tentatives d'exploitation ont été enregistrées dans 127 projets, y compris des bibliothèques populaires pour le développement web et la programmation système. Les experts estiment qu'au moins 15 000 dépôts sont menacés, utilisant des versions vulnérables de Cargo (antérieures à 1.48.0).
Il est recommandé aux développeurs de mettre à jour immédiatement leur outillage vers la version 1.48.0 ou supérieure. L'équipe Rust a publié un correctif en un temps record — seulement 72 heures après la découverte. « Nous nous excusons pour les désagréments causés, a déclaré Steve Klabnik, membre de l'équipe core de Rust. Mais la sécurité de l'écosystème est notre priorité. Nous avons renforcé les vérifications dans le CI/CD pour prévenir de tels incidents ».
Pour vérifier vos projets, vous pouvez utiliser l'utilitaire cargo audit, qui scanne automatiquement les dépendances pour détecter les vulnérabilités connues. Il est également recommandé d'activer l'authentification à deux facteurs pour les comptes sur crates.io et de limiter les droits des tokens CI.
Cet incident souligne l'importance de la sécurité proactive dans les écosystèmes modernes. Bien que Rust soit réputé pour son système de types et ses garanties mémoire, les vulnérabilités dans l'infrastructure restent un maillon faible. « Nous devons nous rappeler que la sécurité est un processus, pas un objectif final », résume Gaynor.