Une faille de sécurité critique, baptisée “BatBadBut”, a été découverte dans la bibliothèque standard Rust

Mais elle affecte également Erlang, Go, Haskell, Java, Node.js, PHP, Python et Ruby

Une faille de sécurité critique, baptisée “BatBadBut”, a été découverte entre autres dans la bibliothèque standard Rust, affectant toutes les versions antérieures à 1.77.2 sous Windows. La vulnérabilité, identifiée comme CVE-2024-24576, a un score CVSS de 10.0 et permet à un attaquant d’exécuter des commandes shell arbitraires en contournant le mécanisme d’échappement lors de l’invocation de fichiers batch avec l’API Command.

La vulnérabilité “BatBadBut” a été découverte par le chercheur en sécurité RyotaK et divulguée de manière responsable à l’équipe de sécurité de Rust, qui a donc expliqué comment l’équipe Rust a géré l’alerte, et patché la faille, ce qui n’est pas encore le cas sur tous les autres langages affectés.

Selon le billet de blog de RyotaK, le problème provient des règles complexes d’analyse de cmd.exe, l’invite de commande de Windows, qui est implicitement lancée lors de l’exécution de fichiers batch. La bibliothèque standard Rust ne parvient pas à échapper correctement les arguments de commande pour cmd.exe, ce qui permet l’injection potentielle de commandes.

Alors que les API Command::arg et Command::args de Rust garantissent que les arguments seront transmis tels quels au processus créé et ne seront pas évalués par un shell, la mise en œuvre sous Windows est plus complexe.

L’API Windows ne fournit qu’une seule chaîne de caractères contenant tous les arguments, laissant au processus créé la responsabilité de les diviser. La plupart des programmes utilisent la chaîne d’exécution standard argv en C, ce qui permet d’obtenir un comportement cohérent en matière de division des arguments. Cependant, cmd.exe possède sa propre logique de découpage des arguments, qui nécessite un échappement personnalisé par la bibliothèque standard Rust.

Source