Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDAD

CVE-2026-19577 Lectura fuera de límites en el reenvío de rutas IPv6 sin dirección de capa de enlace

net_route_ipv6_packet() obtiene la dirección de capa de enlace del nexthop sin verificar que la entrada de la caché de vecinos tenga una dirección vinculada, y net_nbr_get_lladdr() devuelve un puntero fuera del array cuando idx es NET_NBR_LLADDR_UNKNOWN. Se alcanza con cada paquete IPv6 unicast recibido cuyo destino no sea local en la interfaz, con CONFIG_NET_IPV6_ROUTE habilitado por defecto.

Alerta de Nureq Monitor

Detectada 11 OCT · 16:24

CVSS 3.1

7.1ALTA

PROBABILIDAD DE EXPLOTACIÓN (EPSS)

0,2 % PERCENTIL 12

EXPLOTACIÓN ACTIVA

No confirmada

EXPLOIT PÚBLICO

No conocido

Qué es CVE-2026-19577

net_route_ipv6_packet() obtiene la dirección de capa de enlace del nexthop sin verificar que la entrada de la caché de vecinos tenga una dirección vinculada, y net_nbr_get_lladdr() devuelve un puntero fuera del array cuando idx es NET_NBR_LLADDR_UNKNOWN. Se alcanza con cada paquete IPv6 unicast recibido cuyo destino no sea local en la interfaz, con CONFIG_NET_IPV6_ROUTE habilitado por defecto.

Productos y versiones afectadas

  • zephyrproject zephyr

    • desde 1.8.0 hasta antes de 4.5.0

Qué hacer

  1. Verificá si usás zephyr y en qué versión: el rango afectado figura arriba.
  2. Actualizá a la versión corregida que indique el fabricante en su aviso (ver referencias) o aplicá la mitigación que publique.
  3. Revisá registros y accesos de los sistemas expuestos para descartar que se haya aprovechado antes de corregir.

Calculadora CVSS

CVSS 3.1 · 7.1 ALTA

CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H

VECTOR DE ATAQUE (AV)
Red adyacente
COMPLEJIDAD DEL ATAQUE (AC)
Baja
PRIVILEGIOS REQUERIDOS (PR)
Ninguno
INTERACCIÓN DEL USUARIO (UI)
Ninguna
ALCANCE (S)
Sin cambio
CONFIDENCIALIDAD (C)
Baja
INTEGRIDAD (I)
Ninguna
DISPONIBILIDAD (A)
Alta

Abrir la calculadora completa

Descripción original

net_route_ipv6_packet() in subsys/net/ip/route_ipv6.c resolved the nexthop's link-layer address with net_nbr_get_lladdr(nbr->idx) without first checking whether the neighbor cache entry actually had a linked link-layer address. An unresolved neighbor carries idx == NET_NBR_LLADDR_UNKNOWN (0xff), and net_nbr_get_lladdr() in subsys/net/ip/nbr.c performs no runtime bounds check beyond a NET_ASSERT, returning &net_neighbor_lladdr[255] — roughly 2.5 KB past the end of an array whose default size is CONFIG_NET_IPV6_MAX_NEIGHBORS (8). Because the returned pointer is never NULL, the following lladdr == NULL guard does not catch it. The function is reached from ipv6_route_packet() in subsys/net/ip/ipv6.c for every received unicast IPv6 packet whose destination is not a local address on the receiving interface; CONFIG_NET_IPV6_ROUTE is enabled by default whenever the IPv6 neighbor cache is, so no router or forwarding configuration is needed. net_route_ipv6_get_info() returns the packet's destination itself as the nexthop when a neighbor cache entry for it exists, and the cache lookup does not skip INCOMPLETE entries. An unauthenticated attacker on the same link can therefore force the unresolved state — for example by eliciting traffic to a spoofed, non-existent neighbor address so that net_ipv6_send_ns() creates an INCOMPLETE entry, or by sending a Router Advertisement with no source link-layer address option, which creates a persistently unresolved router neighbor — and then send a packet addressed to that neighbor. The result is an out-of-bounds read at a fixed index past the neighbor link-layer address array. On builds with CONFIG_ASSERT enabled the assertion fires and the device panics, giving a repeatable remote denial of service. With assertions disabled, the stale out-of-bounds struct net_linkaddr drives a memcmp() over an attacker-uninfluenced length and, when its len byte passes the NET_LINK_ADDR_MAX_LENGTH check, up to 8 bytes of unrelated static RAM are copied into the outgoing frame's destination link-layer address and transmitted on the link, disclosing them to any listener. There is no out-of-bounds write and the offset is not attacker-controlled, which bounds the impact.

Referencias

Historial de la alerta

  1. VULNERABILIDAD Nueva vulnerabilidad detectada.

CÓMO SE HIZOResumen traducido automáticamente al español a partir de la descripción original. Ante dudas, la descripción original y las referencias del fabricante son la fuente de verdad. Cómo funciona.