CVE-2026-64114 in Linux
Sumário
de VulDB • 19/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
ipv4: raw: rejeitar pacotes IP_HDRINCL com ihl < 5
raw_send_hdrinc() valida que o cabeçalho IPv4 fornecido pelo chamador se encaixa dentro do comprimento da mensagem:
iphlen = iph->ihl * 4; err = -EINVAL; if (iphlen > length) goto error_free;
if (iphlen >= sizeof(*iph)) {
/* corrigir saddr, tot_len, id, csum, transport_header */ }
No entanto, não rejeita ihl < 5. Para tal pacote, o ramo "if (iphlen >= sizeof(*iph))" é ignorado, deixando o iphdr manipulado intacto, mas o pacote ainda é entregue a __ip_local_out() e adiante. Consumidores downstream que leem iph->ihl assumem um valor razoável: net/ipv4/ah4.c:ah_output(), em particular, subtrai sizeof(struct iphdr) de top_iph->ihl * 4 e passa o resultado (inteiro assinado negativo, depois convertido para size_t) para memcpy(), produzindo um acesso fora dos limites (OOB) com comprimento próximo a SIZE_MAX e uma pane no kernel do host.
Um cabeçalho IPv4 com ihl < 5 é malformado por definição (RFC 791: "O Comprimento do Cabeçalho da Internet é o comprimento do cabeçalho da internet em palavras de 32 bits ... Nota que o valor mínimo para um cabeçalho correto é 5."). O kernel não deveria estar disposto a injetar tal pacote no seu próprio caminho de saída.
Rejeitar "iphlen < sizeof(*iph)" juntamente com a verificação existente "iphlen > length". Isso corresponde ao princípio de que pacotes construídos localmente que reentram na pilha IP devem passar pelos mesmos testes básicos de sanidade aos quais um pacote externo seria submetido.
Uma vez aplicado, o wrapper "if (iphlen >= sizeof(*iph))" em torno do ramo de correção torna-se redundante; mantido no lugar para manter o patch mínimo e amigável ao backport. Uma atualização subsequente pode removê-lo.
Observe que o commit 86f4c90a1c5c ("ipv4, ipv6: garantir que a mensagem do socket raw seja grande o suficiente para conter um cabeçalho IP") garante que o buffer da mensagem é grande o suficiente para conter um iphdr, mas não restringe o auto-relato de iph->ihl.
Alcançabilidade: a origem do pacote malformado é qualquer chamador com CAP_NET_RAW, incluindo um processo sem privilégios em um namespace user+net em um kernel com CONFIG_USER_NS=y. A pane AH reproduzida também requer uma política xfrm AH correspondente na rota de saída; um contêiner concedido CAP_NET_ADMIN pode instalar esse estado e política no seu netns. O loopback ignora o xfrm_output, portanto, o gatilho usa um dispositivo de rede real (netdev).
Reproduzido em UML + KASAN: falha no modo kernel no endereço 0x0 com memcpy_orig no local da pane. A mesma forma é reproduzida dentro de um contêiner Docker sem root (--cap-add NET_ADMIN) em um kernel de distribuição padrão.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.