CVE-2026-80799 в Linux Kernel: OOB read в NFC LLCP, уязвимые версии и защита

CVE: CVE-2026-80799
Продукт: Linux Kernel
Дата публикации: 04.09.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,23%; процентиль 14,22%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В подсистеме NFC ядра Linux обнаружена уязвимость, позволяющая нарушителю вызвать чтение памяти за границами буфера. Ошибка связана с некорректной валидацией TLV-структур и переполнением смещения. Статья описывает механику атаки, условия эксплуатации и способы проверки исправления.

Основные характеристики​


Уязвимость позволяет нарушителю, имеющему доступ к NFC-интерфейсу, заставить ядро прочитать данные за пределами выделенного буфера. Это может привести к утечке конфиденциальной информации или отказу в обслуживании.

  • Тип ошибки: Out-of-Bounds Read (OOB Read) и Integer Overflow (u8 wrap).
  • CVSS: Официальная оценка CVSS в NVD на момент публикации не присвоена.
  • Условия атаки: Требуется физический доступ к NFC-устройству или возможность передачи данных через NFC-интерфейс.
  • Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
  • EPSS: 0,23% (процентиль 14,22%).

Какие продукты и версии затронуты​


Уязвимость затрагивает подсистему NFC в ядре Linux, а именно файл net/nfc/llcp_commands.c. Ошибка присутствует в версиях ядра, где функция nfc_llcp_parse_gb_tlv() использует переменную offset типа u8 для обработки буферов, длина которых может превышать 255 байт.

  • Компонент: net/nfc/llcp_commands.c
  • Функции: nfc_llcp_parse_gb_tlv(), nfc_llcp_parse_connection_tlv()
  • Статус исправления: Патч включен в стабильные ветки ядра Linux (stable tree).

Причина уязвимости​


Причина уязвимости кроется в некорректной обработке TLV (Type-Length-Value) структур в парсерах NFC LLCP. Разработчик использовал переменную offset типа u8 (8 бит) для отслеживания позиции в буфере, тогда как длина буфера tlv_array_len имеет тип u16 (16 бит).

Когда смещение превышает 255, происходит переполнение (wrap-around), и offset сбрасывается в 0. Это приводит к бесконечным циклам или повторной обработке данных. Кроме того, перед чтением заголовка TLV (2 байта) и тела (length байт) отсутствуют проверки границ буфера, что позволяет читать память за его пределами.

Как работает атака​


Атакующий направляет специально сформированные данные через NFC-интерфейс в функцию nfc_llcp_set_remote_gb(). Эта функция передает данные напрямую в nfc_llcp_parse_gb_tlv() без дополнительной валидации.

В парсере offset увеличивается при обработке каждого TLV-элемента. Если суммарная длина элементов превышает 255 байт, offset переполняется.

Атакующий может также сформировать TLV с заголовком, указывающим на длину, которая превышает фактический размер буфера. Из-за отсутствия проверки offset + 2 + length <= tlv_array_len ядро читает данные за границами буфера.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости атакующему необходимо:

  • Физический доступ: Наличие NFC-устройства в радиусе действия или возможность передачи данных через NFC-интерфейс.
  • Загруженный модуль: Подсистема NFC должна быть активна в ядре.
  • Специфичный payload: Формирование TLV-структур, вызывающих переполнение u8 или выход за границы буфера.

Возможный сценарий атаки​


Сценарий атаки начинается с установления NFC-соединения. Атакующий отправляет пакет с TLV-данными, где суммарная длина превышает 255 байт. Функция nfc_llcp_parse_gb_tlv() начинает обработку, и offset переполняется, возвращаясь к нулю.

В результате парсер начинает повторно читать уже обработанные данные или переходит к чтению памяти за пределами буфера. Если атакующий контролирует содержимое памяти, он может извлечь конфиденциальные данные. В худшем случае, чтение недопустимой области памяти приводит к сбою ядра (kernel panic) и отказу в обслуживании.

Есть ли публичный эксплойт​


На момент публикации CVE-2026-80799 публичные эксплойты или PoC (Proof of Concept) в открытом доступе не зафиксированы. Официальные источники содержат только описание уязвимости и патч для исправления. Отсутствие публичного эксплойта не гарантирует, что уязвимость не может быть эксплуатирована, но снижает вероятность массовых атак в краткосрочной перспективе.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости в открытых источниках не описаны. Однако можно обратить внимание на следующие неспецифичные признаки:

  • Сбои ядра: Записи в dmesg или системных журналах о kernel panic или segfault в подсистеме NFC.
  • Аномальная активность NFC: Частые попытки установления NFC-соединений с неизвестными устройствами.
  • Аномальное потребление памяти: Внезапные скачки потребления памяти процессами, связанными с NFC-драйверами.

Как обнаружить атаку​


Для обнаружения попыток эксплуатации можно использовать следующие методы:

  • Мониторинг логов: Анализ dmesg и syslog на наличие ошибок в подсистеме NFC, особенно связанных с nfc_llcp.
  • Сетевой мониторинг: Отслеживание аномальной активности на NFC-интерфейсе, если это возможно в рамках архитектуры системы.
  • Проверка версии ядра: Убедиться, что используется версия ядра, содержащая исправление (см. раздел «Проверка версии»).

Как проверить свою версию​


Для проверки версии ядра и наличия исправления используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Сравните полученную версию с официальными релизами ядра Linux, содержащими коммит 78b20c8eeacd2e44a2d8a4cb5316d3c521d90911. Если версия ядра старше даты коммита, система уязвима.

Исправление​


Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей патч. Патч изменяет тип переменной offset с u8 на u16 и добавляет проверки границ буфера перед каждым доступом к данным.

  • Обновление ядра: Установите последнюю доступную версию ядра от вашего дистрибутива.
  • Перезагрузка: После обновления ядра выполните перезагрузку системы для применения изменений.

Временные меры защиты​


Пока обновление ядра не установлено, можно снизить риск эксплуатации:

  • Отключение NFC: Если NFC-интерфейс не используется, отключите его на уровне ядра или через rfkill.
  • Ограничение доступа: Ограничьте физический доступ к устройствам с NFC-интерфейсом.
  • Мониторинг: Усиленный мониторинг логов на предмет аномальной активности в подсистеме NFC.

Как проверить устранение уязвимости​


Для проверки успешного применения исправления:

  1. Убедитесь, что версия ядра соответствует или превышает версию, содержащую коммит 78b20c8eeacd2e44a2d8a4cb5316d3c521d90911.
  2. Проверьте, что функция nfc_llcp_parse_gb_tlv() использует переменную offset типа u16 (это можно сделать через анализ исходного кода ядра, если он доступен).
  3. Проведите функциональное тестирование NFC-интерфейса, чтобы убедиться в его работоспособности после обновления.

Вывод​


CVE-2026-80799 представляет собой серьезную уязвимость в подсистеме NFC ядра Linux, позволяющую нарушителю вызвать чтение памяти за границами буфера. Хотя публичные эксплойты отсутствуют, риск эксплуатации существует, особенно в системах с активным NFC-интерфейсом. Рекомендуется как можно скорее обновить ядро до исправленной версии и при необходимости отключить NFC-интерфейс.

Официальные источники​


  1. NVD — CVE-2026-80799
  2. FIRST EPSS — CVE-2026-80799
  3. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  4. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  5. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  6. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  7. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  8. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  9. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree
  10. nfc: llcp: fix OOB read and u8 offset wrap in TLV parsers - kernel/git/stable/linux.git - Linux kernel stable tree

История обновлений статьи​


  • 09.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ