
Exploit deterministico di escalation dei privilegi locali del kernel Linux che combina due primitive di scrittura nella cache delle pagine (xfrm/ESP e RxRPC) per un accesso root affidabile su tutte le principali distribuzioni dal 2017.
Escalation locale universale dei privilegi del kernel Linux
| Campo | Dettaglio |
|---|---|
| CVE | CVE-2026-43284 (xfrm/ESP) + CVE-2026-43500 (RxRPC) |
| Nickname | Dirty Frag |
| CVSS | 7.8 HIGH |
| Tipo | Escalation locale di privilegi (LPE) |
| Introdotto | Linux kernel 4.10 (2017, commit cac2661c53f3) |
| Corretto | Commit mainline f4c50a4034e6 / aa54b1d27fe0 |
| Richiede | Accesso a shell locale non privilegiata |
| Vettore remoto | Nessuno — solo locale |
| Divulgato | 7 maggio 2026 da Hyunwoo Kim (@v4bel) |
Un difetto logico nei sottosistemi xfrm/ESP e RxRPC del kernel Linux consente a un utente locale non privilegiato di eseguire una scrittura deterministica e controllata arbitraria nella cache di pagina di qualsiasi file leggibile sul sistema — inclusi i binari setuid come /usr/bin/su.
La causa principale è la decifratura non sicura in-place dei frammenti di buffer di socket condivisi (skb) che fanno riferimento a pagine della cache di pagina, in particolare quando si utilizza splice(2) o sendfile(2). Ciò fornisce una potente primitiva di scrittura arbitraria nella cache di pagina, che può essere sfruttata per sovrascrivere file sensibili in memoria e ottenere accesso root completo.
Due primitive distinte vengono concatenate per ottenere una copertura universale:
xfrm-ESP Page-Cache Write: condivide lo stesso sink di Copy Fail ma viene attivata tramite i moduli esp4/esp6, indipendentemente dalla disponibilità di algif_aead. Richiede privilegi di creazione namespace.RxRPC Page-Cache Write: non richiede privilegi di namespace, ma rxrpc.ko deve essere presente (caricato di default su Ubuntu). Copre i punti ciechi di CVE-2026-43284.Concatenare le due varianti fa sì che si coprano a vicenda i punti ciechi, ottenendo root affidabile su ogni distribuzione principale.
Nessuna race condition. Nessun tentativo. Nessun rischio di crash. Deterministico su tutte le distribuzioni testate.
Importante: Anche su sistemi in cui è applicata la mitigazione pubblica di Copy Fail (blacklist di
algif_aead), Dirty Frag rimane sfruttabile tramite CVE-2026-43284.
algif_aead (workaround di Copy Fail)CVE-2026-43284 (xfrm/ESP): kernel Linux dal commit cac2661c53f3 (2017-01-17) fino a f4c50a4034e6 (2026-05-05).
CVE-2026-43500 (RxRPC): kernel Linux dal commit 2dc334f1a63a (2023-06-08) fino a aa54b1d27fe0 (2026-05-10).
La durata effettiva della catena di vulnerabilità è di circa 9 anni.
Tutte le principali distribuzioni che distribuiscono kernel in questo intervallo sono affette, incluse:
gcc -O0 -Wall -o exp exp.c -lutil && ./exp
Non utilizzare su sistemi per i quali non si è autorizzati al test.
⚠️ Importante: Dopo l'esecuzione di questo exploit, la cache di pagina è contaminata. Per cancellare la cache di pagina inquinata e garantire la stabilità del sistema, esegui:
echo 3 > /proc/sys/vm/drop_caches
o riavvia il sistema.
Aggiorna a un kernel contenente le correzioni mainline e riavvia.
Corretto in mainline tramite:
f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE / openSUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
# Fedora
sudo dnf upgrade --refresh && sudo reboot
Se non è possibile applicare subito la patch, disabilita i moduli vulnerabili e cancella la cache di pagina.
# Blacklist vulnerable modules
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'
# Unload modules immediately
sudo rmmod esp4 esp6 rxrpc 2>/dev/null || true
# Drop page cache
echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Per carichi di lavoro non fidati — container, runner CI, ambienti sandbox — limita la creazione di socket AF_ALG e splice() tramite policy seccomp o AppArmor indipendentemente dallo stato della patch. Questo limita la superficie d'attacco anche su kernel vulnerabili ma non è una correzione completa.
Verifica se i moduli vulnerabili sono attualmente caricati o in uso:
# Check if modules are loaded
lsmod | grep -E 'esp4|esp6|rxrpc'
# Check if any process has an AF_ALG socket open
lsof | grep AF_ALG
ss -xa | grep alg
# Confirm workaround is active after reboot
cat /etc/modprobe.d/dirtyfrag.conf
Perché concatenare due vulnerabilità?
xfrm-ESP Page-Cache Write fornisce una potente primitiva STORE arbitraria a 4 byte ed è presente sulla maggior parte delle distribuzioni, ma richiede privilegi di creazione namespace — che Ubuntu a volte blocca tramite AppArmor. RxRPC Page-Cache Write non richiede privilegi di namespace, ma rxrpc.ko non è incluso nella maggior parte delle distribuzioni — eccetto Ubuntu, dove è caricato di default. Concatenare le due fa sì che i loro punti ciechi si coprano a vicenda, ottenendo root affidabile su ogni distribuzione principale.
Qual è la relazione con Copy Fail (CVE-2026-31431)?
La primitiva xfrm-ESP condivide lo stesso sink di scrittura nella cache di pagina di CVE-2026-31431, ma viene attivata tramite i moduli esp4/esp6 indipendentemente da algif_aead. Applicare la mitigazione di CVE-2026-31431 (blacklist di algif_aead) non protegge da Dirty Frag.
Perché il nome "Dirty Frag"?
La vulnerabilità sporca il membro frag di struct sk_buff, collocandola nella stessa classe di bug di Dirty Pipe — difetti logici che consentono scritture non privilegiate nella cache di pagina.
Questo repository è destinato esclusivamente a scopi educativi e di sicurezza difensiva. Non utilizzare alcuna informazione o codice da questo repository su sistemi di cui non si è proprietari o per i quali non si ha esplicita autorizzazione scritta al test.
Rimani al sicuro. Applica le patch presto. Applica le patch spesso. Happy hacking 🛡️
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Dirty Frag (2026) |
|---|
| Richiede race condition | Sì | Sì | Parziale | No |
| Specifico per versione | Sì | Sì | No | No |
| Affidabilità | Instabile | Moderata | Deterministico | Deterministico |
| Copertura distribuzioni | Limitata | Limitata | Tutte dal 2017 | Tutte dal 2017 |
| Supera mitigazione Copy Fail | — | — | N/D | Sì |
| Distribuzione | Versione testata | Stato |
|---|
| Ubuntu 24.04.4 | 6.17.0-23-generic | Affetto — distribuzione patch in corso |
| RHEL 10.1 | 6.12.0-124.49.1.el10_1.x86_64 | Affetto — distribuzione patch in corso |
| AlmaLinux 10 | 6.12.0-124.52.3.el10_1.x86_64 | Affetto — patch disponibile |
| CentOS Stream 10 | 6.12.0-224.el10.x86_64 | Affetto — distribuzione patch in corso |
| Fedora 44 | 6.19.14-300.fc44.x86_64 | Affetto — patch disponibile |
| openSUSE Tumbleweed | 7.0.2-1-default | Affetto — in corso |
| Debian | — | Affetto — in corso |
| Componente | Impatto |
|---|
| SSH | ✅ Non influenzato |
| dm-crypt / LUKS | ✅ Non influenzato |
| kTLS / TLS in-kernel | ✅ Non influenzato |
| OpenSSL / GnuTLS / NSS (build predefinite) | ✅ Non influenzato |
| IPsec / XFRM (tunnel ESP, VPN) | ⚠️ Si rompe — esp4 e esp6 non saranno disponibili |
| Client AFS / OpenAFS che usano RxRPC | ⚠️ Si rompe — rxrpc non sarà disponibile |
Applicazioni che usano AF_ALG + AEAD direttamente | ⚠️ Controlla con lsof | grep AF_ALG |
| Risorsa | Link |
|---|
| Correzione mainline CVE-2026-43284 | f4c50a4034e6 |
| Correzione mainline CVE-2026-43500 | aa54b1d27fe0 |
| NVD — CVE-2026-43284 | https://nvd.nist.gov/vuln/detail/CVE-2026-43284 |
| NVD — CVE-2026-43500 | https://nvd.nist.gov/vuln/detail/CVE-2026-43500 |
| Data | Evento |
|---|
| 2017-01-17 | Regressione CVE-2026-43284 introdotta (cac2661c53f3) |
| 2023-06-08 | Regressione CVE-2026-43500 introdotta (2dc334f1a63a) |
| 2026-05-05 | CVE-2026-43284 corretta in mainline (f4c50a4034e6) |
| 2026-05-07 | Divulgazione pubblica |
| 2026-05-10 | CVE-2026-43500 corretta in mainline (aa54b1d27fe0) |
| 2026-05-10+ | Le patch delle distribuzioni iniziano a essere distribuite |