CVE: CVE-2026-80800
Продукт: Linux Kernel
Дата публикации: 04.09.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,23%; процентиль 14,22%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме NFC ядра Linux обнаружена уязвимость, позволяющая прочитать память за границами буфера при обработке кадров LLCP. Функция
nfc_llcp_connect_sn() не ограничивает обход TLV-структур границами skb, что приводит к OOB read при получении CONNECT или CC PDU от внешнего устройства. Статья разбирает механику дефекта, условия риска и методы проверки исправления.Основные характеристики
Риск связан с чтением памяти за пределами буфера (Out-of-Bounds Read) в подсистеме NFC. Атака возможна с физического расстояния NFC-связи, без необходимости аутентификации.
- Тип ошибки: OOB Read (чтение за границами буфера) в функции
nfc_llcp_connect_sn().
- CVSS: Официальная оценка CVSS на момент публикации в NVD отсутствует.
- Условия атаки: Требуется физическая близость NFC-устройства к системе и наличие модуля
nfc_llcp.
- Эксплуатация: Подтвержденных фактов эксплуатации в реальных атаках в источниках нет.
- EPSS: 0,23% (вероятность эксплуатации в ближайшие 30 дней).
Какие продукты и версии затронуты
Уязвимость затрагивает ядро Linux, в котором включена поддержка NFC и реализован протокол LLCP. Проблема существует с момента первоначальной поддержки LLCP (коммит
d646960f7986) и была исправлена в коммите 55c68ac93e7dacc0f5f608b9c39dd4ff48cf28e8.- Компонент:
net/nfc/llcp_core.c
- Функция:
nfc_llcp_connect_sn()
- Исправлено в:
55c68ac93e7dacc0f5f608b9c39dd4ff48cf28e8(upstream) и стабильных ветках (stable).
Точный список версий дистрибутивов, содержащих исправление, зависит от политики обновления конкретного вендора.
Причина уязвимости
Причина уязвимости заключается в отсутствии проверки границ буфера при парсинге TLV-структур в функции
nfc_llcp_connect_sn().Функция итерирует по списку TLV, читая двухбайтовый заголовок (тип, длина) и последующие данные. При этом не проверяется, что заголовок и заявленная длина не выходят за пределы буфера
skb.Дополнительным фактором является вычисление
tlv_array_len как skb->len - LLCP_HEADER_SIZE в типе size_t. Если длина кадра меньше размера заголовка LLCP, происходит подтекание (underflow) значения, что приводит к огромной длине и чтению памяти далеко за пределами буфера.Как работает атака
Атакующий отправляет сформированный CONNECT или CC PDU через NFC-связь. Данные попадают в диспетчер
nfc_llcp_rx_skb(), который не применяет минимальную проверку длины кадра.Далее вызывается
nfc_llcp_connect_sn(). Функция пытается извлечь имя сервиса (Service Name) из TLV-структуры. Из-за отсутствия проверки границ, указатель может указывать за пределы skb. Возвращенный указатель передается в nfc_llcp_sock_from_sn(), где используется функция memcmp() для сравнения.В результате происходит чтение памяти за пределами выделенного буфера. Это может привести к утечке данных ядра или нестабильности системы (crash), в зависимости от расположения памяти.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
- Наличие в системе модуля ядра Linux с поддержкой NFC и протокола LLCP.
- Физическая близость атакующего NFC-устройства к целевой системе (в пределах радиуса действия NFC).
- Отсутствие исправления (коммита
55c68ac93e7dacc0f5f608b9c39dd4ff48cf28e8) в текущей версии ядра.
- Возможность отправки сформированных CONNECT или CC кадров через NFC-связь.
Возможный сценарий атаки
Атакующий подносит NFC-устройство к целевой системе. После автоматической активации LLCP-связи отправляется специально сформированный CONNECT PDU с некорректной длиной TLV-поля.
Ядро обрабатывает кадр, вызывая
nfc_llcp_connect_sn(). Из-за подтекания size_t или отсутствия проверки границ, функция читает память за пределами skb. Возвращенный указатель используется в memcmp(), что приводит к OOB read.В зависимости от содержимого памяти, атакующий может получить утечку данных или вызвать сбой ядра. Подтвержденных сценариев удаленного выполнения кода (RCE) в источниках нет.
Есть ли публичный эксплойт
В доступных источниках отсутствуют сведения о публичных эксплоитах или PoC-коде для CVE-2026-80800. Уязвимость была обнаружена автоматизированными инструментами безопасности 0sec. Отсутствие публичного эксплойта не означает, что атака невозможна, но подтвержденных фактов эксплуатации в реальных инцидентах на данный момент не зафиксировано.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости в источниках не описаны. Рекомендуется использовать общие точки контроля, которые не являются специфичными для CVE-2026-80800:
- Записи в журналах ядра (dmesg, syslog) о сбоях в подсистеме NFC или LLCP.
- Необычная активность NFC-устройств, подключенных к системе.
- Сигналы о нестабильности ядра (kernel panic, oops) в момент работы NFC-модуля.
Как обнаружить атаку
Для обнаружения потенциальной эксплуатации или наличия уязвимости рекомендуется:
- Проверить версию ядра и наличие исправления (см. раздел «Проверка версии»).
- Мониторить логи ядра на предмет ошибок в подсистеме
net/nfc.
- Использовать инструменты аудита ядра (например,
auditd) для отслеживания аномальной активности в пространстве ядра, связанной с обработкой NFC-данных.
Специфичных сигнатур для IDS/IPS в источниках не приведено.
Как проверить свою версию
Для проверки версии ядра и наличия исправления используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Затем сверьте версию с официальными релизами дистрибутива. Убедитесь, что ядро содержит коммит
55c68ac93e7dacc0f5f608b9c39dd4ff48cf28e8 или более поздний. Для проверки наличия патча в исходниках можно использовать git log в репозитории ядра, если он доступен.Исправление
Основным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление.
- Примените патч из коммита
55c68ac93e7dacc0f5f608b9c39dd4ff48cf28e8.
- Обновите ядро через официальные репозитории вашего дистрибутива (например,
apt,yum,dnf), если исправление уже включено в релиз.
- Для кастомных сборок ядра интегрируйте исправление в исходный код и пересоберите модуль.
После обновления перезагрузите систему для применения нового ядра.
Временные меры защиты
Пока обновление не применено, можно снизить риск следующими временными мерами:
- Отключите модуль ядра
nfc_llcpили весь NFC-стек, если функциональность NFC не требуется.
- Ограничьте физический доступ к NFC-интерфейсу системы.
- Используйте аппаратные или программные средства для блокировки NFC-связи, если это поддерживается вашим оборудованием.
Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки.
Как проверить устранение уязвимости
Для проверки успешного применения исправления:
- Убедитесь, что версия ядра соответствует требованиям (см. «Проверка версии»).
- Проверьте наличие коммита
55c68ac93e7dacc0f5f608b9c39dd4ff48cf28e8в истории ядра, если доступно.
- Проведите функциональное тестирование NFC-связи, чтобы убедиться, что подсистема работает корректно после обновления.
- Проверьте логи ядра на отсутствие ошибок, связанных с обработкой LLCP-кадров.
Вывод
CVE-2026-80800 представляет собой уязвимость OOB read в подсистеме NFC LLCP ядра Linux. Риск актуален для систем с активным NFC-интерфейсом и отсутствием исправления.
Рекомендуется своевременно обновлять ядро и отключать неиспользуемые модули. При отсутствии официальной оценки CVSS приоритет обновления определяется политикой безопасности организации и критичностью NFC-функциональности.
Официальные источники
- NVD — CVE-2026-80800
- FIRST EPSS — CVE-2026-80800
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: bound the connect_sn TLV walk to the skb - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 09.09.2026 — Опубликована первая версия материала.
