BatBadBut : une vulnérabilité qui permet des injections de commandes sous Windows

Par:
fredericmazue

ven, 12/04/2024 - 13:52

BatBadBut est une vulnérabilité qui permet à un attaquant d'effectuer, sous certaines conditions spécifiques, une injection de commandes sur des applications Windows qui dépendent indirectement de la fonction CreateProcess. Un exploit de cette faille permet donc de lancer des commandes arbitraires.

Un billet de RyotaK, l'ingénieur en sécurité chez Flatt Security qui a découvert cette vulnérabilité, en donne en détails les tenants et les aboutissants techniques. L'auteur a baptisée cette vulnérabilité BatBadBut pour 'les mauvais fichiers batch, mais pas les pires'.

Pour RyotaK, la cause première de l'existence de la vulnérabilité BatBadBut est le 'comportement négligé de la fonction CreateProcess sous Windows'. Cette faille intéresse potentiellement tous les développeurs. En effet plupart des langages de programmation fournissent dans leur bibliothèque standard une fonction permettant d'exécuter une commande et pour cela, ils enveloppent la fonction CreateProcess pour fournir une interface de programmation plus conviviale.

Selon RyotaK, les langages et frameworks concernés sont au moins Erlang, Go, Haskell, Java, Node.js, PHP, Python, Ruby, Rust

Il existe déjà un correctif pour Haskell, Node.js, PHP et Rust. Erlang, Go, Python et Ruby ont mis à jour leur documentation à ce sujet. Selon RyotaK, Java ne corrigera pas la vulnérabilité.

Tous les développeurs, quels que soient les langages et frameworks qu'ils utilisent, ont intérêt à se documenter sur BatBadBut et à appliquer sans tarder un correctif à leur bibliothèque standard s'ils en disposent, ou à vérifier leur code afin que les arguments transmis à la fonction CreateProcess soient correctement sécurisés en amont.