CVE-2026-80840 in Linuxinformação

Sumário

de VulDB • 05/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

ipv6: seg6: limpar o bloco de controle IPv4 na desencapsulação IPIP

As ações End.DX4 e End.DT4 desencapsulam um pacote IPv4 através de `decap_and_validate()` e o encaminham diretamente para o roteamento IPv4. O pacote interno, portanto, contorna a função `ip_rcv_core()`, que normalmente limpa o IPCB antes do interpretador IPv4 processar `skb->cb`.

O skb retém os dados IP6CB provenientes do pacote externo. Como IP6CB e IPCB utilizam o mesmo armazenamento em `skb->cb`, `IP6CB(skb)->lastopt` sobrepõe-se a `IPCB(skb)->opt.optlen` e srr, enquanto `IP6CB(skb)->nhoff` sobrepõe-se a rr e ts.

O remetente pode tornar o byte obsoleto de optlen não nulo por meio de uma cadeia válida de cabeçalhos de extensão IPv6. Os reprodutores inserem um cabeçalho Destination Options de oito bytes imediatamente após o cabeçalho IPv40-byte e antes do Segment Routing Header. `ipv6_destopt_rcv()` registra o offset dos Destination Options, controlado pelo remetente, tanto em lastopt quanto em nhoff, definindo-os como 40. No kernel reproduzido little-endian x86-64, o IPv4 vê portanto optlen = 40 e rr = 40.

Tanto `tcp_v4_save_options()` quanto `__ip_options_echo()` pulam a cópia de opções quando optlen é zero. Aqui, optlen é 40, então o caminho SYN do TCP aloca espaço para 40 bytes de dados de opção e chama `__ip_options_echo()`. O valor obsoleto de rr faz com que essa função leia o byte 41 do pacote interno como o comprimento da opção Record Route. Os reprodutores definem esse byte, controlado pelo remetente, como 255; assim, `__ip_options_echo()` copia 255 bytes para a área de dados de opções de 40 bytes.

Reprodutores separados das ações End.DX4 e End.DT4 no kernel v7.2-rc5 sem correção produziram ambos:

BUG: KASAN: slab-out-of-bounds em __ip_options_echo() Write of size 255

O caminho de chamada relevante para a ação End.DX4 é:

__ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dx4_finish input_action_end_dx4

O caminho de chamada relevante para a ação End.DT4 é:

__ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dt4

`tcp_v4_save_options()` está embutido (inline) no caminho `tcp_v4_route_req()`, portanto não aparece como um frame separado.

Quando `decap_and_validate()` lida com IPPROTO_IPIP, salve a interface de ingressão a partir do IP6CB, limpe o IPCB e restaure o valor salvo. Fazer isso no caminho comum de desencapsulação cobre End.DX4, End.DT4 e o braço IPv4 da End.DT46.

Use `IP6CB(skb)->iif` em vez de `skb->skb_iif`. Essas ações são executadas após o processamento l3mdev, que pode substituir skb_iif pelo mestre L3; iif do IP6CB ainda registra a interface de recepção definida no ingressão IPv6.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsável

Linux

Reservar

26/08/2026

Divulgação

04/09/2026

Moderação

aceite

Entrada

VDB-398980

CPE

pronto

EPSS

0.00205

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!