CVE-2026-98588 in Linuxinformazioni

Riassunto

di VulDB • 19/10/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

bpf, sockmap: Rifiuta max_entries > INT_MAX in sock_map_alloc

sock_map_alloc() rifiuta solo il caso in cui max_entries == 0 e consente altrimenti qualsiasi valore u32. Successivamente, sock_map_free() attraversa l'array sks[] con un iteratore di tipo int firmato:

int i; for (i = 0; i < stab->map.max_entries; i++) struct sock **psk = &stab->sks[i];

Quando viene creato un SOCKMAP con max_entries = 0xffffffff (UINT_MAX), l'allocazione di 32 GiB può avere successo su host con grande quantità di memoria. Durante la fase di liberazione, il contatore raggiunge 0x80000000, va in overflow fino a INT_MIN, viene esteso al segno da movslq e trasformato in un offset negativo di circa 16 GiB rispetto a stab->sks, puntando ben al di sotto dell'allocazione.

L'accesso che causa il fault è una scrittura tramite xchg() in sock_map_free(). Senza KASAN, la stessa scrittura fuori dai limiti può causare un fault su una pagina vmalloc non mappata o corrompere un'altra allocazione se tale indirizzo vmalloc risulta popolato. Su un kernel con KASAN e CONFIG_KASAN_VMALLOC=y, il controllo dell'ombra per quell'indirizzo rileva una pagina shadow non mappata generando prima un oops:

BUG: unable to handle page fault for address: fffff521b59c5a00 RIP: 0010:kasan_check_range+0x107/0x190 Call Trace: sock_map_free+0x93/0x190 map_create+0x68d/0xb30 __sys_bpf+0x21e/0x2e70

Il Vmcore ha confermato che stab->map.max_entries == 0xffffffff, stab->sks == 0xffffc911ace2d000 e l'indirizzo faulting sks + (s64)INT_MIN * 8 corrisponde esattamente a 0xffffc90dace2d000. Lo stesso percorso errato viene raggiunto nel normale percorso di chiusura/bpf_map_free_deferred() ogni volta che una tale mappa viene distrutta.

sock_map_alloc() limitava precedentemente la dimensione della sua allocazione tramite bpf_map_charge_init(), ma il limite è stato rimosso quando è stata eliminata la contabilità della memoria basata su rlimit. Si rifiuta max_entries > INT_MAX al momento della creazione in modo che l'iteratore firmato in sock_map_free() non veda mai un valore che causerebbe overflow.

Vulnerabilità attivata da syzkaller e riprodotta sia su un kernel KASAN basato sulla versione 6.6 sia sul kernel upstream v7.3-rc2.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

18/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!