Case study tecnico del backdoor di XZ Utils (CVE-2024-3094), che copre l'abuso della fiducia nella supply chain, artefatti di rilascio malevoli, iniezione in fase di build, abuso delle dipendenze di sshd, detection engineering e lezioni di Red Team.
CASE-002 ricostruisce la backdoor di XZ Utils / liblzma divulgata il 29 marzo 2024 come CVE-2024-3094.
Il report segue l'operazione dalla fiducia a lungo termine nel maintainer e dall'autorità di rilascio, passando per la discrepanza tra il codice sorgente Git revisionato e i tarball di rilascio distribuiti, fino all'estrazione del payload in fase di build, alla modifica di liblzma, al percorso di dipendenza transitiva verso sshd, all'abuso di GNU IFUNC / dynamic linker e al trigger di pre-autenticazione riservato all'operatore.
L'attenzione non è semplicemente su cosa faceva la backdoor, ma su come molteplici relazioni di fiducia legittime siano state convertite in un percorso di esecuzione.
Lezione fondamentale: la revisione del codice sorgente non è la verifica del rilascio, e un artefatto upstream firmato è affidabile solo quanto la persona e il processo di build che lo hanno prodotto.
Verifica di integrità: report/SHA256SUMS.txt
Fiducia nel contributor
↓
Maintainer / autorità di rilascio
↓
Artefatti di test opachi
↓
Logica di build specifica del tarball
↓
Estrazione di oggetti malevoli in fase di build
↓
Payload collegato a liblzma
↓
Build del pacchetto della distro considerato affidabile
↓
Caricamento transitivo in sshd
↓
IFUNC / redirezione dei simboli a tempo di caricamento
↓
Trigger SSH crittografico riservato all'operatore
↓
Bypass di pre-autenticazione / capacità di comando
| Risultato | Perché è importante |
|---|---|
| La fiducia nel maintainer faceva parte della catena di exploit | L'attaccante ha operato dall'interno di un ruolo legittimo del progetto, invece di limitarsi a rubare un account di pacchetto nella fase finale. |
| Il codice sorgente Git e i tarball di rilascio non erano equivalenti dal punto di vista della sicurezza | La logica di build generata solo nel rilascio ha introdotto un percorso che la normale revisione Git non esponeva. |
| Dati di test opachi sono diventati input eseguibili di build | Fixture .xz / .lzma appositamente costruite contenevano stadi nascosti che venivano recuperati durante la compilazione. |
| Il payload si basava su un percorso di dipendenza transitiva | OpenSSH stesso non era backdorato; liblzma raggiungeva build selezionate di sshd indirettamente tramite l'integrazione systemd specifica della distribuzione. |
| L'attivazione a runtime era deliberatamente ristretta | Gate relativi a piattaforma, build, processo, ambiente e crittografia riducevano l'esposizione accidentale e l'analisi. |
| La scoperta è nata dall'indagine su anomalie | Irregolarità di CPU, latenza e Valgrind hanno esposto un compromesso della supply chain che i segnali di fiducia statici avevano accettato. |
sshd → libsystemd → liblzmaQuesto caso di studio va intenzionalmente oltre il riepilogo dell'incidente.
Il report mappa sei conversioni di fiducia:
contributor → maintainer → artefatto di rilascio → pacchetto della distro → libreria a runtime → percorso di controllo SSH
In ogni punto di conversione identifica la leva dell'attaccante e un punto di strozzatura difensivo.
L'analisi trasforma l'incidente in ipotesi verificabili riguardo a:
La sezione di emulazione si concentra sul test sicuro dei percorsi di fiducia, come discrepanze benigne tra tarball e sorgente e validazione dei percorsi di dipendenza, senza richiedere una backdoor funzionante di autenticazione SSH.
Il PDF è generato da HTML/CSS versionato tramite .github/workflows/publish-report.yml.
Il workflow renderizza separatamente il corpo e la copertina dedicata, li unisce, calcola lo SHA-256, esegue il commit del PDF generato e pubblica l'asset della release. Questo mantiene la pubblicazione stessa allineata alla lezione centrale del caso: il percorso dal sorgente all'artefatto dovrebbe essere osservabile e riproducibile.
Le prove primarie hanno priorità rispetto ai commenti retrospettivi. Il report separa comportamento tecnico confermato, registri del progetto, esposizione delle distribuzioni, reverse engineering successivo e conclusioni analitiche.
.
├── .github/workflows/
│ └── publish-report.yml
├── assets/
│ └── cover-mobile-safe.svg
├── docs/
│ ├── METHODOLOGY.md
│ └── REFERENCES.md
├── report/
│ ├── cover.html
│ ├── source.html
│ ├── XZ_Utils_Backdoor_Case_Study_Michel-DV.pdf
│ └── SHA256SUMS.txt
├── CHANGELOG.md
├── CITATION.cff
├── DISCLAIMER.md
├── RELEASE_NOTES.md
├── LICENSE
└── README.md
Se questo caso di studio è utile in ricerca, formazione, corsi o documentazione interna, cita il repository o usa CITATION.cff.
Autore: @Michel-DV
Serie: Michel-DV Threat Case Studies — CASE-002
Release: v1.0.0
Anno: 2026
© 2026 Michel-DV.
Questa pubblicazione è concessa in licenza sotto Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).
Questo è uno studio tecnico indipendente basato su informazioni pubblicamente disponibili. Non è affiliato né approvato dal Tukaani Project, Red Hat, Debian, OpenSSF, OpenSSH, systemd, Kaspersky o altre organizzazioni citate.
L'incidente XZ non è stata una singola patch malevola. È stata una catena di passaggi di consegne fidati che nessun controllo ha verificato in modo indipendente.