Nuova vulnerabilità Linux Pack2TheRoot consente escalation privilegi: come funziona

Pack2TheRoot è una vulnerabilità critica in PackageKit che consente a utenti locali di ottenere privilegi root sfruttando una race condition nelle transazioni. Ecco come funziona e quali versioni sono interessate.

Una vulnerabilità latente per oltre un decennio ha riportato l’attenzione su uno dei componenti meno discussi ma più diffusi nei sistemi Linux: il layer di gestione pacchetti. La falla, identificata come CVE-2026-41651 e soprannominata Pack2TheRoot, consente a un utente locale privo di privilegi di ottenere accesso root senza autenticazione. Il problema coinvolge installazioni predefinite di numerose distribuzioni, tra cui Ubuntu, Debian e Fedora, con un impatto potenzialmente esteso a milioni di sistemi.

PackageKit nasce con l’obiettivo di uniformare la gestione dei pacchetti attraverso un’interfaccia comune basata su D-Bus. Introdotto nei primi anni 2010 per semplificare l’interazione tra frontend grafici e backend come APT e DNF, è diventato nel tempo una componente opzionale ma largamente integrata, soprattutto nei desktop environment e in strumenti di amministrazione remota come Cockpit. Proprio questa diffusione silenziosa ha ampliato la superficie d’attacco.

Origine della vulnerabilità Pack2TheRoot e meccanismo tecnico

Il problema deriva da una race condition di tipo TOCTOU (Time Of Check To Time Of Use), una vulnerabilità che si verifica quando lo stato di una risorsa viene controllato e poi utilizzato in due momenti distinti, consentendo che sia nel frattempo modificato; in questo caso riguarda il modo in cui il sistema gestisce internamente le transazioni.

Il codice incriminato riguarda l’uso della variabile cached_transaction_flags: durante il ciclo di vita di una transazione, un attaccante locale può manipolare lo stato della transazione tra il controllo e l’esecuzione. La funzione InstallFiles() sovrascrive i flag senza verificare se la transazione sia già stata autorizzata; contemporaneamente, il sistema di gestione degli stati ignora transizioni anomale ma mantiene valori corrotti. Il risultato è una finestra temporale in cui un processo sprovvisto di diritti riesce a eseguire operazioni con privilegi elevati.

Il comportamento è stato osservato anche tramite comandi apparentemente innocui come pkcon install, che in alcune configurazioni consente l’installazione di pacchetti senza richiesta di password. Sfruttando questa condizione, è possibile installare pacchetti arbitrari e attivare script RPM con privilegi root.

Impatto reale e scenari di attacco

Il punteggio CVSS 3.1 assegnato è 8,8: un valore elevato che riflette la gravità della compromissione. L’attacco richiede accesso locale, ma non necessita di privilegi elevati né interazione dell’utente. In ambienti multiutente, workstation condivise o server accessibili tramite SSH, il rischio diventa concreto.

Una volta ottenuto l’accesso root, l’attaccante può modificare configurazioni di sistema, installare backdoor persistenti o disabilitare meccanismi di sicurezza. L’esecuzione di scriptlet RPM durante l’installazione dei pacchetti apre ulteriori possibilità: codice arbitrario può essere eseguito automaticamente nel contesto root.

Le versioni vulnerabili coprono un intervallo ampio, dalla 1.0.2 alla 1.3.4 di PackageKit: considerando che la prima risale a oltre dodici anni fa, molte distribuzioni LTS risultano esposte anche in configurazioni aggiornate. Test pratici hanno confermato la possibilità di sfruttamento su Ubuntu 24.04 LTS, Debian 13 e Fedora 43.

Perché il difetto è rimasto nascosto così a lungo

La natura del bug rende difficile l’individuazione: non si tratta di un errore evidente, ma di una condizione sfortunata figlia della combinazione di più anomalie. Tre condizioni devono verificarsi simultaneamente: gestione errata dei flag, inconsistenza nello stato della transazione e sincronizzazione imperfetta tra controllo ed esecuzione.

Un altro elemento rilevante riguarda l’uso crescente di strumenti automatizzati per la ricerca di vulnerabilità.

Il team che ha individuato Pack2TheRoot ha sfruttato modelli di intelligenza artificiale (AI) 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.

Correzioni e aggiornamenti disponibili

La correzione è stata introdotta in PackageKit 1.3.5: l’aggiornamento 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 sistema è vulnerabile non basta controllare i processi attivi, perché servizi come PackageKit e Cockpit non sono sempre in esecuzione: possono essere avviati automaticamente su richiesta tramite D-Bus. È quindi necessario prima verificare se PackageKit è installato e confrontarne la versione con quelle vulnerabili, ad esempio usando dpkg -l | grep -i packagekit oppure rpm -qa | grep -i packagekit.

Successivamente, per controllare se il servizio è disponibile, si può eseguire systemctl status packagekit oppure pkmon: se systemctl indica che il servizio è caricato o in esecuzione oppure se gli strumenti di monitoraggio mostrano attività di transazione, significa che il daemon corrispondente risulta è attivo e il sistema potrebbe essere sfruttabile se non aggiornato.

Infine, 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 per verificare la presenza di output.

In attesa degli aggiornamenti, alcune contromisure riducono il rischio. 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.

Ti consigliamo anche

Link copiato negli appunti