0day: systemd e gli utenti “particolari”

2

Systemd, oramai adottato dalle maggiori distribuzioni Linux, non è nuovo a bug esotici. Siano essi dati dal fatto che il progetto è relativamente nuovo o dal fatto che systemd tende a fare qualcosina in più di quello che dovrebbe, la -quasi- continua scoperta di bug continua a gettare legna sul fuoco, rafforzando i punti di vista dei detrattori.

Non aiuta di certo l’atteggiamento del principale sviluppatore del progetto, Poettering, che spesso sembra cercare scuse per puntare il dito altrove e non dover affrontare i problemi.

Il problema in questione è causato da nomi utenti “particolari”: pare che, se un nome utente inizia con una cifra (come 0day, ad esempio) systemd interpreti male la cosa e, se viene richiesto a systemd di lanciare un processo con quell’utente, questo decida di lanciarlo invece come root.

Il bug è stato rilevato nella versione 232 di systemd e questo uno stralcio di descrizione che si può trovare su bug aperto sul repository GitHub del progetto:

Expected behaviour you didn’t see
The process started by systemd should be user previlege

Unexpected behaviour you saw
The process started by systemd was root previlege

Comportamento aspettato non rilevato
Il processo avviato da systemd dovrebbe avere i privilegi dell’utente

Comportamento inaspettato rilevato
Il processo avviato da systemd ha i privilegi di root

Insomma, decisamente preoccupante come comportamento.

Una delle cose che, personalmente, mi fa sorridere (per non piangere, si intende) è come al solito l’atteggiamento di Poettering riguardo la faccenda:

systemd will validate all configuration data you drop at it, making it hard to generate invalid configuration. Hence, yes, it’s a feature that we don’t permit invalid user names, and I’d consider it a limitation of xinetd that it doesn’t refuse an invalid username.

So, yeah, I don’t think there’s anything to fix in systemd here. I understand this is annoying, but still: the username is clearly not valid.

systemd valida tutti i dati di configurazione che gli mandi, rendendo difficile generare configurazioni non valide. Quindi, si, è una funzionalità il fatto che non permettiamo nomi non validi, e considero una limitazione di xinetd il fatto di non rifiutare nomi utenti non validi.

Quindi, non credo ci sia nulla da sistemare in systemd. Capisco sia noioso ma comunque: il nome utente è chiaramente non valido

In soldoni, dunque: systemd controlla le configurazioni fatte tramite esso, se fai la configurazione con un altro tool che non esegue gli stessi controlli, peggio per te, non dobbiamo garantire che systemd funzioni correttamente in tal caso.

Insomma, seppur i punti possano sembrare validi da entrambe le parti (effettivamente, a fronte di questo bug dovrebbe esserne aperto uno parallelo per il tool che ha permesso la creazione di quell’utente), il comportamento è a dir poco pericoloso e non è possibile ignorare semplicemente la cosa.

La discussion va avanti, e sembra che si stia ragionando su come debba comportarsi systemd nel momento in cui trova parametri non validi nelle sue Unit, nel frattempo il bug è stato marcato come “not-a-bug” dallo sviluppatore ideatore del progetto.

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l’HA e l’universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.

2 risposte a “0day: systemd e gli utenti “particolari””

  1. Avatar RiccardoC
    RiccardoC

    la posizione di systemd mi sembra difficilmente sostenibile, dato che è un pezzo fondamentale del sistema ed eventuali falle di sicurezza lo mettono totalmente a repentaglio: in sostanza dovrebbe essere robusto di suo, e gestire anche il fatto che qualche altro tool possa generare un utente “strano”

  2. Avatar Kim Allamandola
    Kim Allamandola

    Interessante un particolare: “invalid user name” se seguiamo lo standard posix

    “characters from the portable filename character set. The character should not be used as the first character” (goo. gl/7Ap6WE) da cui segue goo. gl/Sjzc5q che possiamo poi riassumere in pratica in [a-z_][a-z0-9_]{0,30}

    In altri termini 0day per qualsiasi sistema posix è un username valido.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *