
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.
| 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ì |
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:
| 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 |
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
| 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 |
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
| 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 |