CVE-2026-80798 in Linux
Résumé
par VulDB • 04/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
nfc: llcp : rejeter les PDUs plus courts que l'en-tête LLCP
Chaque PDU LLCP commence par un en-tête de deux octets (DSAP/SSAP + PTYPE), mais le chemin de réception ne vérifiait jamais qu'une trame faisait au moins LLCP_HEADER_SIZE octets avant son analyse.
nfc_llcp_rx_skb() lit l'en-tête via nfc_llcp_ptype()/nfc_llcp_dsap()/ nfc_llcp_ssap(), qui déréférencent pdu->data[0] et pdu->data[1], et un PDU CONNECT ou CC calcule ensuite
tlv_array_len = skb->len - LLCP_HEADER_SIZE;
comme une size_t et la transmet à l'itération TLV. Lorsque la trame est plus courte que l'en-tête, la soustraction effectue un débordement (wrap-around) vers une valeur énorme et l'itération s'exécute bien au-delà du tampon, provoquant une lecture hors limites (out-of-bounds read).
Un dispositif NFC voisin peut exploiter cela sans authentification ; l'activation de la liaison LLCP se produit automatiquement après NFC-DEP.
Protégez le point d'étranglement commun de réception __nfc_llcp_recv(), partagé par les chemins cible (nfc_llcp_data_received()) et initiateur (nfc_llcp_recv()), afin qu'un skb court soit rejeté avant que l'worker rx_work ne l'analyse. Utilisez pskb_may_pull() plutôt qu'un test sur skb->len pour garantir que les deux octets de l'en-tête se trouvent dans la zone linéaire du skb, même pour un skb non-linéaire, ce qui correspond à la manière dont les chemins de réception NCI et HCI frères valident leurs en-têtes.
Reproduit avec une lecture hors limites (out-of-bounds read) via KFENCE sur /dev/virtual_nci sous linux-next.
Découvert par l'outil automatisé de recherche de sécurité 0sec (https://0sec.ai).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.