Differenza fra SUDO e SUID
Vediamo le principali differenze tra i permessi Sudoers e i permessi SUID, concentrandoci anche sulle loro potenziali vulnerabilità.
Permessi Sudoers
-
Cosa sono:
- Il file
/etc/sudoersè utilizzato per controllare chi ha il permesso di eseguire comandi come utente superuser (root) o con i permessi di altri utenti. Il file contiene regole che specificano quali utenti o gruppi possono eseguire determinati comandi con i privilegi elevati utilizzando il comandosudo.
- Il file
-
Come funzionano:
- Gli utenti normali possono eseguire comandi privilegiati temporaneamente con
sudo, senza dover conoscere la password di root, ma utilizzando la propria password. - I permessi possono essere configurati per essere limitati a specifici comandi, limitando così il rischio di eseguire comandi potenzialmente pericolosi.
- Gli utenti normali possono eseguire comandi privilegiati temporaneamente con
-
Potenziali vulnerabilità:
- Configurazione errata: Se il file
sudoersè mal configurato, un utente potrebbe avere accesso a comandi non previsti, potenzialmente eseguendo operazioni critiche per il sistema. - Uso improprio del comando
sudo: Se un utente ha accesso a comandi troppo potenti, come la possibilità di eseguire una shell con privilegi elevati (sudo /bin/bash), potrebbe eseguire qualsiasi comando come root. - Attacchi
sudopassword: Se la password dell’utente è debole, un attaccante potrebbe ottenere l’accesso asudoe abusare dei permessi elevati.
- Configurazione errata: Se il file
Permessi SUID (Set User ID)
-
Cosa sono:
- Il bit SUID è un permesso speciale che può essere assegnato a un file eseguibile. Quando un eseguibile con SUID è avviato da un utente, il processo risultante acquisisce i permessi dell’owner del file, piuttosto che dell’utente che l’ha eseguito.
- In pratica, se un file eseguibile è di proprietà di root e ha il bit SUID impostato, qualsiasi utente che esegue quel file lo farà con i privilegi di root.
-
Come funzionano:
- Quando un file con il bit SUID è eseguito, l’ID effettivo dell’utente che esegue il comando cambia temporaneamente, assumendo quello del proprietario del file.
- Questo è utilizzato per programmi che devono temporaneamente operare con privilegi elevati, come ad esempio il comando
passwd, che consente agli utenti di cambiare la propria password accedendo al file/etc/shadow, che normalmente è accessibile solo da root.
-
Potenziali vulnerabilità:
- Escalation di privilegi: Se un programma con SUID non è sicuro (ad esempio, presenta buffer overflow o vulnerabilità di iniezione di comandi), un attaccante potrebbe sfruttare questa debolezza per eseguire codice arbitrario con i privilegi dell’owner del file (spesso root).
- Configurazione sbagliata: Se il bit SUID è assegnato a eseguibili che non ne hanno veramente bisogno, aumenta la superficie d’attacco. Ad esempio, se un eseguibile pericoloso ha il bit SUID, un attaccante potrebbe usarlo per ottenere privilegi di root.
- Hard link: Se un file con SUID viene copiato o è accessibile tramite un hard link, potrebbe essere usato in modi imprevisti.
Differenze principali tra Sudoers e SUID:
-
Contesto di esecuzione:
- Sudo: L’utente normale può temporaneamente acquisire privilegi elevati, ma solo dopo aver inserito la propria password e solo per i comandi specificati.
- SUID: Un eseguibile specifico viene eseguito con i permessi del proprietario del file, indipendentemente da chi lo esegue.
-
Controllo e granularità:
- Sudo: È molto più granulare, poiché puoi specificare con precisione quali utenti possono eseguire quali comandi con privilegi elevati.
- SUID: Offre meno controllo, poiché il file eseguibile acquisisce sempre i privilegi del suo proprietario.
-
Vulnerabilità:
- Sudo è più sicuro perché richiede l’autenticazione e offre un controllo più fine. Tuttavia, una configurazione errata o comandi concessi troppo ampi possono essere sfruttati.
- SUID è intrinsecamente più rischioso, poiché qualsiasi bug o vulnerabilità in un eseguibile SUID può essere usata per ottenere privilegi di root.
Come prevenire le vulnerabilità:
-
Per Sudoers:
- Configurare attentamente il file
/etc/sudoers, limitando gli utenti e i comandi concessi. - Usare il principio del minimo privilegio, dando accesso solo ai comandi strettamente necessari.
- Abilitare il logging per monitorare l’uso dei privilegi elevati.
- Configurare attentamente il file
-
Per SUID:
- Evitare di impostare il bit SUID su programmi che non ne hanno realmente bisogno.
- Rivedere periodicamente i file con SUID e rimuovere il permesso se non è necessario.
- Assicurarsi che i programmi con SUID siano sicuri e privi di vulnerabilità note (ad esempio, mantenendoli aggiornati).
In conclusione, i permessi Sudoers offrono una soluzione più controllata e sicura per l’accesso a comandi privilegiati rispetto al SUID, che può essere più vulnerabile a escalation di privilegi non desiderate. Tuttavia, entrambe le tecnologie devono essere usate con attenzione per minimizzare i rischi.