Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en zephyr de zephyrproject (CVE-2026-13212)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
24/08/2026
Última modificación:
12/10/2026

Descripción

El controlador virtio de Zephyr no valida el ID de cabecera de la cadena de descriptores que el dispositivo virtio escribe en el anillo de usados. En virtio_isr() (drivers/virtio/virtio_common.c), el ID vq -&gt; used -&gt; ring[idx].id escrito por el dispositivo se utiliza directamente como un índice en vq -&gt; recv_cbs[] y vq -&gt; desc[], los cuales están ambos asignados con exactamente vq -&gt; num entradas. recv_cbs[] contiene entradas de callback {cb, opaque}, y el puntero de callback indexado se invoca entonces como cbe.cb(cbe.opaque, used_len).<br /> <br /> Debido a que el ID se consume como un valor de 16 bits sin verificación de límites, un backend virtio malicioso o comprometido (un hipervisor no confiable, o un dispositivo virtio de hardware/procesador par no confiable en un transporte PCI o MMIO) puede suministrar un ID mucho más allá de vq -&gt; num. Esto causa una lectura fuera de límites de un par {puntero de función, argumento} de la memoria del heap más allá de recv_cbs[], después de lo cual el controlador llama a ese puntero con forma de atacante en el contexto de interrupción del invitado. No se requieren privilegios de invitado ni interacción del usuario; el backend lo activa escribiendo en el anillo de usados compartido y elevando la interrupción de la cola.<br /> <br /> El resultado es una llamada a puntero de función arbitraria / influenciada por el atacante en el invitado Zephyr, es decir, una primitiva de secuestro de flujo de control que puede conducir a la ejecución de código o, como mínimo, a un fallo fiable. La solución rechaza cualquier ID de anillo de usados &gt;= vq -&gt; num antes de indexar recv_cbs[]/desc[] o invocar el callback. Esto afecta a las compilaciones que utilizan CONFIG_VIRTIO con el transporte PCI o MMIO.