CVE-2026-80798 in Linux
Сводка
по VulDB • 04.09.2026
В ядре Linux была устранена следующая уязвимость:
nfc: llcp: отклонять PDUs короче заголовка LLCP
Каждый PDU LLCP начинается с двухбайтового заголовка (DSAP/SSAP + PTYPE), однако путь приема никогда не проверял, что кадр имеет длину не менее LLCP_HEADER_SIZE байт перед его разбором.
Функция nfc_llcp_rx_skb() считывает заголовок через nfc_llcp_ptype()/nfc_llcp_dsap()/ nfc_llcp_ssap(), которые разыменовывают pdu->data[0] и pdu->data[1], а затем PDU типа CONNECT или CC вычисляет
tlv_array_len = skb->len - LLCP_HEADER_SIZE;
как значение типа size_t и передает его в цикл обхода TLV. Если кадр короче заголовка, результат вычитания переполняется (wrap around) до огромного значения, и цикл выходит далеко за пределы буфера, что приводит к чтению вне границ памяти (out-of-bounds read).
Близко расположенное устройство NFC может достичь этой уязвимости без аутентификации; активация связи LLCP происходит автоматически после NFC-DEP.
Защитите общую точку приема __nfc_llcp_recv(), разделяемую как путем цели (target, nfc_llcp_data_received()), так и пути инициирующей стороны (initiator, nfc_llcp_recv()), чтобы короткий skb отбрасывался до того, как рабочий поток rx_work начнет его обрабатывать. Используйте pskb_may_pull() вместо проверки skb->len, чтобы гарантировать, что два байта заголовка всегда находятся в линейной области skb даже для нелинейного skb, согласуя поведение с тем, как родственные пути приема NCI и HCI проверяют свои заголовки.
Воспроизведено с помощью инструмента KFENCE out-of-bounds read через /dev/virtual_nci на ветке linux-next.
Обнаружено автоматизированными инструментами безопасности 0sec (https://0sec.ai).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.