I computer Linux sono appena scampati a un potenziale pericolo che ne avrebbe compromesso la sicurezza, ma questa non è la solita storia di una vulnerabilità corretta (sapete come installare Linux su Windows?).
No, questa volta è implicato un hacker che si è finto volontario per 2 anni per mantenere un componente del sistema operativo, e un volontario vero che ha scoperto casualmente il problema. Scopriamo come e cosa avrebbe comportato, ma soprattutto i rischi di un sistema estremamente vulnerabile, che non investe nel lavoro su cui si basano i server dei giganti del Web.
Cos'è successo
L'attacco
Il 29 marzo si è scoperto un attacco al sistema Linux che ha iniettato un codice malevolo nel pacchetto XZ. Questo codice modifica le funzioni all'interno di liblzma, che è una libreria di compressione dati che fa parte del pacchetto XZ Utils ed è una parte fondamentale di diverse principali distribuzioni Linux.
Il pacchett XZ Utils è un piccolo progetto open source mantenuto gratuitamente da uno sviluppatore almeno dal 2009, ma è enormemente importante.
Iniettando questo codice malevolo l'hacker ha aperto una backdoor che avrebbe potuto essere utilizzata da qualsiasi software collegato alla libreria XZ e consentire l'intercettazione e la modifica dei dati utilizzati con la libreria. In determinate condizioni questa backdoor potrebbe consentire a un attore malintenzionato di interrompere l'autenticazione sshd, consentendo a un agente attaccante di accedere al sistema interessato.
Stiamo parlando potenzialmente di tutti i computer e server che eseguono Linux nel mondo.
Microsoft ha avvisato della vulnerabilità nelle distribuzioni Linux coinvolte, che includono le versioni del pacchetto XZ Utils 5.6.0 e 5.6.1, e il Python Package Index (PuPI) ha ristretto la creazione di nuovi account e l'invio di pacchetti al suo portale.
Il massimo livello di gravità
Contrassegnato come CVE-2024-3094, l'exploit ha ricevuto un punteggio di vulnerabilità (CVSS) di 10,0, che è la massima valutazione di minaccia possibile offerta dal National Institute of Standards and Technology (NIST).
Per dare un'idea della gravità, come scrive Ben Thompson in Stratechery: "la maggior parte dei computer del mondo sarebbe vulnerabile e nessuno lo saprebbe".
E ancora, Will Dormann, un analista senior di vulnerabilità presso la società di sicurezza Analygence, ha detto ad Ars Technica: "Se non fosse stato scoperto, sarebbe stato catastrofico per il mondo".
L'incredibile storia della vulnerabilità: come è stata scoperta
La scoperta di questa vulnerabilità dà il senso di quanto sia fragile il mondo di Linux. Il 29 marzo Andres Freund, uno sviluppatore di Microsoft che lavora anche come volontario per PostgreSQL, sta facendo un po' di micro-benchmarking di routine quando nota un piccolo ritardo di 600ms con i processi ssh. Questi stanno usando una quantità sorprendente di CPU anche se falliscono immediatamente.
Si insospettisce subito e si ricorda che alcune settimane prima aveva notato una "strana lamentela" da parte di un utente di Postgres su Valgrind, il programma di Linux che controlla l'errore di memoria.
Dopo aver indagato, Freund alla fine scopre il problema e pubblica la sua scoperta sulla Open Source Security Mailing List con il titolo "È stata aperta una backdoor nel repository xz e nel tarball xz".
Freund poi pubblica un post su Mastodon, in cui rivela come la scoperta sia stata assolutamente casuale: "Ha davvero richiesto un sacco di coincidenze".
Un attacco progettato da due anni, e potrebbe non essere finita
La comunità poi ha cercato di capire cosa fosse successo e si è scoperto che il responsabile era uno sviluppatore che aveva preso in mano il progetto XZ.
Come abbiamo visto, XZ è mantenuto da un singolo sviluppatore, Lasse Collin. Nel 2021 JiaT75, Jia Tan, inizia a mandare contributi al progetto e successivamente due sviluppatori, probabilmente fittizi, Kumar e Ens, iniziano a lamentarsi degli scarsi progressi nello sviluppo.
Collins si scusa affermando di avere problemi di salute mentale e, dietro insistenza di Kumar e Ens, affida a JiaT75 prima un ruolo maggiore e nel 2022 il mantenimento del progetto.
Per due anni Jia Tan lavora al pacchetto XZ, poi inietta il codice malevolo per aprire la backdoor. Ma visto l'impegno e le risorse coinvolte, diversi sul Web stanno speculando che l'autore del codice dannoso sia un attaccante sofisticato, possibilmente affiliato a un'agenzia statale.
La situazione è ancora in via di sviluppo e potrebbero essere scoperte altre vulnerabilità.
Il problema dei mantenitori
L'incidente e le sue possibili conseguenze sono un esempio sia della bellezza dell'open source che della sua vulnerabilità. In pratica, moltissimi sistemi su cui si basano i server di organizzazioni multimiliardarie sono mantenuti gratuitamente da volontari.
Uno sviluppatore dietro FFmpeg, un popolare pacchetto multimediale open-source, ha evidenziato il problema su X, dicendo come avesse chiesto a Microsoft supporto per mantenere il progetto, ma gli sono state offerte poche migliaia di dollari.
Questi investimenti non sono considerati allettanti, anche se probabilmente si ripagherebbero migliaia di volte nel tempo. I dettagli di questo attacco sono stati scoperti senza il sostegno finanziario diretto di molte delle aziende e organizzazioni che traggono vantaggio da queste librerie.
Il mio computer è compromesso?
Quali distribuzioni sono affette? Diciamo subito che le versioni stabili di Debian Linux (come Ubuntu) sono sicure, ma le versioni di test, instabili e sperimentali richiedono aggiornamenti xz-utils a causa di pacchetti compromessi.
Red Hat ha identificato i pacchetti vulnerabili in Fedora 41 e Fedora Rawhide, ma non in Red Hat Enterprise Linux (RHEL), e ha consigliato di non utilizzarli fino a quando non sarà disponibile un aggiornamento.
SUSE ha rilasciato aggiornamenti per openSUSE (Tumbleweed o MicroOS). Gli utenti di Kali Linux che hanno aggiornato il sistema tra il 26 marzo e il 29 marzo devono aggiornare di nuovo per una correzione, mentre quelli che hanno aggiornato prima del 26 marzo non sono influenzati da questa vulnerabilità.
Ricordiamo che il pacchetto a rischio è XZ Utils, versione 5.6.0 e 5.6.1, ma come sapere se il nostro computer ne è affetto? Semplice, potete scoprire la versione di XZ Utils eseguendo in SSH il comando:
xz --version
Vista la complessità del sistema messo in atto, sembra che questa minaccia però non sia specificamente rivolta verso gli utenti, quanto alle aziende o organizzazioni. La Cybersecurity and Infrastructure Security Agency (CISA) ha raccomandato alle organizzazioni di eseguire il downgrade alle versioni precedenti di XZ Utils.