Une réponse face aux vulnérabilités générées par l’IA

Greg Kroah-Hartman, mainteneur du noyau Linux stable, a déclaré que le langage Rust peut aider Linux à faire face à un afflux de bogues de sécurité découverts par des intelligences artificielles. Il a spécifiquement mentionné les vulnérabilités récentes connues sous les noms de Dirty Frag, Copy Fail et Fragnesia. Selon lui, Rust permet d’éviter les erreurs courantes liées à la mémoire, au verrouillage, à la gestion des erreurs et aux données non fiables, et ce dès la phase de compilation plutôt que lors d’une relecture humaine.

Des bugs à l’origine de la plupart des failles

Au cours d’une intervention, Kroah-Hartman a illustré les difficultés rencontrées avec le langage C par des exemples concrets de bogues dans le noyau, notamment un bug vieux de plusieurs années dans la pile Bluetooth qui déréférençait un pointeur sans le vérifier, ainsi qu’un bug dans Xen où « nous avons oublié de déverrouiller » dans un chemin d’erreur. « La majorité des bogues dans le noyau sont ces petites choses minuscules », a-t-il expliqué. « Les conditions d’erreur ne sont pas vérifiées, les verrous sont oubliés, les mémoires non libérées fuient, et les vulnérabilités s’accumulent avec le temps. Elles font planter le noyau. C’est ce avec quoi nous vivons en C. C’est pourquoi nous ne l’aimons pas. »

La force de Rust : attraper les erreurs à la compilation

Kroah-Hartman a souligné que la « plus grande beauté de Rust » est de détecter ces erreurs à la compilation plutôt qu’à la relecture. Il a cité l’exemple des abstractions de verrouillage dans le noyau avec Rust : « La seule façon d’accéder aux pointeurs internes des structures est de prendre ce verrou, et de le relâcher automatiquement. Le compilateur le fait, c’est gardé, le verrou se produit, tout est heureux. Vous ne pouvez tout simplement pas écrire de code pour accéder à ces valeurs sans prendre le verrou. Le compilateur ne vous le permettra pas. »

60 % des bogues du noyau éliminés

Selon le mainteneur, ces propriétés éliminent directement une énorme fraction des bogues qu’il rencontre : « Cela va nous sauver de ces deux choses. D’abord, 60 % des bogues dans le noyau, là, tout de suite, ils disparaissent. Merci. » Le gain est une application plus précoce et plus automatisée : « Si cela se produit au moment de la compilation, pas au moment de la relecture, ne me forcez pas, en tant que mainteneur, à lire votre code et à dire : “Oh, tu as bien vérifié cette valeur d’erreur. Oh, tu as bien pris les verrous au bon endroit ?” Rust nous donne cela gratuitement. C’est la meilleure chose qui soit. »

L’influence de Rust sur le code C existant

Kroah-Hartman a également noté que, même si Rust disparaissait demain, il a déjà obligé le noyau à nettoyer le code C et ses interfaces. « Nous avons volé cela à Rust. Merci. C’est une bonne idée, donc si Rust disparaissait demain, nous avons tellement nettoyé le code C dans le noyau et repris les idées. Nous vous remercions, vous avez amélioré Linux simplement en existant. »

Un passage du statut d’expérience à celui d’outil pérenne

Ce qui a finalement convaincu un certain nombre de mainteneurs centraux, dont lui-même, est la façon dont Rust « facilite la relecture du code ». Grâce aux robots d’intégration continue qui appliquent les constructions et au système de types de Rust qui impose des invariants clés, les mainteneurs peuvent se « concentrer sur la logique » plutôt que sur la gestion des ressources : « Je peux me soucier de cette seule fonction. Je n’ai pas à m’inquiéter du reste, parce que je suppose que cela fonctionne correctement, car cela a été construit correctement. »

En interne, a-t-il indiqué, les principaux mainteneurs ont déjà pris leur décision concernant le statut de Rust : « Les mainteneurs du noyau Linux, nous nous réunissons chaque année pour discuter de ce que font les processus. L’année dernière, nous avons dit que l’expérience Rust est terminée. Ce n’est plus une expérience. C’est du sérieux. » La raison invoquée : « Les personnes derrière sont réelles. Nous leur faisons confiance. Nous savons ce qu’elles font. Elles ont montré et ont fait le travail pour faire de Rust un langage viable dans le noyau, et nous allons faire en sorte que cela tienne. Allons à plein régime. Et, comme toujours, » a-t-il ajouté avec ironie, « la domination mondiale se poursuit. »

Un principe simple pour la sécurité

Kroah-Hartman a conclu son intervention par un conseil : « Si vous ne devez jamais retenir qu’une seule chose de mon discours, retenez ces quatre mots. Cela vient d’une équipe de sécurité il y a de très nombreuses années. Ils ont réalisé que toute entrée est malveillante. Vous devez valider toute entrée. »