IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Systemd v256 présente run0 : Une alternative plus sûre à sudo, une nouvelle approche de l'élévation de privilèges sécurisée
Visant à éliminer progressivement les binaires SUID traditionnels

Le , par Jade Emy

35PARTAGES

15  0 
Lennart Poettering présente run0 dans systemd v256, une nouvelle approche de l'élévation de privilèges sécurisée, visant à éliminer progressivement les binaires SUID traditionnels.

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...
À la lumière de ce qui précède, sa vision d'un système plus sûr implique l'élimination complète des binaires SUID et la mise en place d'une architecture où le code privilégié fonctionne indépendamment des interférences non privilégiées.

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 ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Escapetiger
Expert éminent sénior https://www.developpez.com
Le 02/05/2024 à 12:52
Pour expliciter ce que Metal3d vient d'écrire ci-dessus:

Controverses

Il a été critiqué au sein de la communauté des utilisateurs pour la complexité apportée par ses systèmes, notamment PulseAudio et systemd. Ses détracteurs lui opposent le principe KISS, en vertu duquel un programme doit faire peu de choses mais les faire bien sans réinventer la roue, ce qui fait partie des principes d'un système UNIX. La polémique au sujet de systemd a été très vive et il reçut même des menaces de mort, avant un appel à l’apaisement par Linus Torvalds en personne. En réaction à l’adoption de systemd par Debian est née la distribution Devuan, en tant que fork conservant SysV init. En dépit de ceci, systemd, qui a depuis gagné en maturité, est aujourd’hui largement adopté parmi les principales distributions Linux.

Poettering quitte Red Hat discrètement courant 2022 tout en continuant à contribuer sur systemd pour rejoindre ensuite Microsoft.
Source Wikipedia: Lennart Poettering

Par ailleurs, je partage le constat fait par l'auteur à propos des failles liées aux binaires SUID issus d' UNIX.

Ce qui est inquiétant avec Lennart Poettering, c'est qu'il développe, brillamment certes, en mode boite noire, ce qui vaut, par exemple pour PulseAudio, quelques désagréments (pour rester dipomate, cf. ici).

Il est encore plus inquiétant de savoir que ce monsieur travaille maintenant pour Microsoft, on est bien là dans un conflit majeur d'intérêt, susceptible de hérisser une fois de plus la communauté Linux, quand bien même son travail est d' utilité publique.

On peut, à propos de sa personnalité, s'interroger sur le choix de son pseudo (cf @pid_eins sur Mastodon ici).
Pid Eins correspond à PID 1 en allemand, je ne sais pas si c'est de l'humour et/ou de l'égo, à vous de voir :

Identifiant de processus
« L'identifiant de processus ou PID (Process IDentifier) est un code unique attribué sur les systèmes Unix ou Windows à tout processus lors de son démarrage. Il permet ainsi d'identifier le processus dans la plupart des commandes s'appliquant sur un processus donné (comme kill).

Sous Linux le premier programme démarré, init, a le PID 1 ...
»

A suivre
5  0 
Avatar de Ti-Slackeux
Membre expérimenté https://www.developpez.com
Le 03/05/2024 à 20:09
Citation Envoyé par Jipété Voir le message

Avant, aucun problème avec les machines précédentes, sans SystemD...
Facile : https://www.devuan.org/

Debian sans systemd, ça devrait le faire pour vous.

Sinon il y a Slackware, sans systemd et sans dépendances ^^"

hth,
4  0 
Avatar de abriotde
Membre chevronné https://www.developpez.com
Le 02/05/2024 à 23:01
Le problème c'est qu'il veut toujours faire le truc qui fait tout qui remplace tout... Et là en gros, il veut faire passer le sudo dans SystemD. SystemD est déjà trop central, il se rends trop nécessaire pour faire tout. Vous vous demandez peut-être en quoi est-ce un problème. C'est un problème car ce n'est pas KISS (Keep It Simple and Stupid) qui est la phylosophie à la base de UNIX et une excellente philosophie informatique qui a maintes fois montré qu'elle était la meilleure. Le principe est que un programme doit rester simple et pour ça faire une seule chose et le faire bien. Alors évidemment plus l'on avance plus les choses se complexifient et c'est normal mais disons que cela doit rester le plus simple possible.
SystemD est le programme qui démarre les processus de l'ordinateur. En soit c'est un excellent processus mais il a un énorme défaut c'est qu'il veut tout contrôler et que les programmes dépendent de lui. Et ça c'est une très mauvaises choses. Un programme doit être le plus indépendant de son environnement possible pour une raison simple c'est que l'on doit pouvoir le porter ailleurs (Sur un autre Linux a minima comme un OS embarqué, et mieux sur un autre UNIX).
Oui au run0 s'il ne dépends pas de SystemD. Il faut une interface entre les 2 de manière à pouvoir le démarrer sur un OS sans systemD.
L'idée n'est pas mauvaise mais la mise en œuvre est déplorable.
3  0 
Avatar de xdelatour
Membre éprouvé https://www.developpez.com
Le 05/05/2024 à 9:39
Citation Envoyé par chrtophe Voir le message
Qu'on aime ou pas systemd, comme il est maintenant la référence, il faut faire avec.
Certes, mais c'est la référence "sous Linux" uniquement (pour l'instant vu que ça marche aussi sous WSL).

Citation Envoyé par chrtophe Voir le message
Ne pas le faire c'est partir vers des galères.
J'en suis bien conscient et c'est pour ça que je vais sans doute partir plutôt vers BSD (je teste Devuan et NetBSD sur des VM pour l'instant). J'ai pu me passer du bloatware Windows depuis les années 1990 (dès que j'ai eu mon premier PC en 1997). Je vais maintenant essayer de me passer du bloatware Linux.

Pour revenir au sujet de l'article : un simili-sudo qui ouvre un pseudo-terminal pour communiquer avec je ne sais quel service et qui utilise aussi polkit pour éviter "les complexités de la configuration traditionnelle ", je ne suis pas sûr que ce soit moins complexe ou plus sécurisé que l'existant. Quant au fait que "L'outil ajoute également une touche de convivialité" en changeant l'arrière-plan ? Le prompt différent n'était pas suffisant ? Pourtant cela s'apprenait à l'école.

Je ne veux pas dire que "c'était mieux avant", mais remplacer des choses fonctionnelles par des choses plus lourdes avec plus d'interdépendances (donc avec plus de probabilités de bug ou panne) ou à moitié finies (genre Wayland qui, lorsque X.org sera définitivement abandonné, va m'empêcher d'utiliser la télémaintenance pour le boulot parce que le rendu distant "is outside the scope of Wayland", j'ai quand même du mal à voir où se situe le progrès.
3  0 
Avatar de Metal3d
Membre habitué https://www.developpez.com
Le 02/05/2024 à 10:26
Comme pour systemd, on va avoir des réticences, il va être menacé de mort, de gens vont forker comme des sales pour faire genre qu'ils sont meilleurs. Et puis ce sera généralisé et tout le monde sera finalement content.

Parce que systemd, personnellement, je trouve ça très bien. Et run0 me paraît, sur le papier, une excellente idée.

Et j'ai généralement confiance en Lennart.
4  2 
Avatar de abriotde
Membre chevronné https://www.developpez.com
Le 02/05/2024 à 23:06
Citation Envoyé par Metal3d Voir le message
Parce que systemd, personnellement, je trouve ça très bien. Et run0 me paraît, sur le papier, une excellente idée.

Et j'ai généralement confiance en Lennart.
Ce n'est pas que SystemD soit une mauvaise chose, c'est son implémentation non KISS qui pause problème. Aujourd'hui tous les soft deviennent dépendant de SystemD, c'est un problème. Et en plus il le sont pour l'affichage ou pour le son... alors que SystemD est censé gérer que le démarrage (Et relance en cas de plantage).
Lennart n'est pas idiot mais buté et n'arrive pas a penser KISS ou dit autrement interopérabilité.
2  0 
Avatar de Jipété
Expert éminent sénior https://www.developpez.com
Le 03/05/2024 à 8:29
Alors moi, j'ai remarqué un truc curieux, au démarrage de ma machine : une fois qu'elle a booté et qu'elle est up'n'running, je lance mais parfois pas tout de suite le gestionnaire de machines virtuelles et de là un vieux XP sp2 solid as a rock mais pareil, lancé un peu n'importe quand, c'est variable en fonction de mon envie de café, du temps à chauffer l'eau, etc.

Et ce que j'ai constaté à la fin du démarrage de XP, c'est que la musiquette Windows n'a jamais le même rendu : des fois c'est tout hachuré, des fois il en manque au début des fois il en manque à la fin et très très rarement c'est tout bon, bref, si le son était une image, elle serait quasiment à chaque fois toute déchirée, chiffonnée, massacrée, vraiment désagréable, et tout ça depuis la mise en prod' de ce host sous Debian up-to-date (environ 2 ans).
Avant, aucun problème avec les machines précédentes, sans SystemD...

Citation Envoyé par abriotde Voir le message
c'est son implémentation non KISS qui pause problème.
Si ça pause problème, ce n'est pas grave ; ce qui est grave, c'est quand ça pose problème...
3  1 
Avatar de Ti-Slackeux
Membre expérimenté https://www.developpez.com
Le 03/05/2024 à 23:38
Citation Envoyé par abriotde Voir le message
D'accord mais le problème majeur de SystemD ce n'est pas qu'il gère le démarrage c'est que comme il fait tout, il a une grande surface d'attaque et de plus en plus de logiciels en deviennent dépendant. Devuan, remplace SystemD pour le démarrage. Mais outre le fait qu'il n'est pas forcément meilleur pour pouvoir faire tourner les logiciels dépendant de SystemD ils ont fait un logiciel qui a le rôle de SystemD avec cette même surface d'attaque.
Autrement dit, tu n'a pas systemD en lui même mais 2 soft qui réunit ont les même fonctionnalités. C'est un peu bonnet blanc et blanc bonnet (Enfin pas tout à fait mais bon).
J'ai pas tout compris
systemd, c'est un joyeux monolythe, une belle blackbox imho
Quels sont les logiciels auquel vous faites référence qui feraient le taf de systemd ?
2  0 
Avatar de disedorgue
Expert éminent sénior https://www.developpez.com
Le 04/05/2024 à 11:31
Au début j'étais contre systemd pour les raisons déjà cités plus haut mais faut quand même reconnaitre que si on se donne un peu la peine de comprendre comment il fonctionne, c'est un peu plus propre que ce que l'on avait avant avec les script foireux de démarrage des services entre autre chose.

Et bizarre qu'il n'y ait pas encore eu de fork de debian par des récalcitrant sur l'utilisation de journalctl au lieu de (r)syslog
2  0 
Avatar de papajoker
Expert confirmé https://www.developpez.com
Le 05/05/2024 à 13:54
Citation Envoyé par xdelatour Voir le message
au fait que "L'outil ajoute également une touche de convivialité" en changeant l'arrière-plan ? Le prompt différent n'était pas suffisant ? Pourtant cela s'apprenait à l'école.
Ne pas confondre su et sudo ! sudo existe pour lancer une commande donc le prompt n'est pas utilisé. Ou alors, on recommande le sudo -s dans les écoles ?
Mais, ce changement de couleur me paraît être un gadget en temps normal. Utile uniquement dans les scripts qui utilisent plusieurs fois sudo (puisque le mot de passe n'est généralement pas redemandé). Ou si je lance a la suite plusieurs scripts qui utilisent sudo en interne.
2  0