L'implémentation de sudo et su dans Rust vise à améliorer la sécurité de ces utilitaires
Il y a trois mois, nous partagions ici même sur le blog l'information concernant la création du projet « Sudo-rs » par l'ISRG, qui est à l'origine du projet Let's Encrypt et promeut le développement de technologies visant à renforcer la sécurité d'Internet.
Dans cette publication, nous avons partagé certains détails et caractéristiques du projet, qui vise essentiellement à créer des implémentations des utilitaires SUDO et SU en Rust (vous pouvez consulter la publication au lien suivant ).
Première version stable de sudo-rs
La raison pour laquelle nous mentionnons cela est que la première version stable du projet Sudo-rs a été récemment lancée , à laquelle des ingénieurs de Ferrous Systems et de Tweede Golf ont participé au développement grâce à un financement fourni par Google, Cisco et Amazon Web Services.
Pour ceux qui ne connaissent pas le projet « Sudo-rs », je peux vous dire que son but est de développer des versions Rust des utilitaires SUDO et SU, conçus pour exécuter des commandes au nom d'autres utilisateurs, puisque SUDO est un utilitaire de console des systèmes d'exploitation de type Unix permettant d'exécuter des commandes avec les privilèges d'un autre utilisateur, par défaut le superutilisateur root.
Les fonctions `sudo` et `su`, dans `sudo-rs`, ont été entièrement réécrites en Rust, un langage de plus en plus utilisé et recommandé dans l'industrie, car il est devenu l'un des principaux langages pour Android et est même pris en charge comme langage de programmation secondaire dans le noyau Linux. Microsoft, de son côté, a également évoqué à plusieurs reprises son intention de réécrire le noyau et certaines des bibliothèques Windows qu'il contient.
Il est précisé que les utilitaires sont compatibles avec les utilitaires classiques SUDO et SU chaque fois que cela est possible, permettant ainsi à sudo-rs de remplacer SUDO de manière transparente dans les scénarios typiques correspondant à la configuration par défaut de /etc/sudoers sous Ubuntu et Debian. Sudo-rs a déjà été implémenté en remplacement du paquet SUDO traditionnel dans la distribution Wolfi Linux, dans le but d'offrir le plus haut niveau de sécurité.
L'utilisation du langage Rust pour le développement de SU et SUDO est censée réduire le risque de vulnérabilités dues à une gestion non sécurisée de la mémoire et éliminer l'apparition d'erreurs telles que l'accès à une zone mémoire après sa libération et le manque de mémoire aux limites des tampons.
De plus, afin de garantir un niveau de sécurité adéquat, le projet a développé une suite de tests étendue , permettant également de contrôler le maintien de la compatibilité requise avec l'utilitaire sudo d'origine. Pour réduire la surface d'attaque et le nombre de vulnérabilités potentielles dans sudo-rs, il a été décidé d'abandonner l'implémentation des fonctionnalités sudo rarement utilisées.
Parmi les différences avec SUDO , on note l' inclusion du mode use_pty par défaut, parmi les fonctionnalités fondamentalement non implémentées figurent mail_badpass, ainsi que la compatibilité avec sendmail, tandis que les fonctionnalités qui n'ont pas encore été implémentées, mais qui seront ajoutées à l'avenir : l'utilitaire sudoedit, les modes NOEXEC et NOINTERCEPT, la prise en charge de la liaison des blocs de configuration « par défaut » à des utilisateurs et des commandes individuels, la possibilité de s'authentifier sans utiliser PAM.
Il est à noter qu'au cours de ce mois de septembre, il est prévu de confirmer la qualité de l'implémentation et qu'un audit indépendant de la base de code sudo-rs est également prévu.
De plus, il est prévu que la deuxième version intègre des outils pour le travail en environnement multi-utilisateurs , tels que le mode NOEXEC, les journaux d'audit, la possibilité pour les utilisateurs disposant des droits sudo de mapper les hôtes et la prise en charge de 16 groupes d'utilisateurs. La troisième version sera compatible avec la configuration sudoers de Fedora et ajoutera l' utilitaire sudoedit , tout en utilisant les mécanismes SELinux et AppArmor pour renforcer la sécurité.
Enfin , si vous souhaitez en savoir plus à ce sujet , vous trouverez les détails en suivant ce lien.