Suid root: l'importanza di essere sicuri

Vi sarà forse capitato di ascoltare l'oscura dizione di ``bit suid root'' riferita ad un determinato programma. L'argomento riguarda i permessi associati ad un file (si veda il paragrafo 2.1); a questi permessi si aggiungono altre informazioni definibili globalmente come modalità dei permessi, nelle quali rientra la modalità detta ``suid''.

La modalità suid attribuisce al file in esecuzione i privilegi dell'utente cui appartiene; se però l'utente cui appartiene è l'amministratore di sistema, ecco che la modalità suid attribuisce al file in esecuzione i privilegi di root. Ciò sarà più chiaro con un semplice esempio.

Facciamo per prima cosa una copia dell'eseguibile cp nella nostra cartella personale:

$ cd ~

$ cp /bin/cp .

e non dimenticate il punto finale, mi raccomando! Assumiamo i privilegi di root:

$ su

Password: ****

e cambiamo l'utente proprietario del file cp:

# chown root.root cp
attribuendo al file la modalità suid:

# chmod u+s cp
Infatti se ora facciamo elencare il file:

# ls -l cp

-rwsr-xr-x root root 51212 2004-08-24 17:48 cp

osserviamo che al posto della normale ``x'' compare una ``s'', che sta ad indicare la modalità suid root.

Torniamo dunque allo stato precedente lasciando i privilegi di root:

# exit
e creiamo il solito file vuoto ``prova'':

$ touch prova
e copiamolo adesso col nostro cp modificato (non quello di sistema) nel file ``prova2'':

$ ./cp prova prova2
Infine facciamoci fare un elenco per vedere il risultato ottenuto; vedremmo qualcosa del tipo:

$ ls -l prova prova2

-rw-r-r- 1 morena morena 0 Aug 23 12:56 prova

-rw-r-r- 1 root morena  0 Aug 23 12:57 prova2

Sorpresa! Il file copiato prova2 appartiene a root pur essendo stato creato da un utente normale. Le implicazioni sulla sicurezza del sistema derivanti dall'uso di file eseguibili di proprietà di root in modalità suid sono enormi e pericolose, perchè la funzionalità suid non consente un uso selettivo sulla base dell'utente che esegue il comando stesso: in altre parole, chiunque può usare il comando con i privilegi di root. Infatti uno dei grandi problemi di Linux è che l'utente root non ha restrizioni, rendendo in pratica Linux un sistema a ''single point of failure''.

La sicurezza del sistema dovrebbe essere tenuta presente sin dalla fase del partizionamento dei dischi53 durante l'installazione. Data la vastità e importanza dell'argomento, si consiglia caldamente di leggere il Securing Debian Manual, disponibile con:

# aptitude install harden-doc
Intanto assicuratevi che nel vostro /etc/apt/sources.list sia presente la seguente riga:

deb http://security.debian.org/debian-security stable/updates main contrib non-free
Potrete così almeno accedere agli aggiornamenti fatti alla distribuzione per migliorarne la sicurezza, digitando saltuariamente:

# aptitude update

# aptitude upgrade

Questi comandi aggiorneranno solo i pacchetti che effettivamente risultano installati sul vostro computer. La distribuzione Debian è caratterizzata da una cura particolare verso tutti gli aspetti concernenti la sicurezza e si aspetta che l'amministratore di sistema faccia altrettanto.

Mauro Darida 2006-07-25