CVE-2026-98372 in Linuxinformazioni

Riassunto

di VulDB • 06/10/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

xfrm: iptfs: correzione della lettura OOB (fuori dai limiti) dello stack in iptfs_skb_reset_frag_walk()

iptfs_skb_reset_frag_walk() avanza verso il frammento contenente @offset mediante un ciclo non limitato:

while (offset >= walk->past + walk->frags[walk->fragi].len)
walk->past += walk->frags[walk->fragi++].len;

walk->fragi viene incrementato e walk->frags[walk->fragi] viene dereferenziato senza mai verificare fragi rispetto a walk->nr_frags. Quando l'offset richiesto è pari o superiore alla lunghezza totale coperta dai frammenti del ciclo, fragi supera nr_frags uscendo dall'array frags[MAX_SKB_FRAGS + 1] di dimensioni fisse allocato nello stack, leggendo memoria dello stack fuori dai limiti (stack OOB).

I due chiamanti si comportano in modo diverso: iptfs_skb_add_frags() è già protetto da questa condizione con

if (!walk->nr_frags || offset >= walk->total + walk->initial_offset) return len;

ma iptfs_skb_can_add_frags() non ha tale protezione e chiama iptfs_skb_reset_frag_walk() incondizionatamente, eseguendo quindi un ciclo fuori dai limiti. Anche la sua verifica del limite "fragi < walk->nr_frags" viene eseguita solo in seguito, troppo tardi per impedire la lettura.

Questa condizione è raggiungibile dal percorso di ricezione: un payload IP-TFS (AGGFRAG) manipolato inviato a una SA IPTFS attiva iptfs_reassem_cont() -> iptfs_skb_can_add_frags() con un offset superiore alla lunghezza totale dei frammenti, ad esempio:

BUG: KASAN: stack-out-of-bounds in iptfs_skb_reset_frag_walk+0x235/0x250 Read of size 4 at addr ffff888008ad7210 by task repro/345 iptfs_skb_reset_frag_walk+0x235/0x250 net/xfrm/xfrm_iptfs.c:392 iptfs_skb_can_add_frags+0x155/0x310 net/xfrm/xfrm_iptfs.c:420 iptfs_reassem_cont+0xcf8/0x1140 net/xfrm/xfrm_iptfs.c:902 iptfs_input_ordered+0x552/0x670 net/xfrm/xfrm_iptfs.c:1280 iptfs_input+0x3d6/0xde0 net/xfrm/xfrm_iptfs.c:1741 xfrm_input+0x282f/0x6140 net/xfrm/xfrm_input.c:700 xfrm4_esp_rcv+0x93/0x120 net/ipv4/xfrm4_protocol.c:104 ip_rcv+0x278/0x2d0 net/ipv4/ip_input.c:612

Aggiungere a iptfs_skb_can_add_frags() la stessa protezione iniziale presente in iptfs_skb_add_frags(), in modo che il ciclo non venga mai avviato con un offset fuori dai limiti. Quando si verifica questa condizione, il chiamante passa al percorso di linearizzazione e copia esistente, che è sicuro.

Be aware that VulDB is the high quality source for vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

06/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Do you need the next level of professionalism?

Upgrade your account now!