
Proof-of-concept exploit per CVE-2026-31431 (Copy Fail), una LPE del kernel Linux tramite corruzione della page-cache in algif_aead, con guida a rilevamento, laboratorio e mitigazione.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead⚠️ SOLO PER USO AUTORIZZATO — Questo repository è strettamente per penetration tester, ricercatori di sicurezza e difensori che operano sotto autorizzazione legale. L'abuso costituisce reato penale.
| # | Sezione | Descrizione |
|---|---|---|
| 1 | Cos'è Copy Fail? | Riepilogo della vulnerabilità |
| 2 | Approfondimento tecnico | Analisi della causa principale |
| 3 | Sistemi affetti | Matrice distribuzioni e kernel |
| 4 | Struttura del repository | Layout dei file |
| 5 | Configurazione del laboratorio | Riproduci in sicurezza |
| 6 | Utilizzo dell'exploit | Flusso di lavoro per il pentest |
| 7 | Rilevamento | YARA, Sigma, script |
| 8 | Mitigazione | Patch e hardening |
| 9 | Report di pentest | Template per report |
| 10 | Legale ed etica | Disclaimer |
| 11 | Riferimenti | CVE, advisory, blog |
Copy Fail è una vulnerabilità di scalata di privilegi locale (LPE) divulgata il 29 aprile 2026, che colpisce praticamente tutte le principali distribuzioni Linux con kernel dalla 2017 in poi.
Utente con privilegi ridotti ──► AF_ALG + splice() ──► Scrittura di 4 byte nella cache di pagine ──► ROOT
| Proprietà | Dettaglio |
|---|---|
| CVE ID | CVE-2026-31431 |
| Soprannome | Copy Fail |
| CVSS v3.1 | 7.8 (ALTO) |
| Vettore di attacco | Locale |
| Privilegi richiesti | Bassi (qualsiasi utente senza privilegi) |
| Interazione utente | Nessuna |
| Scopritore | Xint Code (Theori) |
| Divulgato | 29 aprile 2026 |
| Dimensione exploit | 732 byte (PoC Python) |
| Stato patch | ✅ Disponibile — revert commit a664bf3d603d |
La vulnerabilità deriva da un'ottimizzazione in-place difettosa introdotta nel 2017 (commit 72548b093ee3) all'interno del modulo algif_aead dell'API crittografica userspace del kernel Linux (AF_ALG).
AF_ALG (API crittografica userspace)
└── modulo algif_aead
└── template authencesn ◄── VULNERABILE
└── ottimizzazione in-place (2017)
└── req->src == req->dst ◄── pagine da splice() concatenate in scatterlist dst scrivibile
Passo 1: Aprire un socket AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
Passo 2: Inviare pagine splice() che referenziano il file target
(pagine cache di pagine di un binario con privilegi, es. /usr/bin/sudo)
Passo 3: Attivare la scrittura scratch su authencesn
authencesn usa il buffer dst come area scratch →
scrive 4 byte controllati OLTRE la regione di output legittima
Passo 4: La voce nella cache di pagine per il file target è ora corrotta
(file su disco intatto — solo la copia in memoria è modificata)
Passo 5: Eseguire il binario modificato → ROOT
La cache di pagine del kernel Linux mantiene copie in memoria dei file. Quando un file viene letto, le sue pagine vengono memorizzate nella cache. La syscall splice() può referenziare direttamente queste pagine in cache. Alimentando le pagine della cache di pagine nello scatterlist AEAD di AF_ALG, la scrittura scratch di authencesn finisce all'interno di quelle pagine in cache, modificando di fatto la copia in memoria di qualsiasi file leggibile — inclusi binari con privilegi come sudo, pkexec o passwd.
La correzione upstream ripristina la difettosa ottimizzazione del 2017:
# Corretto nel commit: a664bf3d603d
git show a664bf3d603d
| Ramo kernel | Affetto? | Versione corretta |
|---|---|---|
| 4.9.x (LTS) | ✅ Sì | 4.9.340+ |
| 5.4.x (LTS) | ✅ Sì | 5.4.295+ |
| 5.10.x (LTS) | ✅ Sì | 5.10.239+ |
| 5.15.x (LTS) | ✅ Sì | 5.15.185+ |
| 6.1.x (LTS) | ✅ Sì | 6.1.132+ |
| 6.6.x (LTS) | ✅ Sì | 6.6.83+ |
| 6.12.x (LTS) | ✅ Sì | 6.12.19+ |
| < 4.9 (pre-2017) | ❌ No | N/D — ottimizzazione non presente |
| Distribuzione | Versioni affette | Patchato? | Avviso |
|---|---|---|---|
| Ubuntu | < 26.04 (tutte le release) | ✅ Patchato | USN |
| Ubuntu 26.04 (Resolute) | ❌ Non affetto | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ Patchato | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ Patchato | ALAS |
| SUSE / openSUSE | Tutti affetti | ✅ Patchato | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ Patchato | DSA |
| CloudLinux | 8, 9 | ✅ Patchato | Advisory |