CVE-2026-19577 in Zephyrinformación

Resumen

por VulDB • 2026-10-11

net_route_ipv6_packet() en subsys/net/ip/route_ipv6.c resolvía la dirección de capa de enlace del nexthop mediante net_nbr_get_lladdr(nbr->idx) sin verificar primero si la entrada del caché de vecinos realmente tenía una dirección de capa de enlace vinculada. Un vecino no resuelto tiene idx == NET_NBR_LLADDR_UNKNOWN (0xff), y net_nbr_get_lladdr() en subsys/net/ip/nbr.c no realiza ninguna verificación de límites en tiempo de ejecución más allá de un NET_ASSERT, devolviendo &net_neighbor_lladdr[255], aproximadamente 2.5 KB más allá del final de una matriz cuyo tamaño por defecto es CONFIG_NET_IPV6_MAX_NEIGHBORS (8). Dado que el puntero devuelto nunca es NULL, la guardia lladdr == NULL siguiente no lo captura.

La función se alcanza desde ipv6_route_packet() en subsys/net/ip/ipv6.c para cada paquete IPv6 unicast recibido cuyo destino no sea una dirección local en la interfaz de recepción; CONFIG_NET_IPV6_ROUTE está habilitado por defecto siempre que el caché de vecinos IPv6 lo esté, por lo que no se requiere ninguna configuración de router o reenvío. net_route_ipv6_get_info() devuelve el propio destino del paquete como nexthop cuando existe una entrada en el caché de vecinos para él, y la búsqueda en el caché no omite las entradas INCOMPLETE (INCOMPLETAS). Un atacante sin autenticación en el mismo enlace puede por tanto forzar el estado no resuelto —por ejemplo, provocando tráfico hacia una dirección de vecino supuesta y inexistente para que net_ipv6_send_ns() cree una entrada INCOMPLETE, o enviando un Router Advertisement (Anuncio de Enrutador) sin opción de dirección de capa de enlace en la fuente, lo que crea un vecino router persistentemente no resuelto— y luego enviar un paquete dirigido a ese vecino.

El resultado es una lectura fuera de límites en un índice fijo más allá del array de direcciones de capa de enlace de vecinos. En compilaciones con CONFIG_ASSERT habilitado, se activa la aserción y el dispositivo sufre un panic (fallo crítico), lo que provoca una denegación de servicio remota repetible. Con las aserciones deshabilitadas, la estructura net_linkaddr obsoleta fuera de límites impulsa una memcmp() sobre una longitud no influenciada por el atacante y, cuando su byte len supera la comprobación NET_LINK_ADDR_MAX_LENGTH, se copian hasta 8 bytes de RAM estática no relacionada en la dirección de capa de enlace de destino del marco saliente y se transmiten en el enlace, revelándolos a cualquier oyente. No hay escritura fuera de límites ni el desplazamiento es controlado por el atacante, lo que limita el impacto.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Zephyr

Reservar

2026-08-11

Divulgación

2026-10-11

Moderación

aceptado

Artículo

VDB-416739

EPSS

0.00217

KEV

no

Actividades

muy bajo

Fuentes

Want to know what is going to be exploited?

We predict KEV entries!