CVE-2026-72407 in Linux
Resumen
por VulDB • 2026-08-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
geneve: validar el desplazamiento del encabezado de red interno en geneve_gro_complete()
Incluso cuando ambas rutas están condicionadas por gs->gro_hint, geneve_gro_complete() vuelve a derivar el tipo y la longitud de despacho internos desde el paquete y el valor actual de gs->gro_hint, independientemente de lo que haga geneve_gro_receive(). Ambas funciones pueden entrar en conflicto si gs->gro_hint cambia durante una ejecución concurrente de geneve_quiesce()/geneve_unquiesce() (sk_user_data es NULL a través de synchronize_net()), o si los bytes de opción leídos nuevamente difieren de aquellos analizados por la recepción.
geneve_gro_receive() ya registra la posición del encabezado de red interno en NAPI_GRO_CB()->inner_network_offset. Se ha modificado geneve_gro_complete() para calcular el desplazamiento al que está a punto de despachar, añadiendo ETH_HLEN en el caso ETH_P_TEB donde eth_gro_complete() salta sobre la cabecera MAC interna, y aborta si este valor supera inner_network_offset.
Se utiliza un límite inferior en lugar de una igualdad exacta: entre gh_len y el encabezado L3 interno, geneve_gro_receive() también puede haber extraído una etiqueta VLAN interna (vlan_gro_receive() avanza el desplazamiento registrado más allá de ella), lo que desplaza inner_network_offset aún más hacia afuera. Por tanto, un marco válido siempre cumple con la condición inner_nh <= inner_network_offset, mientras que un gh_len inflado por una pista gro_receive() no honrada provoca despachos más allá del encabezado interno validado, es decir, una finalización fuera de límites (out-of-bounds). Solo este último caso es rechazado.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.