Deux des outils les plus fondamentaux de la ligne de commande moderne de type Unix, sudo et su, sont en cours de réécriture dans le langage moderne Rust dans le cadre d’un effort plus large visant à remplacer les éléments d’infrastructure critiques mais vieillissants par des homologues sécurisés en mémoire.
Comme détaillé chez Prossimo, une équipe conjointe de Ferrous Systems et Tweede Golf, avec le soutien d’Amazon Web Services, réimplémente sudo et su. Ces utilitaires permettent à un utilisateur d’effectuer des actions avec les privilèges d’un autre utilisateur (généralement un superutilisateur de niveau supérieur) sans avoir à connaître et à saisir le mot de passe de cet autre utilisateur. Compte tenu de leur âge et de leur large utilisation, l’équipe Prossimo pense qu’il est temps de les retravailler.
« Sudo a été développé pour la première fois dans les années 1980. Au fil des décennies, il est devenu un outil essentiel pour effectuer des changements tout en minimisant les risques pour un système d’exploitation », écrit Josh Aas. « Mais parce qu’il est écrit en C, sudo a connu de nombreuses vulnérabilités liées aux problèmes de sécurité de la mémoire. »
La commande sudo correspond aux critères des projets Prossimo pour la réimplémentation « carrément ». Il est utilisé sur presque tous les serveurs et clients, il se trouve sur une frontière critique, il remplit une fonction critique et il est écrit dans des langages qui ne sont pas sécurisés en mémoire, comme C et asm. Le plan de travail et les jalons du projet sont publiés et vous pouvez suivre le travail sur GitHub.
Sudo a été développé en 1980 par Robert Coggeshall et Cliff Spencer à l’Université d’État de New York à Buffalo (go Bulls) sur un VAX-11/750 exécutant 4.1BSD. Coggeshall a développé sudo à l’Université du Colorado à Boulder ; l’outil a finalement été rendu public et maintenu par Todd C. Miller. La commande su faisait partie de la version 1 d’Unix.
Un effort bien financé pour réimplémenter un aspect central des systèmes de type Unix, même dans un langage réputé comme Rust, est presque garanti pour remuer la communauté. Bien qu’elle ait été développée au fil des décennies et qu’elle soit implémentée dans presque tous les systèmes, la commande sudo n’est pas sans défauts. Certaines versions de sudo étaient vulnérables à un bogue de débordement de tampon fournissant la racine, comme signalé en 2019. Là encore, la majorité des vulnérabilités de sudo ne semblent pas liées à la mémoire (selon sa définition) ; on peut certainement coder de nouveaux bogues dans un logiciel écrit dans un langage sécurisé en mémoire.
La page des jalons du groupe Prossimo n’explique pas comment une adoption plus large d’un sudo et d’un su basés sur Rust serait encouragée. Il y a fort à parier que cet effort pourrait nécessiter autant d’efforts que la réécriture elle-même.
Image de l’annonce par Cavan Images/Getty