
Documentazione e analisi di una vulnerabilità di escalation dei privilegi locali nel template authencesn del kernel Linux tramite AF_ALG e splice(), incluse le versioni interessate, il rilevamento e le mitigazioni.
Escalatazione dei privilegi locale nel template crittografico
authencesndel kernel Linux tramiteAF_ALG+splice().
Divulgato il 29 aprile 2026 da Theori (Xint Code).
| Campo | Dettaglio |
|---|---|
| CVE | CVE-2026-31431 |
| Soprannome | Copy Fail |
| CVSS | 7.8 ALTO |
| Tipo | Escalatazione dei privilegi locale (LPE) |
| Introdotto | Kernel Linux 4.14 (2017, commit 72548b093ee3) |
| Corretto | Commit mainline a664bf3d603d |
| Richiede | Accesso shell locale non privilegiato |
| Vettore remoto | Nessuno — solo locale |
Un difetto logico nel wrapper AEAD authencesn del kernel consente a un utente locale non privilegiato di eseguire una scrittura deterministica e controllata di 4 byte nella page cache di qualsiasi file leggibile sul sistema — inclusi i binari setuid come /usr/bin/su.
La causa principale è un'ottimizzazione del 2017 per l'elaborazione in-place che inseriva le pagine della page cache in uno scatterlist scrivibile. L'algoritmo authencesn scrive 4 byte di dati scratch al di fuori della regione di output prevista durante il riarrangiamento dell'Extended Sequence Number. A causa della struttura dello scatterlist introdotta dall'ottimizzazione, quei 4 byte finiscono nella page cache di un file fornito tramite splice() — bypassando completamente i permessi dei file.
Nessuna race condition. Nessun tentativo. Nessun rischio di crash. Deterministico su tutte le distribuzioni testate.
Vulnerabili: kernel Linux 4.14 fino a 6.18.21 e 6.19.x prima di 6.19.12.
Tutte le principali distribuzioni che forniscono kernel in questo intervallo sono interessate, tra cui:
| Distribuzione | Versione testata |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
Non interessate: Ubuntu 26.04 (Resolute) e successive.
Aggiornare a un kernel contenente il commit mainline a664bf3d603d, che ripristina l'ottimizzazione in-place del 2017.
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / Amazon Linux
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
algif_aead (temporaneo)Se non è possibile applicare subito la patch, disabilitare il modulo vulnerabile per chiudere la superficie di attacco.
Nota per i sistemi RHEL-family:
algif_aeadè compilato nel kernel su RHEL/AlmaLinux/CentOS (CONFIG_CRYPTO_USER_API_AEAD=y). Il workaroundmodprobe.dnon funziona su questi sistemi. Usare invece il metodoinitcall_blacklist.
Debian/Ubuntu (modulo caricabile):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true
RHEL-family (integrato nel kernel — richiede riavvio):
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
sudo reboot
Verificare dopo il riavvio:
grep initcall_blacklist /proc/cmdline
Per carichi di lavoro non fidati — container, runner CI, ambienti sandbox — bloccare la creazione di socket AF_ALG tramite policy seccomp indipendentemente dallo stato della patch. Questo limita la superficie di attacco anche su kernel vulnerabili.
Verificare se algif_aead è attualmente caricato o in uso:
# Verificare se il modulo è caricato
lsmod | grep algif_aead
# Verificare se qualche processo ha un socket AF_ALG aperto
lsof | grep AF_ALG
ss -xa | grep alg
Le firme di rilevamento runtime sono disponibili in Sysdig Secure (regola: AF_ALG Page Cache Poisoning Leading to Privilege Escalation).
xD The Watcher — Red Teamer, Ethical Hacker & AI Security Researcher
GitHub: @xd20111
Blog: yourhacker
Questo repository documenta la vulnerabilità a scopo di ricerca e difesa. Per l'analisi tecnica autorevole e il PoC ufficiale, fare riferimento alla divulgazione di Theori collegata sopra.
Se il proprio modello di minaccia include multi-tenancy con kernel condiviso — container su host condiviso, runner CI, farm di build — il confine di isolamento è ora significativamente più debole fino alla patch. L'isolamento a livello hardware o VM è la risposta corretta, non i confini dei namespace.
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) |
|---|
| Richiede race condition | Sì | Parziale | No |
| Specifico per versione | Sì | Sì | No |
| Affidabilità | Instabile | Moderata | Deterministica |
| Copertura distribuzioni | Limitata | Limitata | Tutte dal 2017 |
| Componente | Impatto |
|---|
| dm-crypt / LUKS | ✅ Non interessato |
| SSH | ✅ Non interessato |
| IPsec / XFRM | ✅ Non interessato |
| kTLS / TLS nel kernel | ✅ Non interessato |
| OpenSSL / GnuTLS / NSS (build predefinite) | ✅ Non interessato |
OpenSSL con engine afalg esplicitamente abilitato | ⚠️ Ripiega sulla crittografia in userspace |
Applicazioni che usano direttamente socket AF_ALG aead/skcipher/hash | ⚠️ Si romperanno — verificare con lsof | grep AF_ALG |
| Risorsa | Link |
|---|
| Voce NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-31431 |
| Analisi completa di Theori | https://xint.io/blog/copy-fail-linux-distributions |
| Sito Copy Fail | https://copy.fail |
| Advisory CERT-EU | https://cert.europa.eu/publications/security-advisories/2026-005/ |
| Analisi Sysdig | https://sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds |
| Copertura The Register | https://theregister.com/2026/04/30/linux_cryptographic_code_flaw/ |
| Note di patch AlmaLinux | https://almalinux.org/blog/2026-05-01-cve-2026-31431-copy-fail/ |
| CloudLinux KernelCare | https://blog.cloudlinux.com/cve-2026-31431-copy-fail-kernel-update |
| Data | Evento |
|---|
| 2017 | Regressione introdotta tramite commit 72548b093ee3 |
| Inizio aprile 2026 | Fix upstream integrato (commit a664bf3d603d) |
| 29 aprile 2026 | Divulgazione pubblica da parte di Theori / Xint Code |
| 30 aprile 2026 | Inizio distribuzione delle patch delle distribuzioni |
| 1 maggio 2026 | Kernel patchati AlmaLinux nei repository di produzione |