Rust dans le noyau Linux : pourquoi est-ce important ?
Photo : MakeUseOf

Rust dans le noyau Linux : pourquoi est-ce important ?

La plupart des failles graves du noyau sont dues à des erreurs de mémoire. L'introduction d'un langage sécurisé en matière de mémoire permet de s'attaquer directement à la racine du problème.

Après de nombreuses années de débats, l'infrastructure permettant d'écrire du code Rust dans le noyau Linux a été intégrée, et les pilotes écrits en Rust commencent à faire leur apparition. C'est la première fois qu'un deuxième langage est accepté dans un projet qui, depuis trente ans, n'utilisait que le C.

Raison technique

Les statistiques issues de nombreux grands projets écrits en C et en C++ aboutissent toutes à des chiffres similaires : environ deux tiers des failles de sécurité graves proviennent d'erreurs de mémoire — accès hors limites, utilisation de mémoire libérée, double libération.

Ce n'est pas une question de niveau des programmeurs. Ces projets rassemblent les meilleurs talents et pourtant, des erreurs se produisent, tout simplement parce qu'il est impossible de suivre le cycle de vie de la mémoire dans des millions de lignes de code.

Pourquoi un pilote ?

Les pilotes représentent la majeure partie du code du noyau ; ils sont écrits par divers contributeurs, leur qualité est inégale, et ils s’exécutent avec tous les privilèges. En d’autres termes : c’est là que le risque est le plus élevé, mais c’est aussi là que du nouveau code est constamment généré — ce qui justifie d’y tester de nouveaux langages.

Les vraies difficultés

  • Comme ce modèle de mémoire et ces conventions sont spécifiques, il faut les encapsuler dans une couche de sécurité adaptée à Rust — ce travail est très fastidieux
  • Le mainteneur doit maîtriser les deux langages
  • L'interface interne du noyau évolue constamment ; chaque modification nécessite une mise à jour de la couche d'encapsulation
Des attentes réalistes : Rust ne remplacera pas le C dans le noyau. Il s'impose progressivement dans les nouvelles parties du code, là où les avantages sont les plus importants et où les coûts de migration sont les plus faibles.
Chia sẻ

Thảo luận