CVE-2026-80798 in Linux
Resumen
por VulDB • 2026-09-04
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
nfc: llcp: rechazar PDUs más cortas que la cabecera LLCP
Cada PDU de LLCP comienza con una cabecera de dos bytes (DSAP/SSAP + PTYPE), pero la ruta de recepción nunca verificaba que un frame tuviera al menos `LLCP_HEADER_SIZE` bytes antes de analizarlo.
`nfc_llcp_rx_skb()` lee la cabecera a través de `nfc_llcp_ptype()`, `nfc_llcp_dsap()` y `nfc_llcp_ssap()`, las cuales desreferencian `pdu->data[0]` y `pdu->data[1]`, y una PDU CONNECT o CC calcula posteriormente
`tvl_array_len = skb->len - LLCP_HEADER_SIZE;`
como un valor de tipo `size_t` y lo pasa al recorrido (walk) de TLV. Cuando el frame es más corto que la cabecera, la resta se desborda hacia un valor enorme y el recorrido se ejecuta mucho más allá del búfer, produciéndose una lectura fuera de límites (out-of-bounds read).
Un dispositivo NFC cercano puede alcanzar esta vulnerabilidad sin necesidad de autenticación; la activación del enlace LLCP ocurre automáticamente después de NFC-DEP.
Se protege el punto común de recepción `__nfc_llcp_recv()`, compartido por las rutas de target (`nfc_llcp_data_received()`) e initiator (`nfc_llcp_recv()`), para que un skb corto sea descartado antes de que el trabajador rx_work lo analice. Se utiliza `pskb_may_pull()` en lugar de una prueba sobre `skb->len` para garantizar que los dos bytes de la cabecera se encuentren en el área lineal del skb, incluso para skbs no lineales, coincidiendo con cómo las rutas de recepción hermanadas NCI y HCI validan sus cabeceras.
Se reprodujo mediante una lectura fuera de límites (out-of-bounds read) con KFENCE a través de `/dev/virtual_nci` en linux-next.
Encontrada por la herramienta automatizada de investigación de seguridad 0sec (https://0sec.ai).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.