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.



