La vulnerabilità Linux Pack2TheRoot ha riportato i riflettori su uno di quei componenti che nessuno guarda mai con troppa attenzione, ma che gira silenziosamente su milioni di sistemi: il layer di gestione pacchetti. Catalogata come CVE-2026-41651, questa falla consente a un utente locale senza privilegi di ottenere accesso root senza alcuna autenticazione. E il bello, si fa per dire, è che il problema esiste da oltre un decennio. Le installazioni predefinite di distribuzioni enormemente diffuse come Ubuntu, Debian e Fedora risultano coinvolte, il che dà un’idea piuttosto chiara della portata del rischio.
Al centro di tutto c’è PackageKit, nato nei primi anni 2010 con lo scopo di uniformare la gestione dei pacchetti attraverso un’interfaccia comune basata su D-Bus. Nel tempo è diventato una componente opzionale ma largamente integrata, soprattutto negli ambienti desktop e in strumenti di amministrazione remota come Cockpit. Proprio questa diffusione silenziosa, quasi invisibile, ha finito per ampliare la superficie d’attacco senza che nessuno ci facesse troppo caso.
Come funziona il meccanismo tecnico dietro Pack2TheRoot
Il cuore della vulnerabilità Pack2TheRoot è una race condition di tipo TOCTOU (Time Of Check To Time Of Use). In parole povere, lo stato di una risorsa viene controllato in un momento e poi utilizzato in un altro, lasciando una finestra temporale in cui qualcuno può modificarlo. In questo caso specifico, il problema riguarda il modo in cui PackageKit gestisce internamente le transazioni.
La variabile incriminata è cachedtransactionflags: durante il ciclo di vita di una transazione, un attaccante locale può manipolarne lo stato tra il controllo e l’esecuzione. La funzione InstallFiles() sovrascrive i flag senza verificare se la transazione sia già stata autorizzata, mentre il sistema di gestione degli stati ignora transizioni anomale ma mantiene valori corrotti. Il risultato è che un processo senza alcun diritto riesce a eseguire operazioni con privilegi elevati.
La cosa ancora più preoccupante è che il comportamento è stato osservato anche tramite comandi apparentemente innocui come pkcon install, che in alcune configurazioni permette l’installazione di pacchetti senza nemmeno chiedere una password. Sfruttando questa condizione, diventa possibile installare pacchetti arbitrari e attivare script RPM con privilegi root.
Il punteggio CVSS 3.1 assegnato è 8,8: un valore decisamente alto. L’attacco richiede accesso locale, ma non servono privilegi elevati né interazione dell’utente. In ambienti multiutente, workstation condivise o server accessibili via SSH, il rischio diventa molto concreto. Una volta ottenuto l’accesso root, le possibilità per un attaccante sono praticamente illimitate: modificare configurazioni di sistema, installare backdoor persistenti, disabilitare meccanismi di sicurezza. Le versioni vulnerabili coprono un intervallo ampio, dalla 1.0.2 alla 1.3.4 di PackageKit. Test pratici hanno confermato la possibilità di sfruttamento su Ubuntu 24.04 LTS, Debian 13 e Fedora 43.
Perché nessuno se ne era accorto e cosa fare adesso
La natura del bug rende parecchio complicata l’individuazione. Non si tratta di un errore evidente, ma di una condizione che emerge solo quando tre anomalie si verificano simultaneamente: gestione errata dei flag, inconsistenza nello stato della transazione e sincronizzazione imperfetta tra controllo ed esecuzione. Non è il tipo di cosa che salta fuori durante una revisione del codice ordinaria.
Un aspetto interessante riguarda proprio il modo in cui la falla è stata scoperta. Il team che ha individuato Pack2TheRoot ha sfruttato modelli di intelligenza artificiale per esplorare scenari di escalation dei privilegi, guidando l’analisi verso comportamenti anomali difficili da individuare manualmente. Il risultato è stato poi validato con metodi tradizionali.
Per quanto riguarda le correzioni, PackageKit 1.3.5 elimina la possibilità di alterare i flag durante l’esecuzione e rafforza i controlli sulla coerenza dello stato interno. Le distribuzioni stanno progressivamente rilasciando patch retrocompatibili per le versioni LTS ancora supportate. Per verificare se il proprio sistema è vulnerabile, non basta controllare i processi attivi: servizi come PackageKit e Cockpit possono essere avviati automaticamente su richiesta tramite D-Bus. Bisogna quindi verificare se PackageKit è installato e confrontarne la versione con quelle vulnerabili, usando ad esempio dpkg -l | grep -i packagekit oppure rpm -qa | grep -i packagekit. Per controllare se il servizio è disponibile, si può eseguire systemctl status packagekit oppure pkmon. Per versioni di PackageKit inferiori alla 1.3.3 è consigliato utilizzare pkmon, mentre per versioni uguali o superiori alla 1.3.3 si deve usare pkgcli monitor.
In attesa degli aggiornamenti, disabilitare il servizio PackageKit nei sistemi server dove non è necessario rappresenta una prima difesa efficace. Anche la rimozione dell’integrazione con strumenti come Cockpit limita la superficie d’attacco.