Microsoft va utiliser le langage Rust pour sécuriser le noyau de Windows

Microsoft Windows 11 Rust

C’est lors de la conférence BlueHat IL 2023 organisée par Microsoft fin mars à Tel Aviv (Israël) que la société américaine par le truchement de David Weston, son vice-président Enterprise & OS Security, a indiqué qu'elle comptait utiliser le langage de programmation Rust pour le noyau de Windows, et ce pour une édition à venir de Windows 11, la dernière version en date du célèbre système d'exploitation.

Microsoft a notamment réécrit en Rust certaines des bibliothèques de Windows, avec comme ambition de renforcer la sécurité associée à la gestion mémoire. L’objectif étant de convertir certains types de données internes en C++ vers leurs équivalents en Rust.

Microsoft rejoint donc avec cette annonce la cohorte des éditeurs de systèmes d’exploitation pour applications critiques comme Google (avec KataOS), eSOL, AdaCore, Lynx Software, Elektrobit ou encore Sysgo qui ont décidé d’utiliser d'une manière ou d'une autre le langage de programmation Rust.

Sans compter Linux, qui en fin d’année dernière a confirmé lors de la tenue du sommet Open Source de la Linux Foundation que la version 6.1 du noyau Linux, officiellement publiée en disponibilité générale le 11 décembre 2022, est la première à prendre en charge un second langage de programmation après le C, à savoir le langage Rust, désormais admis dans la communauté open source pour rejoindre le C en tant que langage destiné à la programmation du noyau. Avec comme objectif de réduire le nombre de bogues et de failles de sécurité liés aux faiblesses connues du langage C, en particulier pour la gestion mémoire - dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides….

Pour rappel, Rust - qui se prête à la programmation de bas niveau nécessaire à un système d'exploitation - est un langage initié par les ingénieurs de Mozilla dès 2006, dont la version 1.0 avec un compilateur stable a été publiée en 2015. Rust se veut une alternative aux langages de programmation classiques comme le C et le C++ en évitant notamment les problèmes de sécurité mémoire qui affligent ces langages, sans recourir à la complexité de Java (pas de mécanismes de type ramasse-miettes dans Rust). De fait, sa faible sensibilité aux débordements de mémoire tampon par rapport aux autres langages de programmation élimine l'un des vecteurs d'attaque majeurs que les pirates exploitent pour s'emparer d'un système.

Au-delà, on peut noter que Rust a été spécialement conçu dès le départ en mettant l'accent sur la sécurité mémoire et la sécurité des threads par le biais d'un typage fort. De fait, Rust est un langage de programmation qui combine une sûreté mémoire optimisée et un degré de contrôle élevé, tout en s’intégrant aux bases de code écrites en C/C++ existantes.