Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Falla XZ: tutto quello che sappiamo

Si chiama Andrés Freund: è un ingegnere informatico di 38 anni che vive a San Francisco e lavora, al momento in cui scriviamo, alla Microsoft. Si occupa solitamente di database, nello specifico realizzati PostgreSQL, e solo occasionalmente opera su terminale di comando Linux (SSH).

Quel nome potrebbe non dire granchè a molti di noi, eppure meriterebbe di essere citato – se non di passare alla storia dell’informatica, per via di una singolare scoperta fatta qualche giorno fa. Durante il proprio lavoro, infatti, ha inavvertitamente trovato una backdoor nascosta in un software, xz, che fa parte del sistema operativo Linux. La backdoor se non fosse stata scoperta, sarebbe stata un potenziale preludio a un grave attacco informatico che, secondo gli esperti, avrebbe potuto causare seri danni alle infrastrutture informatiche a livello mondiale.

Lavora su un’installazione Debian, una versione di Linux molto sfruttata anche sui server di hosting e sui sistemi in cloud. Si accorge di una latenza sospetta, di 500 ms, subito dopo aver installato un update (un aggiornamento del sistema operativo).

Vedi anche: infografica di ArsTechnica

Come è avvenuto l’attacco

XZ utils è un kit di librerie open source che si occupano di compressione di file: un algoritmo dall’uso sostanzialmente innocuo, che non riguarda nulla di malevolo di per sè e che usiamo tutti, ad esempio, nel momento in cui si deve spedire un file di testo molto grande e la banda su internet non è abbastanza, comprimere permette a tutti di risparmiare tempo. La falla della backdoor xz risale alla versione di xz/liblzma nelle versioni 5.6.0 e 5.6.1, ed è stata dovuta ad un attacco informatico che è stato orchestrato addirittura due anni prima della scoperta.

Andiamo per ordine: gitHub (come abbiamo spiegato varie volte) è un repository o “deposito” di software open source sul quale, mediante opportune policy, gli sviluppatori possono caricare le versioni dei software, proporre modifiche, segnalare bug e, se lo desiderano, caricare codice con la propria versione di una qualche correzione. Il tutto ovviamente è possibile soltanto rispettando le regole sia del sito stesso che, soprattutto, quelle del maintainer del progetto.

Chi è un maintainer di un progetto open source

Digressione necessaria: un maintainer (in italiano mantenitore) di software open source è una persona o un gruppo di persone responsabili della gestione e dello sviluppo continuo di un progetto di software open source. Il maintainer svolge un ruolo fondamentale nel coordinare gli sforzi di sviluppo, nel mantenere la qualità del codice, nell’approvare le nuove funzionalità qualora vengano proposte e nel risolvere i problemi segnalati dagli utenti. Le responsabilità di un maintainer, per intenderci, possono includere Revisionare e valutare i contributi inviati dalla comunità per assicurare che rispettino gli standard del progetto e che siano compatibili con gli obiettivi generali, Pianificare e gestire i rilasci di nuove versioni del software, inclusi il controllo di qualità e la preparazione della documentazione, Monitorare e risolvere i problemi segnalati dagli utenti, fornendo supporto e risposte a domande tecniche, gestire la comunicazione della community, sviluppare o proporre funzionalità, risolvere eventuali conflitti e via dicendo. I maintainer sono spesso individui che (in genere) hanno dimostrato una forte competenza nel progetto e un impegno a lungo termine per il suo sviluppo, e – in molti casi – lavorano sia individualmente nella propria stanzetta che all’interno di gruppi di lavoro aziendali (spesso senza essere nemmeno pagati).

L’analisi della backdoor è complessa da riassumere, e la dobbiamo in gran parte all’infografica di Thomas Roccia, che l’ha pubblicata poi su vari siti specializzati. xz è un software open source presente su GitHub: nel 2021 un utente ignoto crea il proprio account e dopo circa due mesi dall’apertura dello stesso propone una commit, un primo contributo, del proprio codice del software. Questa modifica sembra agire sull’inserimento di ifunc, che si rivelerà la chiave di volta della backdoor futura: per capire a cosa serve immaginiamo di avere il codice di una funzione in una libreria condivisa che si vuole sostituire con una funzione differente, e questo soltanto a determinate condizioni “ambientali”. Un po’ come se avessi una funzione che cerca in una rubrica telefonica e che, a seconda che il sistema operativo sia Android o iOS, effettua la ricerca sfruttando due scenari diversi.

ifunc rende in genere il programma più flessibile e adattabile, consentendo di sostituire in modo dinamico una funzione con un’altra in base a ciò che è meglio per l’ambiente in cui viene eseguito il programma. È utile soprattutto per ottimizzare le prestazioni del programma o per gestire comportamenti diversi su piattaforme diverse, senza dover riscrivere il codice sorgente ogni volta che si desidera apportare una modifica. Nello storico di GitHub l’utente aggiunge qualche tempo dopo sia un file .m4 (macro-processore UNIX piuttosto desueto come formato), e maschera altri due file malevoli mascherandoli da file di test (in genere comuni sui progetti open source). È proprio il file m4 ad essere sospetto, e a contenere il codice malevolo che viene ulteriormente occultato all’interno del codice aperto sfruttando tecniche di crittografia.

xz backdoor graphic thomas roccia scaled 1
Fonte: ArsTechnica/Thomas Roccia

Difficile, forse impossibile accorgersi del problema analizzando il codice e senza sapere di doverlo analizzare: ma grazie a quel piccolo “lag” sospetto di 500 ms ce ne siamo accorti, ed è andata bene così. Diversamente, il malware avrebbe circolato indisturbato su molti sistemi, tanto più che questa scoperta è avvenuta giusto in tempo, poco prima che le modifiche al sistema operativo (con annesso xz utils) diventassero definitive nelle versioni stable.

È stato pertanto individuato codice malevolo all’interno del software xz, utile per la gestione dei tarball (file compressi), a partire dalla versione 5.6.0. Attraverso una serie di complessi processi di oscuramento del codice, durante la compilazione della libreria liblzma, tecnicamente viene estratto un file oggetto precompilato da un file di test “mascherato” presente nel codice sorgente. Questo file oggetto viene poi utilizzato per modificare arbitrariamente specifiche funzioni all’interno della libreria liblzma stessa. Il risultato è una libreria liblzma modificata che può essere sfruttata da qualsiasi software collegato ad essa, con la capacità di intercettare e manipolare l’interazione dei dati con la libreria stessa, e la possibilità di poter eseguire qualsiasi comando su qualsiasi macchina si trovi installato.

Cos’è xz

XZ utils, nota anche con il nome LZMA Utils, è un kit di software open source per la compressione dei dati da linea di comando, che include comandi come

lzma

e con il nome più comune di

xz

diffusa su sistemi Linux, Unix e da qualche tempo, anche per Windows. Sfrutta l’algoritmo di Lempel-Ziv-Markov per la compressione dei dati ed è disponibile in vari porting su numerosi sistemi operativi.

Altri dettagli sulla falla (backdoor xz)

La falla è stata resa pubblica da qualche ora e riguarda la versione 5.6.x di XZ (5.6.1 e 5.6.0): si tratta di una backdoor, nello specifico, ovvero di una “porta d’ingresso secondaria” che permette ai programmatori di accedere alle funzioni di basso livello o a quelle root, e che può permette ad un utente arbitrario di accedere al massimo livello di permessi di sistemi. Classificata come falla di sicurezza informatica di livello 10, ovvero allerta massima, mentre il tutto si traduce in una libreria liblzma modificata che può essere utilizzata da qualsiasi software collegato a questa libreria, intercettando e modificando l’interazione dei dati con questa libreria.

La falla è stata dettagliata e classificata nel CVE-2024-3094.

Impatto / Cosa fare

Non ci sono evidenze di uso malevolo all’interno di alcun sistema, ad oggi.

Tuttavia i ricercatori informatici che hanno scoperto il problema indicano che i pacchetti alterabili sono presenti esclusivamente nelle versioni Linux in Fedora 41 e Fedora Rawhide, mentre non dovrebbero avere alcun impatto su Red Hat Enterprise Linux (RHEL), Debian Stable, Amazon Linux e SUSE Linux Enterprise e Leap. Per ulteriore cautela, agli utenti di Fedora Linux 40 è stato consigliato di effettuare il downgrade alla versione 5.4.

Sembra che la backdoor venga collegata al daemon che gestisce SSH sulla macchina attaccata, consentendo a un utente malintenzionato di eseguire codice arbitrario su qualsiasi macchina. Ciò significa che qualsiasi macchina con il pacchetto vulnerabile che espone SSH a Internet sarebbe stato potenzialmente vulnerabile. Questa backdoor è considerata uno dei più significativi strumenti di intrusione mai visti, al pari (se non peggio) della falla SolarWinds. Gli aggressori sono in questo caso riusciti quasi a ottenere l’accesso immediato a qualsiasi macchina Linux con una distribuzione infetta, tra cui Fedora, Ubuntu e Debian.

C’è solo una persona che ha impedito che ciò accadesse: Andres Freund.

Distribuzioni Linux interessate

Di seguito sono riportate alcune delle altre distribuzioni Linux interessate dall’attacco:

distro Kali Linux (aggiornate tra il 26 e il 29 marzo)
distro openSUSE Tumbleweed e openSUSE MicroOS (aggiornate tra il 7 e il 28 marzo)
distro Debian versione testing, unstable e sperimentale (da 5.5.1alpha-0.1 a 5.6.1-1)

In generale si suggerisce il downgrade all’ultima versione sicura ad oggi 30 marzo, ovvero la XZ Utils 5.4.6 Stable.

La pagina dedicata al bug su Github è stata disabilitata da Microsoft per violazione delle condizioni d’uso. Se questa backdoor non fosse stata rilevata da un ingegnere un po’ più curioso della media, per quanto tempo sarebbe rimasta attiva? E forse, ancora peggio: se questo fosse già successo in passato? (fonte)

Suggerisco per approfondimento tecnico il video di Matteo Flora e Stefano Zanero.

👇 Da non perdere 👇



Questo sito web esiste da 4495 giorni (12 anni), e contiene ad oggi 5126 articoli (circa 4.100.800 parole in tutto) e 15 servizi online gratuiti. – Leggi un altro articolo a caso
5/5 (1)

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo - Pagare online (il blog) - Trovalost.it