Salta al contenuto
PURPLEDUEL

Il principio del privilegio minimo (e perché sudo va usato con cura)

Aggiornato il · 2 min di lettura

Il principio del privilegio minimo dice una cosa semplice: ogni persona, programma o servizio deve avere solo i permessi che servono per fare il proprio lavoro, e solo per il tempo necessario. Se un account con pochi poteri viene compromesso, i danni restano piccoli; se è un amministratore, il danno è totale. Molti attacchi riusciti non sono geniali: trovano un permesso più largo del necessario e lo sfruttano.

Perché è così importante

Pensa a un palazzo: il portinaio ha le chiavi del portone, non quelle di tutti gli appartamenti. Nei sistemi informatici, invece, è comune dare a un servizio i permessi dell'amministratore «per far prima». Se quel servizio ha una vulnerabilità, chi la sfrutta eredita tutti i suoi poteri. L'aumento dei privilegi da utente semplice ad amministratore (la *privilege escalation*) è una tappa fissa di quasi ogni intrusione seria.

Sudo: potere a piccole dosi

Su Linux il comando sudo permette a un utente di eseguire singoli comandi come amministratore (root) senza entrare come root. Le regole stanno nel file /etc/sudoers. Il problema nasce dal modo in cui sono scritte.

# Troppo largo: anna può fare qualunque cosa, senza password
anna ALL=(ALL) NOPASSWD: ALL

# Meglio: solo il comando che le serve davvero
anna ALL=(root) /usr/bin/systemctl restart nginx

Anche una regola che sembra innocua può essere troppo larga. Se concedi sudo su un programma che può leggere o scrivere qualsiasi file (un editor, un visualizzatore di testo, un archiviatore), concedi di fatto l'accesso a tutto il sistema, compreso il file delle password. Per questo il comando più utile da lanciare su un sistema che stai controllando è sudo -l: elenca cosa può fare l'utente corrente con privilegi elevati.

Un esempio concreto: i programmi SUID

Alcuni programmi hanno il bit SUID: quando li esegui, girano con i permessi del proprietario (spesso root). Servono, per esempio, per cambiare la propria password, ma ogni programma SUID in più è una superficie d'attacco. Un controllo di routine per elencarli:

$ find / -perm -4000 -type f 2>/dev/null
/usr/bin/passwd
/usr/bin/sudo
/usr/bin/mount
/opt/strumento-vecchio/backup-tool     <-- chi l'ha messo qui? serve davvero?

I primi sono previsti in un sistema normale; l'ultimo è fuori posto e va spiegato o rimosso (chmod u-s). È lo stesso ragionamento che si allena nei laboratori di audit di PurpleDuel, su sistemi simulati.

Come ci si difende: mettere in pratica il privilegio minimo

La stessa idea sta dietro l'architettura *zero trust*: nessuno ha fiducia automatica, ogni accesso viene verificato e ristretto al minimo indispensabile.

Continua a leggere