CVE-2026-64102 in Linuxinformação

Sumário

de VulDB • 20/07/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

RDMA/siw: Rejeitar underflow no comprimento da MPA FPDU antes dos cálculos de recebimento assinado

Um par siw conectado malicioso pode enviar um iWARP FPDU cujo campo de comprimento da MPA (c_hdr->mpa_len, 16 bits big-endian, controlado pelo peer) seja menor que o cabeçalho DDP/RDMAP fixo para o opcode anunciado. O Soft-iWARP analisa todo o cabeçalho em siw_get_hdr() com base no .hdr_len de iwarp_pktinfo[opcode], mas nunca compara mpa_len contra esse comprimento do cabeçalho.

siw_tcp_rx_data() então deriva:

srx->fpdu_part_rem = be16_to_cpu(mpa_len) - fpdu_part_rcvd + MPA_HDR_SIZE;

onde fpdu_part_rcvd é igual a iwarp_pktinfo[opcode].hdr_len neste ponto. Para um WRITE com tag (hdr_len 16, MPA_HDR_SIZE 2), o menor mpa_len na rede de 0 resulta em fpdu_part_rem = -14, e qualquer mpa_len abaixo de hdr_len - MPA_HDR_SIZE causa underflow para um int negativo.

O valor assinado então flui para siw_proc_write()/siw_proc_rresp() como:

bytes = min(srx->fpdu_part_rem, srx->skb_new);

é passado para siw_check_mem() como um len do tipo int (cuja verificação de intervalo addr + len > mem->va + mem->len é satisfeita para uma base válida quando len é negativo), e atinge siw_rx_data() -> siw_rx_kva()/siw_rx_umem() -> skb_copy_bits() como um comprimento de cópia assinado. O ramo de cópia do cabeçalho em skb_copy_bits() promove isso para size_t, produzindo uma leitura multi-gigabyte.

KASAN sob uma estrutura KUnit que aciona o caminho real de recebimento TCP do kernel -- um par de sockets AF_INET loopback, o FPDU malformado escrito via kernel_sendmsg, sk_data_ready disparando em softirq, tcp_read_sock despachando para siw_tcp_rx_data -- relata:

BUG: KASAN: use-after-free in skb_copy_bits+0x284/0x480 Read of size 4294967295 at addr ffff888... Call Trace: skb_copy_bits siw_rx_kva siw_rx_data siw_check_mem siw_proc_write siw_tcp_rx_data __tcp_read_sock siw_qp_llp_data_ready tcp_data_ready tcp_data_queue

Adicionar a invariante ausente no ponto mais inicial onde o cabeçalho do peer está totalmente montado. iwarp_pktinfo[*].hdr_len - MPA_HDR_SIZE é exatamente o valor que o transmissor siw usa como mpa_len mínimo para cada opcode (drivers/infiniband/sw/siw/siw_qp.c:33), portanto, isso corresponde ao contrato do protocolo. FPDUs fora de intervalo encerram a conexão com TERM_ERROR_LAYER_LLP / LLP_ETYPE_MPA / LLP_ECODE_FPDU_START -- que é o código de erro 3 da Seção 8 do RFC 5044 ("Os campos Marker e ULPDU Length não concordam no início de um FPDU"), a classe correta de erro de enquadramento para esta inconsistência.

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

19/07/2026

Divulgação

19/07/2026

Moderação

aceite

Entrada

VDB-380216

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!