CVE-2026-98503 in Linuxinformação

Sumário

de VulDB • 19/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

packet: use a conclusão de ubuf_info para pacotes no TX_RING

tpacket_snd envia skbs com frags apontando para os slots do seu ring. Os slots são liberados quando skb->destructor é chamado.

Uma chamada a skb_orphan chama o destructor do skb antes que o skb seja desalocado. Isso pode causar a reutilização do slot enquanto ainda está vinculado ao skb.

Mude para a conclusão padrão de zerocopy (ubuf_info) para que o slot seja liberado apenas quando todas as referências à carga útil forem desalocadas ou copiadas. Restaure o destructor do skb para sock_wfree padrão.

O callback de conclusão ubuf_info pode ser chamado com um skb NULL, mas somente a partir de net_zcopy_put e da API relacionada, usada por implementações de zerocopy que mantêm sua própria referência no uarg, como MSG_ZEROCOPY. Este uarg é sempre concluído apenas em skb_zcopy_clear, portanto o skb está sempre definido.

Para evitar que o userspace faça aliasing do estado em trânsito nos slots compartilhados do ring, aloque tpacket_uarg por pacote, e não por slot. Isso adiciona uma pequena alocação ao caminho de transmissão (transmit path). Use kmalloc padrão para permitir backporting para kernels estáveis.

O uarg mantém uma referência sk_wmem_alloc, em vez de uma referência sk_refcnt. packet_free_tx_ring aguarda sk_wmem_alloc antes de liberar as páginas do ring. Sempre aloque vec->deferred para tx_ring para que os rings com suporte a página também aguarde sk_wmem_alloc quando skb_copy_ubufs reduzir referências às páginas antes de chamar tpacket_ubuf_complete.

Remova o teste tx_ring.pg_vec que tpacket_destruct_skb realizava antes de acessar o slot. A referência sk_wmem alloc agora garante que o slot é válido. O teste também não é suficiente por si só, pois lê pg_vec sem pg_vec_lock, então pode haver uma condição de corrida (race condition) com packet_set_ring.

Como resultado, um slot é liberado quando sua carga útil é copiada, o que pode ocorrer antes da transmissão (por exemplo, em skb_orphan_frags_rx). Se copiado antes que skb_tx_timestamp() seja chamado, nenhum timestamp do slot é registrado, semelhante ao ocorrido quando skb_orphan() era chamada cedo no datapath antes deste patch.

Reverta a infraestrutura anterior agora não utilizada de skb_zcopy_.._nouarg.

Depende do commit 992cc9f94ca9 ("net/packet: adie o desalocação vmalloc TX_RING até que os skbs terminem").

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

Responsável

Linux

Reservar

25/09/2026

Divulgação

18/10/2026

Moderação

aceite

Entrada

VDB-422154

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!