Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!
CVE-2026-52924 — Analisi tecnica di CVE-2026-52924, una vulnerabilità critica use-after-free nella gestione dei cookie obsoleti SCTP del kernel Linux, inclusi causa principale, flusso di attacco, correzione e metodi di rilevamento. | Kitploit
Analisi tecnica di CVE-2026-52924, una vulnerabilità critica use-after-free nella gestione dei cookie obsoleti SCTP del kernel Linux, inclusi causa principale, flusso di attacco, correzione e metodi di rilevamento.
CVE-2026-52924: Use-After-Free SCTP nella Gestione dei Cookie Stale
Riepilogo della Vulnerabilità
ID CVE: CVE-2026-52924 Gravità: CRITICA (CVSS 9.8) Componente: Kernel Linux - SCTP (Stream Control Transmission Protocol) Tipo: Use-After-Free (CWE-416, CWE-825) Pubblicata: 2026-06-24 Stato: Corretta
Versioni Interessate
Kernel Linux < 5.10.259
Kernel Linux < 5.15.210
Kernel Linux < 6.1.176
Kernel Linux < 6.6.143
Kernel Linux < 6.12.94
Kernel Linux < 6.18.36
Kernel Linux < 7.0.13
Kernel Linux < 7.1
Dettagli Tecnici
Causa Principale
La vulnerabilità si verifica nella gestione da parte della macchina a stati SCTP dei pacchetti COOKIE-ECHO stale. Il problema riguarda una pulizia impropria della coda di stream in uscita quando un'associazione viene ripristinata.
Flusso dell'Attacco
Funzionamento Normale: L'associazione passa allo stato COOKIE_ECHOED
Dati Utente in Coda: L'applicazione invia dati, che vengono accodati per la trasmissione
Errore Cookie Stale: Il peer remoto invia un errore Stale Cookie
Rollback Attivato: L'associazione torna da COOKIE_ECHOED → COOKIE_WAIT
Stato Stream Aggiornato:sctp_stream_update() libera la vecchia tabella degli stream, ne installa una nuova
Puntatore Non Valido:stream->out_curr punta ancora alla voce sctp_stream_out liberata
Accesso in Dequeue: Quando lo scheduler tenta di fare dequeue (FCFS, RR, PRIO), accede a out_curr->ext
Use-After-Free: L'accesso alla memoria liberata → crash del kernel tramite rilevamento KASAN
Flusso di Codice Problematico
root@kitploit:~
sctp_sf_do_5_2_6_stale():
├─ Ricezione errore Stale Cookie
├─ Rollback dello stato dell'associazione
└─ Chiamata a sctp_stream_update()
├─ Libera la vecchia tabella degli stream
├─ Installa la nuova tabella degli stream
└─ BUG: stream->out_curr NON invalidato ❌
Successivamente durante il dequeue:
sctp_sched_fcfs_dequeue():
└─ Accesso a stream->out_curr->ext (MEMORIA LIBERATA) 💥
Esempio di Crash
root@kitploit:~
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
Perché Aggiornare Semplicemente out_curr Non È Sufficiente
Una correzione ingenua potrebbe essere semplicemente azzerare stream->out_curr:
Tutti i dati di trasmissione in sospeso vengono eliminati
Tutte le voci della coda di ritrasmissione vengono liberate
I puntatori memorizzati nella cache dello scheduler (out_curr, ecc.) vengono invalidati
Lo stato degli stream può essere ricostruito in sicurezza durante il riavvio COOKIE_WAIT
Nessun riferimento pendente alle voci degli stream liberate
Posizione dell'Implementazione
File:net/sctp/sm_statefuns.c Funzione:sctp_sf_do_5_2_6_stale() Aggiunta: Chiamata a sctp_outq_free(&asoc->outqueue) prima di sctp_stream_update()
root@kitploit:~
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... codice esistente ...
// Svuota la coda di uscita prima di ricostruire lo stato degli stream
sctp_outq_free(&asoc->outqueue);
// Ora è sicuro aggiornare lo stream
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... resto della funzione ...
}
Analisi dell'Impatto
Fattori di Gravità (CVSS 9.8)
Vettore di Attacco: Rete (CVSS:3.1/AV:N)
Complessità dell'Attacco: Bassa (CVSS:3.1/AC:L)
Privilegi Richiesti: Nessuno (CVSS:3.1/PR:N)
Interazione dell'Utente: Nessuna (CVSS:3.1/UI:N)
Scope: Invariato (CVSS:3.1/S:U)
Impatto sulla Riservatezza: Alto (CVSS:3.1/C:H)
Impatto sull'Integrità: Alto (CVSS:3.1/I:H)
Impatto sulla Disponibilità: Alto (CVSS:3.1/A:H)
Requisiti di Sfruttamento
Accesso di rete al sistema target (porta SCTP aperta)
Capacità di inviare pacchetti SCTP per stabilire una connessione
Invio di un errore Stale Cookie in un momento specifico (stato COOKIE_ECHOED)
Attivazione dell'operazione di dequeue dello scheduler
Scenari di Attacco
Denial of Service: Crash ripetuto del kernel → DoS
Divulgazione di Informazioni: Lettura della memoria del kernel tramite UAF
Escalation dei Privilegi: Potenziale attraverso la manipolazione della memoria
Esecuzione di Codice Remota: Possibile con exploit di corruzione della memoria
Metodi di Rilevamento
Rilevamento KASAN (Runtime)
root@kitploit:~
# Abilita KASAN nella configurazione del kernel
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# L'output runtime mostra:
BUG: KASAN: slab-use-after-free
Analisi Statica
root@kitploit:~
# Cerca accessi non sicuri a stream->out_curr senza validazione
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
Rilevamento di Rete
Monitorare i pacchetti di errore SCTP Stale Cookie (Tipo 3, Codice 1)
Tracciare i pattern di rollback delle connessioni
Avvisare su transizioni rapide COOKIE_ECHOED → COOKIE_WAIT
Strategie di Mitigazione
Mitigazioni Temporanee (Fino alla Patch)
Disabilitare SCTP: Rimuovere il modulo SCTP o bloccare le porte SCTP (132, 132 UDP)