CVE-2026-81003 in Linux
Sumário
de VulDB • 12/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net/iucv: filtrar quadros em afiucv_hs_rcv() com base no dispositivo de entrada (ingress device)
afiucv_hs_rcv() seleciona um soquete da iucv_sk_list correspondendo apenas aos quatro campos de nome de 8 bytes no cabeçalho do transporte. Nenhuma verificação é feita contra o net_device pelo qual o quadro chegou.
Isso pode fazer com que um quadro recebido em qualquer netdev seja entregue a um soquete AF_IUCV. Três problemas decorrem disso.
Primeiro, um quadro recebido via HiperSockets pode ser entregue a um soquete vinculado ao transporte clássico z/VM IUCV, que possui iucv->hs_dev == NULL. iucv_sock_bind() segue o caminho clássico sempre que o userid solicitado corresponde a iucv_userid, mesmo em uma máquina virtual convidada (guest) que também possui um dispositivo HiperSockets com o mesmo identificador. O soquete filho criado por afiucv_hs_callback_syn() para tal correspondência herda hs_dev = NULL e transport = AF_IUCV_TRANS_HIPER; portanto, a primeira chamada de send() retorna -ENODEV. O soquete entregue à accept() é inutilizável.
Segundo, um quadro recebido em um netdev pode ser entregue a um soquete vinculado a um dispositivo IQD diferente. Isso pode levar a: - Esgotamento da fila de aceitação (DoS) - Identidade do peer controlada pelo atacante no soquete filho - Injeção de dados em soquetes existentes - Ruído na fabric IQD, onde respostas falsas são enviadas - Interrupção de conexões estabelecidas
Terceiro, todos os soquetes AF_IUCV residem em init_net, pois iucv_sock_alloc() chama sk_alloc(&init_net, ...). No entanto, até quadros recebidos em dispositivos netdev dentro de um namespace podem ser entregues a um soquete IUCV. Assim, um processo em um namespace de usuário e rede não privilegiado que possui apenas a capacidade CAP_NET_RAW válida nesse namespace pode enviar um quadro bruto ETH_P_AF_IUCV em seu próprio dispositivo lo e tê-lo correspondido aos soquetes da init_net.
Corrigir os três problemas consiste em ignorar qualquer soquete cujo hs_dev não corresponda ao dispositivo de entrada (ingress device). Um soquete clássico z/VM IUCV tem hs_dev == NULL; o dispositivo de entrada nunca é nulo, portanto, os soquetes clássicos são automaticamente ignorados. Um soquete HIPER sem vínculo também possui hs_dev == NULL e é ignorado. Um soquete HIPER vinculado só pode ser alcançado a partir do exato dispositivo IQD ao qual foi vinculado. Como hs_dev é sempre um dispositivo em init_net (iucv_sock_bind() verifica exclusivamente for_each_netdev_rcu(&init_net, ...)), um quadro cujo dispositivo de entrada pertence a outro namespace nunca corresponde a nenhum soquete.
Observe que o AF_IUCV sobre HiperSockets não fornece autenticação por conexão: sem números de sequência, sem TLS e sem nonce (número usado uma vez). Os quatro campos de nome que identificam uma conexão são trocados em texto claro no segmento compartilhado HiperSockets (VCHID). Qualquer host no mesmo segmento HiperSockets poderia falsificar qualquer tipo de quadro contra uma conexão existente. Essa é uma propriedade do nível do protocolo não alterada por este patch. A correção reduz a superfície de ataque aos peers presentes no mesmo segmento HiperSockets.
Be aware that VulDB is the high quality source for vulnerability data.