Technologie

Ubuntu 26.04 fait de Rust sudo son outil par défaut après 46 ans de failles C

Adrian Kessler

Ubuntu 26.04 LTS fait de sudo-rs l’implémentation par défaut de l’outil qui contrôle l’accès au niveau système sur Linux. Lorsqu’un utilisateur ou un processus a besoin de privilèges élevés — pour installer un logiciel, modifier des fichiers système, exécuter un service en tant que root — sudo est le gardien. L’original a été écrit en C. sudo-rs est une réimplémentation complète en Rust, et il est désormais la version livrée par défaut sur la distribution Linux la plus utilisée au monde.

Le sudo original a été écrit en 1980. Au fil du temps, le code en C a accumulé, parallèlement à ses fonctionnalités, une classe de vulnérabilités de gestion mémoire que Rust élimine au niveau du compilateur. La plus significative était CVE-2021-3156, nommée Baron Samedit. La vulnérabilité est restée indétectée pendant environ dix ans, permettant une escalade de privilèges locale sur toutes les grandes distributions Linux. Un attaquant local disposant d’un compte shell non root pouvait devenir root. Canonical a appliqué un correctif dans les 24 heures suivant la divulgation. La condition architecturale qui l’a permise — la gestion manuelle de la mémoire en C — n’a pas été corrigée.

Ce que Rust change n’est pas la manière dont le code est écrit, mais la classe de bugs qui peut exister dedans. Les dépassements de tampon, les erreurs d’utilisation après libération et les déréférencements de pointeur nul sont une catégorie de vulnérabilités que Rust élimine à la compilation — le compilateur rejette le code présentant ces motifs avant qu’il ne puisse s’exécuter. Pour un logiciel qui gère l’escalade de privilèges, c’est une contrainte significative à retirer du modèle de menace.

sudo-rs a fait l’objet d’un audit de sécurité indépendant complet en 2023. Le projet a atteint la parité de performances avec l’implémentation en C. Canonical a commencé à le proposer en option dans des versions antérieures d’Ubuntu avant d’en faire l’option par défaut dans la 26.04. L’approche progressive reflète la prudence appropriée pour remplacer un outil dont une défaillance peut soit bloquer l’accès des utilisateurs au système, soit élever des attaquants au rang de root.

Ubuntu 26.04 embarque également uutils coreutils — des réécritures en Rust d’outils fondamentaux comme ls, cat et mv. Mais cp, mv et rm restent sur les implémentations GNU C pour cette version. La logique de Canonical : les conditions de concurrence TOCTOU dans ces implémentations Rust comportent un risque de destruction de données que l’équipe a jugé trop élevé pour une version LTS. Le déploiement progressif révèle une honnêteté sur l’approche « réécrivons-le simplement en Rust » : les outils existent, mais la migration nécessite une analyse de sécurité au cas par cas, pas un basculement généralisé.

Le noyau Linux a commencé à accepter du code de pilotes en Rust en 2022. L’équipe Android utilise Rust pour le code système depuis 2021. Microsoft a réécrit des composants Windows sensibles à la mémoire en Rust. Le fait qu’Ubuntu rende sudo-rs par défaut est une étape significative car il ne s’agit pas d’une expérience sur un nouveau pilote ou un composant optionnel — c’est la couche d’authentification pour l’accès au système, livrée par défaut à chaque nouvelle installation Ubuntu.

Le schéma CVE qui a produit Baron Samedit prend fin pour les utilisateurs d’Ubuntu dans cette configuration. La question de savoir si d’autres distributions majeures — Debian, Red Hat, Fedora, Arch — suivent le mouvement d’Ubuntu vers sudo-rs par défaut est celle qui détermine l’ampleur du changement. sudo-rs est disponible pour toutes. Canonical a jugé les résultats de l’audit suffisants. La prochaine décision appartient aux autres mainteneurs.

Étiquettes: , , , , ,

Discussion

Il y a 0 commentaire.