systemd v256 vuole sostituire sudo con run0

by Marco Giannini on


 

Lennart Poettering, lo sviluppatore principale di systemd, ha annunciato sul suo profilo mastodon le principali novità di systemd v256 che includerà un sostituto di sudo chiamato "run0".

 

Le critiche di Lennart Poettering a sudo

Nel suo post Lennart Poettering parla delle debolezze del comando sudo e della superficie di attacco possibile. Il comando sudo supporta l'accesso alla rete, configurazioni LPAD e altri tipi di plugin. 

Il problema principale di sudo è che si tratta di un binario SUID. I processi SUID sono invocati da codice non privilegiato ed ereditano il contesto di esecuzione previsto e controllato da codice non privilegiato. Per contesto di esecuzione si intende la miriade di proprietà che un processo ha su Linux, da variabili di ambiente, proprietà di pianificazione dei processi, assegnazioni cgroup, contesti di sicurezza etc.

In pratica consente una escalation di privilegi. Da qui l'idea di Poettering di non includere binari SUID.


Cosa è run0 e cosa fa

run0 non è un nuovo strumento, ma è lo strumento esistente da tempo “systemd-run”, che quando viene invocato con il nome “run0” (tramite un link simbolico) si comporta in modo molto simile a un clone sudo. Ma con una differenza fondamentale: non è in realtà SUID. Invece chiede al gestore dei servizi di invocare un comando o una shell sotto l'UID dell'utente di destinazione. Alloca un nuovo PTY per questo, e poi manda avanti e indietro i dati dal TTY di origine a questo PTY.

O in altre parole: il comando di destinazione viene invocato in un contesto di esecuzione isolato senza ereditare alcun contesto dal client. Si potrebbe dire che “run0” è più vicino al comportamento di “ssh” che a quello di “sudo”, sotto molti aspetti. Tranne che non si preoccupa della crittografia o dell'autenticazione crittografica, della gestione delle chiavi e altro, ma si affida invece ai meccanismi di identificazione locale del kernel.

run0 non implementa un proprio linguaggio di configurazione (cioè non ha un equivalente di /etc/sudoers). Al contrario, utilizza semplicemente polkit, cioè il modo in cui oggigiorno lasciamo che i client locali non privati siano autorizzati dai server privati.


Più sicurezza

Lennart Poettering spera che con l'introduzione di questo nuovo componente Systemd, alcuni possibili attacchi a un sistema Linux di sicurezza via sudo come questo bug non saranno possibili in futuro, migliorando la sicurezza complessiva.

Leggi il contenuto originale su Marco's Box

Written by: Marco Giannini