CVE-2026-19673

Estado: Pendiente de análisisAlta (7.1)—
Gravedad7.1Alta · CVSS 3.1
Probabilidad de explotación0.34 %mayor que el 26 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoNo conocidosin código público localizado

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.

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

Referencias

Mostrar las 2 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"
}