CVE-2026-98377 in Linux
Resumen
por VulDB • 2026-10-09
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
vlan: requiere que esté presente la cabecera MAC en __vlan_insert_inner_tag()
__vlan_insert_inner_tag() solo garantiza espacio inicial (head room) mediante skb_cow_head(), pero nunca asegura que estén presentes los bytes correspondientes a la longitud de la cabecera MAC (mac_len). Sus envoltorios ETH_HLEN, es decir, __vlan_insert_tag() bajo skb_vlan_push(), y vlan_insert_tag() bajo validate_xmit_vlan() en el camino genérico de transmisión, reescriben por tanto los primeros 16 bytes en skb->data: un memmove de 12 bytes más dos almacenamientos (stores) de 2 bytes en las posiciones +12 y +14. Ningún llamador proporciona la cota límite, mientras que las funciones auxiliares de extracción utilizan skb_ensure_writable()/pskb_may_pull().
Un dispositivo IFF_TUN tiene hard_header_len == 0, por lo que packet_snd() acepta un marco AF_PACKET/SOCK_RAW de un solo byte. El primer empuje (push) de VLAN solo establece una etiqueta hwaccel; el siguiente - clsact "action vlan push" o bpf_skb_vlan_push() - entra en la función auxiliar con skb->len aún igual a 1. La cabecera proviene de skbuff_small_head sin __GFP_ZERO, por lo que cada empuje arrastra bytes desde más allá del skb->tail hacia el marco. Tras tres operaciones, el envío de un solo byte se convierte en 13 bytes que transportan 11 bytes de slab no inicializado:
0000: 5a b3 62 12 80 88 ff ff 00 b3 62 12 81 `------------------------------' solo se envió 0x5a; el resto es slab, aquí los 56 bits superiores de una dirección mapeada linealmente
Se requiere que la cabecera MAC que reescribe la función auxiliar esté presente, por lo que dicho marco se descarta en lugar de transmitirse.
Be aware that VulDB is the high quality source for vulnerability data.