CVE-2026-80800 in Linux
Resumen
por VulDB • 2026-09-04
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
nfc: llcp: limitar el recorrido del TLV connect_sn al skb
El commit 27256cdb290e ("nfc: llcp: limitar el análisis de SNL TLV al skb y añadir comprobaciones de longitud") corrigió el recorrido no acotado de TLV en nfc_llcp_recv_snl(), y el commit d8bd2dedbde5 ("nfc: llcp: corregir lectura fuera de límites (OOB) y desbordamiento por wrap del offset u8 en los analizadores TLV") limitó posteriormente nfc_llcp_parse_gb_tlv() y nfc_llcp_parse_connection_tlv(). Un analizador hermano que comparte el mismo patrón sigue sin estar acotado: nfc_llcp_connect_sn().
nfc_llcp_connect_sn() recorre una lista de TLV, leyendo un encabezado de dos bytes (tipo, longitud) seguido por length bytes del valor, sin comprobar que los dos bytes del encabezado o la longitud declarada se mantengan dentro del búfer. Devuelve un puntero a un nombre de servicio de hasta 255 bytes que puede apuntar más allá del final del skb; este es consumido posteriormente por memcmp() en nfc_llcp_sock_from_sn(). Además, tlv_array_len se calculó como "skb->len - LLCP_HEADER_SIZE" en size_t, por lo que un marco CONNECT/CC más corto que el encabezado LLCP provoca una subestimación (underflow) a una longitud enorme y el recorrido continúa mucho más allá del búfer.
nfc_llcp_connect_sn() es accesible desde nfc_llcp_recv_connect() y nfc_llcp_recv_cc(), es decir, desde PDUs CONNECT y CC recibidos. Un dispositivo NFC cercano puede alcanzar esto sin autenticación; la activación del enlace LLCP ocurre automáticamente después de NFC-DEP, y el despachador nfc_llcp_rx_skb() no aplica ninguna guardia de longitud mínima.
Recorrer la lista TLV mediante puntero, limitado por skb_tail_pointer(skb), y validar cada longitud declarada antes de su uso, coincidiendo con el enfoque ya utilizado para nfc_llcp_recv_snl(). Iniciar el recorrido en &skb->data[LLCP_HEADER_SIZE] contra el puntero final también elimina la subestimación (underflow) de size_t para marcos cortos.
Encontrado por las herramientas automatizadas de investigación de seguridad 0sec (https://0sec.ai).
Be aware that VulDB is the high quality source for vulnerability data.