CIFSwitch, la falla rimasta nascosta 19 anni che porta a root Linux

La vulnerabilità CIFSwitch, presente nel kernel Linux da circa 19 anni, consente a utenti locali senza privilegi di ottenere accesso root sfruttando CIFS.

Una vulnerabilità rimasta nascosta per circa 19 anni nel kernel Linux ha riportato l’attenzione su una delle aree meno visibili del sistema operativo: l’interazione tra componenti kernel e strumenti in user space utilizzati per l’autenticazione delle condivisioni SMB. La falla in questione, ribattezzata CIFSwitch, permette a un utente locale privo di privilegi amministrativi di ottenere accesso root su numerose distribuzioni Linux in determinate condizioni. La scoperta arriva in una fase in cui il numero di vulnerabilità di elevazione dei privilegi individuate nel kernel continua a crescere, spingendo distributori e amministratori di sistema ad accelerare l’adozione delle patch di sicurezza.

Come funziona l’autenticazione CIFS e il suo ruolo nelle condivisioni

Per comprendere la natura della vulnerabilità è necessario analizzare il funzionamento dell’autenticazione CIFS. Quando un sistema Linux monta una condivisione SMB che utilizza meccanismi di autenticazione avanzati come Kerberos e SPNEGO, il kernel richiede la generazione di una chiave di autenticazione denominata cifs.spnego.

La richiesta passa attraverso il meccanismo request_key, parte integrante dell’infrastruttura keyring del kernel. Se la chiave non risulta disponibile, il kernel delega l’operazione a un programma esterno appartenente al pacchetto cifs-utils.

Il processo cifs.upcall è eseguito con privilegi root e riceve una descrizione contenente informazioni come identificativo utente, PID del processo richiedente, cache delle credenziali Kerberos e namespace associati. In condizioni normali questi dati consentono al programma di operare nel corretto ambiente di esecuzione e recuperare le credenziali necessarie per l’autenticazione.

L’errore che apre la strada all’elevazione dei privilegi

Secondo l’analisi pubblicata dal ricercatore, il kernel non verifica adeguatamente l’origine delle richieste cifs.spnego. Un utente locale può quindi invocare direttamente request_key e costruire manualmente una descrizione della chiave contenente parametri arbitrari.

La mancanza di controlli permette all’attaccante di aggirare il flusso CIFS previsto dagli sviluppatori e fornire a cifs.upcall valori manipolati. Quando il programma, eseguito come root, interpreta tali dati, effettua il passaggio nei namespace indicati dal PID fornito dall’aggressore.

Il risultato è particolarmente pericoloso: il componente privilegiato finisce per operare all’interno di un ambiente controllato dall’utente malintenzionato, creando le condizioni per l’esecuzione di codice con privilegi amministrativi completi.

Distribuzioni coinvolte e fattori che influenzano l’esposizione

L’impatto della vulnerabilità varia sensibilmente tra le diverse distribuzioni Linux. Alcune risultano vulnerabili nelle configurazioni predefinite perché includono cifs-utils già installato e consentono l’intera catena di sfruttamento. Tra i sistemi segnalati figurano Linux Mint, CentOS Stream 9, Rocky Linux 9, AlmaLinux 9, Kali Linux e SLES 15 SP7.

Altre distribuzioni possono risultare esposte solo dopo l’installazione manuale di cifs-utils oppure quando particolari impostazioni di sicurezza consentono l’utilizzo dei namespace non privilegiati.

Fedora, molte versioni di Ubuntu, openSUSE, Oracle Linux e altre distribuzioni adottano invece politiche di sicurezza che interrompono il percorso di attacco. In numerosi casi intervengono meccanismi come SELinux o AppArmor, capaci di impedire alcune delle operazioni necessarie allo sfruttamento completo della falla.

La vulnerabilità evidenzia ancora una volta il valore degli approcci di hardening. Sebbene non eliminino il difetto nel codice, possono impedire che una vulnerabilità teoricamente critica si trasformi in un compromesso effettivo del sistema.

Patch disponibili e misure temporanee

Le principali distribuzioni Linux hanno già iniziato a distribuire aggiornamenti correttivi. La soluzione proposta introduce verifiche aggiuntive sull’origine delle richieste cifs.spnego, consentendo l’accettazione esclusivamente delle richieste generate dal percorso CIFS legittimo.

Parallelamente sono stati introdotti controlli aggiuntivi nello spazio utente per verificare che le descrizioni delle chiavi provengano realmente dal kernel e non da processi arbitrari.

Nei sistemi che non possono essere aggiornati immediatamente, gli amministratori possono ridurre la superficie d’attacco rimuovendo il pacchetto cifs-utils quando non necessario oppure disabilitando il modulo CIFS. Anche la limitazione dei namespace utente non privilegiati contribuisce a ostacolare lo sfruttamento della vulnerabilità.

Manizada ha pubblicato anche un proof-of-concept che consente ai responsabili della sicurezza di verificare la presenza della falla, validare l’efficacia delle patch e controllare il corretto funzionamento dei sistemi di rilevamento. La disponibilità pubblica del PoC rende ancora più urgente l’installazione degli aggiornamenti distribuiti dai vari vendor.

Ti consigliamo anche

Link copiato negli appunti