In questi giorni è stata resa nota la presenza di una vulnerabilità che interessa il kernel Linux e in particolare la versione 5.8 e le successive. La vulnerabilità, soprannominata Dirty Pipe, rappresenta una delle minacce più gravi che siano state identificate negli ultimi anni.
Vediamo in cosa consiste questa falla e come è stata identificata. Scopriamo anche per quali scopi può essere utilizzata e quali sono i metodi di mitigazione possibili.
Table of Contents
Cos’è la vulnerabilità Dirty Pipe
Di recente è stata identificata una vulnerabilità critica delle distribuzioni di Linux. Si tratta di un problema che riguarda il kernel e interessa alcune delle versioni più recenti.
La vulnerabilità viene identificata come CVE-2022-0847 secondo il sistema di classificazione CVE (Common Vulnerabilities and Exposures) ed è stata soprannominata Dirty Pipe. La presenza di questa falla è stata resa nota il 7 marzo 2022, e sono già presenti gli aggiornamenti per alcune distribuzioni.
Vediamo quali versioni del kernel sono interessate e come funziona la vulnerabilità.
Dirty Pipe: le versioni del kernel interessate
Come riportato da Max Kellermann, colui che ha identificato la vulnerabilità Dirty Pipe, il problema interessa le versioni del kernel 5.8 e successive.
Grazie alla segnalazione del bug, il 23 febbraio sono state rilasciati gli aggiornamenti del kernel 5.16.11, 5.15.25 e 5.10.102, che non sono quindi interessati dalla vulnerabilità.
Allo stesso modo le versioni precedenti alla 5.8 non sono interessate.
Per quanto riguarda il sistema operativo Android, lo stesso Kellermann ha segnalato la vulnerabilità dei dispositivi interessati tra cui Google Pixel 6. Anche i dispositivi Samsung Galaxy S22, con la versione di Android 5.10.43, rientrano nella vulnerabilità.
Come riportato nel resoconto di Kellermann, la patch è stata inserita nel kernel Android il 24 febbraio.
Dirty Pipe, come è stata scoperta la vulnerabilità del kernel
Prima di capire come funziona la vulnerabilità che è stata scoperta di recente, dobbiamo fare un passo indietro e ripercorrere in breve gli eventi che hanno portato alla sua identificazione.
L’identificazione di questa vulnerabilità si deve a Max Kellermann di CM4all che il 7 marzo 2022 ha pubblicato un resoconto dettagliato del problema.
A partire da un ticket di supporto in cui si segnalavano dei file corrotti, Kellermann è riuscito poi ad identificare un pattern e a risalire alla causa dell’errore: un bug nel kernel.
Dalla prima segnalazione, nell’aprile 2021, sono stati necessari diversi mesi di analisi. Gli sforzi si sono conclusi a febbraio del 2022 quando Kellermann è riuscito a identificare l’errore nel kernel Linux.
La vulnerabilità Dirty Pipe è stata quindi segnalata al team di sicurezza del Kernel Linux e a quello di Android.
Kellermann ha quindi rilasciato un resoconto e un proof of concept in cui ha dimostrato la vulnerabilità e come può essere sfruttata.
Come funziona Dirty Pipe
Per la spiegazione dettagliata e tecnica di come funziona la vulnerabilità Dirty Pipe ti rimando alla lettura del resoconto di Kellermann. In questa sede cercheremo di semplificare il funzionamento della vulnerabilità in modo che sia comprensibile anche a chi ha meno familiarità con Linux.
Il nome utilizzato per identificare la vulnerabilità, e in particolare “Pipe”, ci suggerisce che è coinvolta la pipeline, un meccanismo che permette la comunicazione tra due processi. Nello specifico l’output di un processo viene usato come input per il processo successivo.
Si tratta di una grave vulnerabilità che consente a utenti che non dovrebbero essere autorizzati, di apportare modifiche ai file.
Sfruttando questa vulnerabilità, infatti, un utente senza privilegi può modificare e sovrascrivere qualsiasi file, anche quelli con permessi di sola lettura. Questo permette a un utente malintenzionato o ad un hacker di ottenere i permessi root e poter modificare qualsiasi file.
Se, infatti, la vulnerabilità può essere sfruttata per ottenere i permessi di scrittura anche sui file in sola lettura, è stato trovato il modo per utilizzarla anche in modi differenti. Si potrebbero aprire backdoor nel sistema, creare profili utente con permessi root e sfruttare la vulnerabilità per alterare i dati e il sistema a proprio vantaggio, modificando script o file binari.
Oltre al proof of concept di Kellermann, che puoi visionare nel suo resoconto, anche altri esperti di sicurezza hanno dimostrato come la vulnerabilità Dirty Pipe possa essere usata.
Per esempio è stato dimostrato che si può sovrascrivere il file /etc/passwd in modo che l’utente con permessi root non abbia bisogno di una password. Questo consente a un utente senza privilegi di ottenere i permessi root senza aver bisogno delle credenziali.
Dirty Pipe e Dirty COW, le differenze
A rendere ancora più rischiosa questa vulnerabilità è la facilità con cui può essere sfruttata. Max Kellermann ha infatti paragonato la vulnerabilità Dirty Pipe alla CVE-2016-5195, meglio conosciuta come Dirty COW, specificando che Dirty Pipe è più semplice da sfruttare.
Nel 2016 fu identificata un’altra vulnerabilità del kernel, chiamata Dirty COW. In questo caso veniva sfruttata una falla nel sistema Copy-On-Write del kernel.
Grazie a questa vulnerabilità anche gli utenti senza privilegi potevano sfruttare i permessi di scrittura. Sfruttando questa falla e potendo accedere a locazioni di memoria che altrimenti sarebbero state inaccessibili, gli utenti malintenzionati potevano modificare (“sporcare”) i dati, da cui il nome di “dirty COW”, dove “COW” sta proprio per Copy-On-Write.
La vulnerabilità, che inizialmente è stata sfruttata solo localmente, si è rivelata ben presto utile per essere sfruttata anche a distanza ed è stato così che nel mirino sono entrati i web server. Combinando, infatti, la falla con le vulnerabilità di un server Apache, un utente malintenzionato avrebbe potuto ottenere i permessi root su un server remoto, con una connessione SSH.
Inoltre la vulnerabilità Dirty COW fu sfruttata nei dispositivi Android. Alcuni giorni dopo l’identificazione della vulnerabilità, infatti, è stato individuato un malware (ZNIU) che sfruttando questa vulnerabilità era in grado di ottenere l’accesso root al dispositivo e creare una backdoor.
Dirty Pipe: cosa sapere sulla mitigazione
Trattandosi di una vulnerabilità del kernel che coinvolge le funzioni di sistema, non c’è modo per mitigare il problema. La soluzione quindi consiste nell’aggiornare i sistemi operativi interessati dalla vulnerabilità Dirty Pipe.
TuxCare segnala la disponibilità degli aggiornamenti per le seguenti distribuzioni: RHEL 8, Oracle EL 8, CentOS8, Almalinux 8, Rocky Linux, Ubuntu 20.04, CloudLinux 8 e CloudLinux 7.
Man mano che le patch per KernelCare saranno disponibili verrà aggiornato il post del blog di TuxCare.
Questo per quanto concerne i dispositivi desktop e Android. E, invece, nel caso dei web server?
La vulnerabilità è presente su Kernel 5.8 e successivi. Su SupportHost usiamo una versione differente del kernel, che non è quindi interessata dalla vulnerabilità.
In ogni caso usiamo KernelCare che ci permette di applicare le patch man mano che vengono divulgate.
Se sei nostro cliente sei al sicuro.
Conclusioni
Abbiamo visto che la vulnerabilità Dirty Pipe può essere utilizzata per sovrascrivere i file di sistema e ottenere i privilegi root, in poche parole avere pieno accesso al dispositivo o al server. L’identificazione della vulnerabilità ha consentito il rilascio di aggiornamenti per le diverse distribuzioni Linux, in modo da eliminare la falla.
Come abbiamo visto in conclusione, i server SupportHost non sono coinvolti dalla vulnerabilità, perché la nostra versione del kernel non rientra in quelle interessate.
Lascia un commento