sudo est un programme pour les systèmes d'exploitation informatiques de type Unix qui permet aux utilisateurs d'exécuter des programmes avec les privilèges de sécurité d'un autre utilisateur. Il signifiait à l'origine "superuser do" car c'était tout ce qu'il faisait, et c'est son utilisation la plus courante.
Contrairement à la commande similaire su, les utilisateurs doivent, par défaut, fournir leur propre mot de passe pour l'authentification, plutôt que le mot de passe de l'utilisateur cible. Après l'authentification, et si le fichier de configuration autorise l'accès de l'utilisateur, le système invoque la commande demandée. Le fichier de configuration propose des autorisations d'accès détaillées, notamment l'activation des commandes uniquement à partir du terminal d'invocation, l'exigence d'un mot de passe par utilisateur ou par groupe, l'exigence d'une nouvelle saisie du mot de passe à chaque fois ou l'absence totale de mot de passe pour une ligne de commande particulière.
La commande sudo est largement considérée comme un outil fondamental dans les opérations quotidiennes sous Linux, à tel point sa présence est tenue presque pour acquise. Mais suite à cette présentation, il se pourrait que ses jours soient peut-être comptés et que les nouvelles versions de systemd pourraient marquer le début de son déclin.
Dans son dernier billet, Lennart Poettering, le maître d'œuvre de systemd, présente une critique réfléchie et un remplacement robuste de la commande sudo, qui existe depuis longtemps. Selon lui, le problème principal de sudo réside dans sa nature SUID, qui permet à un processus de s'exécuter avec des privilèges élevés partiellement contrôlés par du code non privilégié, exigeant un nettoyage manuel méticuleux - une recette pour des failles de sécurité potentielles.
Je pense personnellement que le plus gros problème de sudo est le fait qu'il s'agisse d'un binaire SUID - la grande surface d'attaque, les plugins, l'accès au réseau, etc. qui viennent ensuite ne font qu'aggraver le problème principal...
Dans mon monde idéal, nous aurions un système d'exploitation entièrement dépourvu de SUID. Jetons le concept de SUID sur la décharge des mauvaises idées d'UNIX. Un contexte d'exécution pour le code privilégié qui est à moitié sous le contrôle du code non privilégié et qui nécessite un nettoyage manuel minutieux n'est tout simplement pas la façon dont l'ingénierie de la sécurité devrait être faite en 2024.
Voici run0, la dernière innovation de systemd dont la sortie est prévue pour la version 256. Il ne s'agit pas seulement d'un nouvel outil, mais d'un systemd-run réimaginé, accessible via un lien symbolique, qui imite sudo sans être réellement un binaire SUID.
Il fonctionne en demandant au gestionnaire de services d'exécuter des commandes sous l'UID de l'utilisateur cible, en créant un nouveau PTY (pseudoterminal) et en transférant des données entre l'ATS d'origine et ce PTY. Cette configuration garantit que la commande s'exécute dans un environnement isolé, à partir du PID 1, sans hériter d'un contexte problématique de la part du client.
De plus, run0 évite les complexités de la configuration traditionnelle en utilisant polkit pour l'autorisation, en rationalisant les interactions avec l'utilisateur et en sécurisant davantage le processus d'exécution. L'outil ajoute également une touche de convivialité : lorsqu'il fonctionne avec des privilèges élevés, il modifie l'arrière-plan du terminal en lui donnant une teinte rougeâtre, ce qui sert de repère visuel pour indiquer le statut élevé de l'utilisateur - un rappel simple mais efficace pour gérer les privilèges de manière responsable.
En conclusion, une chose est sûre : cela suscitera de nouveaux débats au sein de la communauté Linux. Une autre certitude est que systemd v256 est maintenant achevé à 88 ;%, et qu'il ne reste plus grand-chose avant la sortie de la version stable finale. Reste à savoir ce qui se passera ensuite.
Source : Lennart Poettering
Et vous ?
Pensez-vous que run0 est crédible ou pertinente ?
Quel est votre avis sur le sujet ?
Voir aussi :
Les utilitaires "sudo" et "su" sont en train d'être réécrits dans le langage Rust pour assurer une meilleure sécurisation de la mémoire. L'initiative bénéficie du soutien financier d'AWS
Une vulnérabilité sur Sudo permettant aux utilisateurs non autorisés d'agir en tant que root sur Linux a récemment été corrigée dans la dernière version (1.8.28) de l'utilitaire
La version Windows de la vénérable commande Linux "sudo" devrait bientôt être disponible sous Windows 11 : Windows finira-t-il par devenir une distribution Linux classique ?