CVE-2026-19673
ethernet_recv() en subsys/net/l2/ethernet/ethernet.c comprueba únicamente que el primer net_buf de una trama recibida contenga una struct net_eth_hdr sin etiquetar de 14 bytes. Cuando el ethertype es 0x8100 y VLAN está habilitada en la interfaz, el mismo búfer se reinterpreta como la struct net_eth_vlan_hdr de 18 bytes sin volver a comprobar la longitud: el TCI de VLAN y el ethertype interno se leen de los desplazamientos 14..17, más allá de pkt->buffer->len, y hdr_len se eleva a 18, de modo que el net_buf_pull() posterior elimina más bytes de los que contiene el búfer.
Una única trama no autenticada de 14 a 17 bytes con el ethertype de VLAN desencadena este fallo.
Leer descripción completaMostrar menos
No es necesario conocer la configuración de VLAN del nodo: net_eth_get_vlan_iface() devuelve la interfaz base para la etiqueta de prioridad 0, y una dirección de destino de difusión satisface la prueba de "trama destinada a mí", por lo que una trama de difusión de 16 bytes con ethertype 0x8100 y TCI 0x0000 llega al pull. Nada en la ruta de recepción impone el mínimo de 60 bytes de Ethernet; en particular, las clases de gadget USB CDC ECM y CDC NCM entregan a net_recv_data() directamente tramas suministradas por el host de cualquier longitud distinta de cero.
Con las aserciones habilitadas, net_buf_simple_pull() falla y el nodo entra en pánico. En una compilación de producción (aserciones y CONFIG_NET_BUF_HARDENING desactivadas), la longitud uint16_t del búfer sufre un desbordamiento por defecto hasta 65534 y buf->data avanza más allá del final del almacenamiento del fragmento, de modo que todos los analizadores posteriores leen muy fuera del búfer y cualquier net_buf_add() sobre ese fragmento calcula el espacio libre a partir de la longitud desbordada. El resultado es una denegación de servicio remota fiable y un acceso fuera de límites con potencial de revelación de información y corrupción.
Solo se ven afectadas las configuraciones compiladas con CONFIG_NET_VLAN=y que tengan una VLAN habilitada en la interfaz Ethernet receptora y cuya MAC no elimine las etiquetas de VLAN en hardware (ETHERNET_HW_VLAN_TAG_STRIP). La corrección rechaza la trama antes de leer la etiqueta, de modo que hdr_len queda después en 14 o 18, validando ambos tamaños frente a pkt->buffer->len.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 7.1
- Versión
- 3.1
- Vector
- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días
- 0.34 %
- Percentil entre todas las CVEs puntuadas
- 26
- Fecha de la puntuación
- 20/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1210Exploitation of Remote Serviceslateral movement90 % - Impacto principal
T1499Endpoint Denial of Serviceimpact90 % - Impacto secundario
T1005Data from Local Systemcollection35 %
El vector AV:A/PR:N/UI:N indica red adyacente (T1210); una trama Ethernet de 14-17 bytes causa panic y DoS remoto, y la lectura fuera de límites sugiere divulgación de datos.
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-125
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-19673",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-19673",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-10-16T15:25:19.143054Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "vulnerabilities@zephyrproject.org",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.1,
"attackVector": "ADJACENT_NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "LOW"
},
"impactScore": 4.2,
"exploitabilityScore": 2.8
}
]
},
"affected": [
{
"source": "vulnerabilities@zephyrproject.org",
"affectedData": [
{
"vendor": "zephyrproject",
"product": "zephyr",
"versions": [
{
"status": "affected",
"version": "1.12.0",
"lessThan": "4.5.0",
"versionType": "semver"
}
],
"packageName": "zephyr",
"programFiles": [
"subsys/net/l2/ethernet/ethernet.c"
],
"collectionURL": "https://github.com/zephyrproject-rtos/zephyr",
"defaultStatus": "unaffected",
"programRoutines": [
{
"name": "ethernet_recv"
}
]
}
]
}
],
"published": "2026-10-14T17:18:26.800",
"references": [
{
"url": "https://github.com/zephyrproject-rtos/zephyr/commit/fd3c6fedf6b639977a80e52b680b15672c31f3ef",
"source": "vulnerabilities@zephyrproject.org"
},
{
"url": "https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-79rf-rwff-f4vg",
"source": "vulnerabilities@zephyrproject.org"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "vulnerabilities@zephyrproject.org",
"description": [
{
"lang": "en",
"value": "CWE-125"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "ethernet_recv() in subsys/net/l2/ethernet/ethernet.c validates only that the first net_buf of a received frame holds a plain 14-byte struct net_eth_hdr. When the ethertype is 0x8100 and VLAN is enabled on the interface, the same buffer is reinterpreted as the 18-byte struct net_eth_vlan_hdr without re-checking the length: the VLAN TCI and the inner ethertype are read from offsets 14..17, past pkt->buffer->len, and hdr_len is raised to 18 so the subsequent net_buf_pull() removes more bytes than the buffer holds.\n\nA single unauthenticated frame of 14 to 17 bytes carrying the VLAN ethertype triggers this. No knowledge of the node's VLAN configuration is needed: net_eth_get_vlan_iface() returns the base interface for the priority tag 0, and a broadcast destination address satisfies the \"frame is for me\" test, so a 16-byte broadcast frame with ethertype 0x8100 and TCI 0x0000 reaches the pull. Nothing in the receive path enforces the 60-byte Ethernet minimum — the USB CDC ECM and CDC NCM gadget classes in particular hand host-supplied frames of any non-zero length straight to net_recv_data().\n\nWith assertions enabled, net_buf_simple_pull() asserts and the node panics. In a production build (assertions and CONFIG_NET_BUF_HARDENING off) the uint16_t buffer length underflows to 65534 and buf->data is advanced past the end of the fragment's storage, so every later parser reads far outside the buffer and any net_buf_add() on that fragment computes tailroom from the underflowed length. The result is a reliable remote denial of service and out-of-bounds access with information-disclosure and corruption potential.\n\nOnly configurations built with CONFIG_NET_VLAN=y that have a VLAN enabled on the receiving Ethernet interface, and whose MAC does not strip VLAN tags in hardware (ETHERNET_HW_VLAN_TAG_STRIP), are affected. The fix rejects the frame before the tag is read, so hdr_len is thereafter either 14 or 18 with both sizes validated against pkt->buffer->len."
}
],
"lastModified": "2026-10-16T16:17:05.187",
"sourceIdentifier": "vulnerabilities@zephyrproject.org"
}