Les auteurs de menaces peuvent exploiter une vulnérabilité de sécurité dans la bibliothèque standard Rust pour cibler les systèmes Windows dans des attaques par injection de commandes.
Identifiée comme CVE-2024-24576, cette faille est due à des faiblesses d’injection de commandes et d’arguments du système d’exploitation qui peuvent permettre aux attaquants d’exécuter des commandes inattendues et potentiellement malveillantes sur le système d’exploitation.
GitHub a évalué cette vulnérabilité comme étant de gravité critique avec un score de base CVSS maximum de 10/10. Des attaquants non authentifiés peuvent l’exploiter à distance, dans des attaques de faible complexité et sans interaction de l’utilisateur.
« Le groupe de travail Rust Security Response a été informé que la bibliothèque standard Rust n’échappait pas correctement aux arguments lors de l’appel de fichiers batch (avec les extensions bat et cmd) sous Windows à l’aide de l’API de commande », a déclaré le groupe de travail Rust Security Response.
« Un attaquant capable de contrôler les arguments passés au processus généré pourrait exécuter des commandes shell arbitraires en contournant l’échappement. La gravité de cette vulnérabilité est critique si vous invoquez des fichiers batch sous Windows avec des arguments non fiables. Aucune autre plateforme ou utilisation n’est affectée. »
Toutes les versions de Rust antérieures à 1.77.2 sous Windows sont affectées si le code d’un programme ou l’une de ses dépendances appelle et exécute des fichiers batch avec des arguments non fiables.
L’équipe de sécurité de Rust a été confrontée à un défi de taille lorsqu’elle a eu affaire à cmd.la complexité d’exe car ils ne pouvaient pas trouver une solution qui échapperait correctement aux arguments dans tous les cas.
En conséquence, ils ont dû améliorer la robustesse du code d’échappement et modifier l’API de commande. Si l’API de commande ne peut pas échapper en toute sécurité un argument lors de la génération du processus, elle renvoie une erreur de saisie non valide.
« Si vous implémentez vous-même l’échappement ou ne gérez que des entrées de confiance, sous Windows, vous pouvez également utiliser la méthode CommandExt::raw_arg pour contourner la logique d’échappement de la bibliothèque standard », a ajouté le groupe de travail sur la réponse de sécurité Rust.
En février, le Bureau du Directeur national de la cybersécurité à la Maison Blanche (ONCE) a exhorté les entreprises technologiques à adopter des langages de programmation sécurisés pour la mémoire comme Rust. L’objectif final est d’améliorer la sécurité logicielle en minimisant le nombre de vulnérabilités de sécurité de la mémoire.