Ubuntu 26.10 « Stonking Stingray », dont la sortie est prévue le 15 octobre, deviendra la première distribution à remplacer entièrement les utilitaires GNU coreutils par l’implémentation uutils basée sur Rust. Trois commandes — cp, mv et rm — avaient auparavant conservé leurs versions GNU après qu’un audit de sécurité réalisé eut révélé des conditions de concurrence TOCTOU, mais les correctifs apportés en amont ont désormais permis une migration complète. L’intérêt de Canonical pour Rust est principalement motivé par la sécurité mémoire plutôt que par les performances, et la feuille de route prévoit notamment de faire du client NTP basé sur Rust le client par défaut dans la version 27.10.Ubuntu est une distribution Linux fondée sur Debian. Elle est développée, commercialisée et maintenue pour les ordinateurs individuels (Desktop), les serveurs (Server) et les objets connectés (Core) par la société britannique Canonical. Ubuntu est disponible en deux versions, une qui évolue tous les six mois, et une version LTS, pour Long Term Support (« Support long terme ») qui évolue tous les deux ans. Ubuntu se définit comme « un système d'exploitation utilisé par des millions de PC à travers le monde » et avec une interface « simple, intuitive, et sécurisée ».
Il y a près d'un an, Canonical annonçait Ubuntu 25.10 « Questing Quokka », introduisant GNOME 49 comme bureau par défaut, fonctionnant exclusivement sur Wayland avec les pilotes NVIDIA, et livré avec le noyau Linux 6.17. Depuis cette version, Canonical a montré son engagement à accroître la résilience des logiciels système critiques dans Ubuntu en adoptant des implémentations modernes de composants clés tels que sudo et coreutils. Dans le cadre de cette initiative, Ubuntu 25.10 utilise sudo-rs, une nouvelle implémentation Rust de l'outil sudo. L'introduction d'un sudo sécurisé en mémoire offre de nombreux avantages par rapport à l'implémentation traditionnelle. Pour les utilisateurs, la réduction de la surface d'attaque dans l'outil sudo améliorera la sécurité globale d'Ubuntu.
Récemment, un rapport a révélé qu'Ubuntu 26.10 « Stonking Stingray », dont la sortie est prévue le 15 octobre, deviendra la première distribution à remplacer entièrement les utilitaires GNU coreutils par l’implémentation uutils basée sur Rust. Trois commandes — cp, mv et rm — avaient auparavant conservé leurs versions GNU après qu’un audit de sécurité réalisé eut révélé des conditions de concurrence TOCTOU, mais les correctifs apportés en amont ont désormais permis une migration complète.
Cette version devrait intégrer le noyau Linux 7.3 et GNOME 51, avec une version bêta prévue pour le 24 septembre. L’intérêt de Canonical pour Rust est principalement motivé par la sécurité mémoire plutôt que par les performances, et la feuille de route prévoit notamment de faire du client NTP basé sur Rust le client par défaut dans la version 27.10. Par ailleurs, l’image d’installation pour ordinateur de bureau 24.04.5 a été temporairement retirée en raison d’un bug dans le programme d’installation.
Ubuntu 26.10 : première distribution à remplacer entièrement les utilitaires GNU coreutils par l’implémentation uutils basée sur Rust
Ubuntu s’apprête à franchir une étape importante. La version 26.10 « Stonking Stingray », prévue pour le 15 octobre, deviendra la première distribution à remplacer entièrement les utilitaires GNU de base (coreutils) par une implémentation en Rust : le code sous-jacent des commandes les plus couramment utilisées, telles que ls, cat, chmod et du, a été entièrement migré vers le projet uutils. Cette transition marque la phase finale de la stratégie de « Rustification » à l’échelle de la distribution menée par Canonical, lancée en 2025. La version 25.10 avait déjà fait de la version de sudo réécrite en Rust (sudo-rs) la version par défaut, mais trois commandes de manipulation de fichiers — cp, mv et rm — avaient dû conserver leurs versions GNU après qu’un audit de sécurité eut révélé des problèmes. Ce n’est qu’avec la version 26.10 que les trois dernières pièces du puzzle ont été mises en place.
La motivation principale de Canonical pour la « rustification » complète des coreutils n’est pas le gain de performances, mais la sécurité de la mémoire. Le langage Rust permet d’intercepter les erreurs de mémoire dès la phase de compilation, ce que le C ne peut pas faire. Pour une distribution de système d’exploitation, les coreutils constituent le fondement de l’ensemble de la pile logicielle : éliminer une catégorie de vulnérabilités mémoire à la base signifie que toute la chaîne de dépendances évite un vaste éventail de risques potentiels.
Ce qui bloquait auparavant la migration de cp, mv et rm était un rapport d’audit de sécurité. Canonical a chargé la société de sécurité Zellic d’auditer uutils, ce qui a permis de mettre au jour un ensemble de conditions de concurrence TOCTOU (time-of-check to time-of-use). Ce type de vulnérabilité est le plus critique pour les outils de gestion de fichiers : les attaquants peuvent altérer des fichiers dans l’intervalle entre le moment où un programme vérifie l’état d’un fichier et celui où il l’utilise réellement, contournant ainsi les contrôles d’autorisation ou provoquant la corruption des données.
La version 26.04 LTS étant une version à support à long terme (LTS) soumise à des exigences plus strictes en matière de stabilité et de sécurité, Canonical avait alors décidé de conserver les implémentations GNU pour ces trois commandes. Le projet uutils en amont ayant désormais résolu les problèmes concernés, la version 26.10 a pu mener à bien le remplacement complet.
Rust Coreutils dans Ubuntu 26.10 : objectif d’une migration transparente
Créé à l'origine par Jordi Boggiano en 2013, le projet uutils, aussi connu sous le nom de Rust Coreutils, vise à réécrire en Rust tous les utilitaires individuels inclus dans le projet GNU Coreutils. Le projet a pour objectif de fournir des remplacements immédiats pour les programmes Coreutils, en ajoutant la protection contre la concurrence d'accès et la sécurité de la mémoire que Rust fournit. En février 2022, Sylvestre Ledru, le développeur principal du projet Rust Coreutils, a annoncé que le projet était en bonne voie et apportait des améliorations significatives par rapport à l'ancienne implémentation en C. Rust Coreutils continuait également d'augmenter son niveau de compatibilité avec GNU Coreutils.
En mai 2025, Canonical prévoyait d'utiliser davantage de composants système écrits en Rust, en annonçant la transition vers Rust Coreutils « uutils » à la place de GNU Coreutils. Il avait également été confirmé que Canonical prévoit d'utiliser sudo-rs par défaut en remplacement de sudo. Pour l'annonce, Canonical affirmait : « Bien qu'aucun logiciel - quel que soit le langage - ne soit parfait, nous pensons que la transition vers Rust dans la programmation des systèmes est un pas en avant vital. Il est très excitant de voir Ubuntu s'engager en faveur de sudo-rs et jouer un rôle de premier plan pour faire avancer les choses. »
Le projet uutils est conçu pour être compatible « drop-in » avec GNU coreutils, tout écart de comportement étant considéré comme un bogue. La position de Canonical est claire : les utilisateurs ne doivent pas savoir s’ils utilisent la version GNU ou la version Rust. Il y a eu par le passé un problème de compatibilité avec uutils lié à la commande « date », mais dans l’ensemble, le processus de migration a été pratiquement imperceptible pour les utilisateurs lambda. Pour ceux qui sont déjà habitués au fonctionnement quotidien d’Ubuntu, ce changement d’implémentation sous-jacente ne modifiera en rien leurs habitudes d’utilisation.
La « rustification » complète de coreutils n’est pas une fin en soi. La feuille de route de Canonical indique qu’Ubuntu 27.10 prévoit de faire du client NTP réécrit en Rust par la Fondation Trifecta l’outil de synchronisation horaire par défaut. Canonical verse chaque année 40 000 € à la fondation pour financer la réécriture de logiciels fondamentaux en Rust. Cette série de mesures reflète un effort systématique de la part des responsables de la distribution pour réduire les risques de sécurité posés par l’ancien code C. Alors que la présence de Rust dans les logiciels système de bas niveau continue de s’étendre, l’approche d’Ubuntu pourrait offrir une voie de migration de référence pour d’autres distributions Linux.
Rust a été adopté par de nombreux projets logiciels
Récemment, AMD a montré son souhait d'intégrer Rust plus profondément dans son logiciel graphique que ne l'a jamais fait aucun autre fournisseur de GPU. Harsh Meno, Senior Fellow, a écrit sur LinkedIn que la société mettait en place « une petite équipe d’élite chez AMD pour intégrer Rust en profondeur dans...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
à toutes et tous,
