
# Exploit per CVE-2026-31431, una vulnerabilità authencesn del kernel Linux che consente l'escalation locale dei privilegi a root e la fuga dal container tramite AF_ALG e splice().
Nel 2017, il modulo di crittografia del kernel Linux authencesn ha introdotto un'ottimizzazione in-place per le operazioni AEAD (crittografia autenticata), che in determinate condizioni consente di inserire erroneamente pagine di sola lettura della cache delle pagine (page cache) in una lista di dispersione (scatterlist) di destinazione scrivibile. Un attaccante, tramite l'API di crittografia del kernel esposta tramite i socket AF_ALG, combinata con la chiamata di sistema splice(), sfrutta questo difetto logico per ottenere una scrittura arbitraria di 4 byte nella cache delle pagine di binari setuid (come /usr/bin/su), alterando così la logica del programma e ottenendo una shell root.
L'intero processo di sfruttamento è una logica lineare, senza necessità di finestre di competizione (race window), senza offset specifici del kernel e senza strumenti speciali preinstallati.
Escalation locale a root: qualsiasi account utente locale non privilegiato può ottenere root incondizionatamente.
Evasione dal container: in ambienti Kubernetes/container, la cache delle pagine è condivisa con l'host; un attaccante all'interno del container può superare i confini del container, compromettendo il nodo host e altri tenant sullo stesso nodo.
Compromissione di ambienti CI/CD: ambienti CI come GitHub Actions, GitLab Runner, Jenkins Agent che eseguono codice non attendibile possono essere compromessi; un attaccante può ottenere i privilegi root dell'host del Runner tramite una PR dannosa.
Ambienti cloud multi-tenant: servizi cloud che eseguono codice utente come Notebook, Serverless, sandbox Agent, consentono a un tenant di elevare i privilegi a root dell'host.
Vulnerabilità persistente da quasi un decennio: il codice problematico è stato introdotto nel 2017 e da allora tutte le distribuzioni Linux sono state interessate.
Tutte le versioni del kernel Linux costruite dal 2017 fino al rilascio della patch, incluse:
Aggiornare a una versione del kernel che includa il commit mainline a664bf3d603d; le principali distribuzioni stanno rilasciando versioni corrette:
# Ubuntu / Debian
apt update && apt upgrade linux-image-$(uname -r)
# RHEL / CentOS / Rocky / Alma
dnf update kernel
# Amazon Linux
yum update kernel
# SUSE
zypper update kernel-default
Dopo l'aggiornamento, riavviare il sistema per applicare il nuovo kernel e verificare che includa il commit di correzione con il seguente comando:
grep -r "a664bf3d603d" /proc/version 2>/dev/null || uname -r
# Verifica se il commit di correzione è incluso o confronta con il numero di versione corretto nell'annuncio ufficiale della distribuzione
Disabilitare il modulo del kernel algif_aead per bloccare il percorso di sfruttamento:
# Disabilitazione permanente (efficace dopo il riavvio)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
# Rimozione immediata (efficace per la sessione corrente)
rmmod algif_aead 2>/dev/null || true
Valutazione dell'impatto della disabilitazione di algif_aead:
Nessun impatto: dm-crypt/LUKS, kTLS, IPsec/XFRM, build predefinite di OpenSSL/GnuTLS/NSS, SSH, crittografia del keyring del kernel — questi componenti utilizzano direttamente l'API di crittografia del kernel, senza passare da AF_ALG.
Possibile impatto: OpenSSL con motore afalg esplicitamente abilitato, alcuni percorsi di offload crittografico embedded, applicazioni che si legano direttamente ai socket aead/skcipher/hash. È possibile verificare se il sistema ha processi che utilizzano AF_ALG con lsof | grep AF_ALG o ss -xa.
| Distribuzione | Versioni del kernel interessate |
| Ubuntu 24.04 LTS | 6.17.0-1007-aws e precedenti |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 e precedenti |
| RHEL 14.3 | 6.12.0-124.45.1.el10_1 e precedenti |
| SUSE 16 | 6.12.0-160000.9-default e precedenti |
| Debian / Arch / Fedora / Rocky / Alma / Oracle | Tutte le versioni del kernel dello stesso periodo sono interessate |