CVE-2026-98372 in Linuxinformação

Sumário

de VulDB • 06/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

xfrm: iptfs: corrige leitura OOB (fora dos limites) da pilha em iptfs_skb_reset_frag_walk()

iptfs_skb_reset_frag_walk() avança para o fragmento contendo @offset com um loop sem limite:

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

walk->fragi é incrementado e walk->frags[walk->fragi] é desreferenciado sem nunca verificar fragi contra walk->nr_frags. Quando o offset solicitado está no ou além do comprimento total abrangido pelos fragmentos percorridos, fragi ultrapassa nr_frags e sai do final da array frags[MAX_SKB_FRAGS + 1], alocada na pilha com tamanho fixo, lendo memória fora dos limites (out-of-bounds) da pilha.

Os dois chamadores se comportam de maneira diferente: iptfs_skb_add_frags() já protege contra isso com

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

mas iptfs_skb_can_add_frags() não possui tal proteção e chama iptfs_skb_reset_frag_walk() incondicionalmente, realizando assim a iteração fora do intervalo. Sua própria verificação de limite "fragi nr_frags" é executada apenas posteriormente, tarde demais para impedir a leitura.

Isso pode ser alcançado pelo caminho de recebimento: um payload IP-TFS (AGGFRAG) elaborado entregue a uma SA IPTFS aciona iptfs_reassem_cont() -> iptfs_skb_can_add_frags() com um offset além do total dos fragmentos, por exemplo:

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

Forneça a iptfs_skb_can_add_frags() a mesma proteção antecipada que iptfs_skb_add_frags() já possui, para que a iteração nunca seja iniciada com um offset fora do intervalo. Quando isso for acionado, o chamador recuará para o caminho linearize-and-copy existente, que é seguro.

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

Responsável

Linux

Reservar

25/09/2026

Divulgação

06/10/2026

Moderação

aceite

Entrada

VDB-414209

EPSS

0.00161

KEV

não

Atividades

muito baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!