PwnKit: una falla di 12 anni in polkit dà i privilegi di root su tutte le principali distro Linux

Un errore di gestione della memoria in pkexec, presente in ogni versione dal 2009, permette a qualsiasi utente locale di diventare root su quasi tutte le distribuzioni Linux. Gli exploit sono pubblici: aggiorna polkit subito.

PwnKit: una falla di 12 anni in polkit dà i privilegi di root su tutte le principali distro Linux

Se amministri server o postazioni Linux, la prima cosa da fare questa settimana è aggiornare polkit. Il 25 gennaio i ricercatori di Qualys hanno reso pubblica PwnKit, CVE-2021-4034, una vulnerabilità in pkexec che permette a qualsiasi utente senza privilegi di diventare root, nella configurazione predefinita e in modo affidabile.

pkexec è il programma di polkit che esegue comandi come un altro utente, un po’ come sudo. È installato con il bit SUID root, quindi gira sempre con i massimi privilegi. Il difetto sta nella gestione degli argomenti: se lo avvii con una lista di argomenti vuota, legge e scrive oltre i limiti previsti e finisce per interpretare come istruzioni alcune variabili d’ambiente scelte dall’attaccante. Il risultato è codice eseguito come root.

Il bug c’è dalla prima versione di pkexec, del maggio 2009. Per oltre dodici anni è rimasto in bella vista nel codice, in un programma che quasi tutte le distribuzioni principali installano di default: Ubuntu, Debian, Fedora, CentOS, RHEL e molte altre.

Locale, ma decisiva

Per sfruttare la falla serve già un accesso al sistema, anche minimo. Proprio per questo è pericolosa: è l’anello che trasforma un problema limitato, come un account web compromesso, un utente SSH qualsiasi o un container con una shell, nel controllo completo della macchina. La segnalazione ai produttori risale al 18 novembre 2021 e le distribuzioni hanno pubblicato gli aggiornamenti insieme alla divulgazione. Poche ore dopo sono comparsi exploit pubblici funzionanti.

Aggiorna il pacchetto con il gestore della tua distribuzione: si chiama policykit-1 su Debian e Ubuntu, polkit su Red Hat e derivate. Se non puoi farlo subito, togli il bit SUID con chmod 0755 /usr/bin/pkexec: perdi la funzione, ma pochissimi server ne hanno davvero bisogno. Comincia dai sistemi con molti utenti o servizi esposti, come server condivisi, hosting, ambienti di sviluppo e nodi che ospitano container.

Nei log di sistema, messaggi anomali di pkexec su variabili d’ambiente non valide possono indicare un tentativo di sfruttamento. La loro assenza, però, non prova nulla: chi conosce l’exploit sa come evitarli.

Condividi LinkedIn X Telegram

Continua a leggere