tags: sudo SUID


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

  1. 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 comando sudo.
  2. 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.
  3. 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 sudo password: Se la password dell’utente è debole, un attaccante potrebbe ottenere l’accesso a sudo e abusare dei permessi elevati.

Permessi SUID (Set User ID)

  1. 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.
  2. 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.
  3. 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.
  • 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.