Greg Kroah-Hartman, responsable du soutien des branches stable et « staging » du noyau Linux et mainteneur de 16 sous-systèmes du noyau, a donné une conférence lors de Rust Week 2026, où il a expliqué comment le langage Rust peut aider à prévenir l'apparition de vulnérabilités dans le noyau, résultant d'erreurs typiques des développeurs en C liées à la gestion de la mémoire, aux verrouillages, à la gestion des erreurs et à la manipulation de données non fiables. Le principal avantage de Rust réside dans sa capacité à détecter ces erreurs lors de l'étape de compilation, plutôt qu'au stade de la révision de code par des humains. Rust n'est cependant pas considéré comme une panacée pouvant résoudre tous les problèmes, et personne ne prévoit de réécrire le noyau en Rust : son intégration est attendue progressivement par son utilisation pour de nouveaux pilotes et sous-systèmes.
Comme exemple d'erreurs dans le noyau qui auraient pu être évitées grâce à Rust, une erreur dans le sous-système Bluetooth, restée inaperçue pendant 15 ans, ainsi qu'un problème dans l'hyperviseur Xen ont été mentionnés. Dans le premier cas, le développeur a effectué une déréférence de pointeur sans vérification, et dans le second, il a oublié de libérer un verrou dans le code de gestion des erreurs.
Selon Greg, la plupart des erreurs dans le noyau proviennent de détails similaires qui s'accumulent avec le temps et se manifestent sous forme de vulnérabilités. Dans Rust, de nombreux problèmes de ce type sont évités par le compilateur ; par exemple, les abstractions Rust pour les verrouillages dans le noyau permettent d'accéder à des pointeurs internes aux structures uniquement après avoir acquis le verrouillage correspondant, qui est libéré automatiquement. Sans acquisition de verrou, l'accès aux pointeurs de structures en Rust n'est pas possible.
Greg estime que de telles capacités de Rust auraient empêché l'apparition de 60 % des erreurs détectées dans le noyau, et les vérifications effectuées par le compilateur auraient évité aux mainteneurs de perdre du temps à discuter avec les auteurs de la validité de la gestion des erreurs et de la nécessité des verrouillages à des endroits spécifiques. De plus, l'intégration du soutien de Rust a déjà eu un impact bénéfique sur le code C dans le noyau, en mettant de l'ordre dans le code C et les interfaces, ainsi qu'en empruntant certaines techniques de développement (par exemple, des verrouillages à portée limitée ont été mis en œuvre).
Grâce à un système de types qui garantit le respect des règles définies et à l'application de systèmes d'intégration continue vérifiant le code lors de la compilation, les examinateurs des changements en Rust peuvent se concentrer sur la vérification de la logique de fonctionnement plutôt que de suivre les manipulations des ressources. L'utilisation de Rust permet également de prêter plus attention aux données provenant du matériel ou de systèmes externes. Cela est réalisé grâce à la distinction explicite entre les données dignes de confiance et celles qui ne le sont pas au niveau du système de types : le développeur n'a qu'à effectuer une analyse lors du passage d'un état non sûr à un état sûr.
Récemment, l'équipe responsable de la sécurité du noyau publie environ 13 rapports sur les vulnérabilités par jour, ce qui, par rapport à la dynamique précédente de détection des vulnérabilités, semble totalement fou (pour donner un exemple, hier, 277 rapports sur les vulnérabilités du noyau ont été publiés). Selon Greg, l'utilisation de Rust est l'un des moyens réels de réduire le nombre d'erreurs dans le noyau, causées par les erreurs traditionnelles de gestion des erreurs et des ressources. Dans le noyau, le support de Rust a déjà dépassé le cadre expérimental et a été reconnu comme une fonctionnalité standard à la fin de l'année dernière.

Source : opennet.ru
