Sudo, basta un «-1» per diventare root: la falla CVE-2019-14287

Sudo 1.8.28 corregge un errore che, con certe regole sudoers, permette di eseguire comandi come root passando l'ID utente -1. Non riguarda le installazioni standard, ma chi usa l'esclusione !root deve controllare.

Sudo, basta un «-1» per diventare root: la falla CVE-2019-14287

Il 14 ottobre è uscita la versione 1.8.28 di sudo. Corregge la CVE-2019-14287, un errore che in alcune configurazioni permette a un utente di eseguire comandi come root proprio quando le regole glielo vietano in modo esplicito. Il giorno dopo l’annuncio circolava già una dimostrazione pubblica.

Il caso tipico è una riga di sudoers che concede di lanciare un comando con l’identità di chiunque, tranne root:

mario  ALL = (ALL, !root) /usr/bin/id

Basta che l’utente indichi la destinazione con un ID numerico, e che quell’ID sia -1 o il suo equivalente senza segno 4294967295. Il controllo delle regole non lo riconosce come root e lo lascia passare. Le chiamate di sistema che cambiano identità, invece, interpretano quel valore come «non cambiare nulla», e il processo resta con l’ID 0:

sudo -u#-1 id -u
0

Ci sono anche due effetti collaterali. Nei log il comando risulta eseguito dall’utente 4294967295 anziché da root, e i moduli PAM di sessione vengono saltati. Chi scorre i registri rischia di non notare niente.

Meno grave di quanto sembri, ma solo se non usi !root

La falla non regala root a qualunque utente. Servono un account già presente in sudoers e una regola che combini ALL nella specifica Runas con un’esclusione come !root. Le installazioni standard delle principali distribuzioni non usano questa combinazione. Il problema riguarda i server con regole personalizzate, dove quell’esclusione veniva considerata una barriera di sicurezza. Non lo era. A trovare il difetto è stato Joe Vennix, del team di sicurezza di Apple.

Ubuntu, Debian e Arch hanno già pubblicato i pacchetti corretti; per le altre distribuzioni controlla gli avvisi del fornitore. L’aggiornamento non richiede riavvii. Poi apri sudoers con visudo, insieme ai file in /etc/sudoers.d/, e cerca le regole con ALL e !root. Se non puoi aggiornare subito, sostituiscile con un elenco esplicito degli utenti ammessi, per esempio (www-data, backup). Infine cerca nei log di autenticazione le voci con USER=#-1 o 4294967295: se ne trovi, qualcuno ci ha già provato.

Condividi LinkedIn X Telegram

Continua a leggere