CVE: CVE-2026-80798
Продукт: Linux Kernel
Дата публикации: 04.09.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,23%; процентиль 14,22%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В модуле NFC LLCP ядра Linux отсутствует проверка длины входящего пакета перед разбором заголовка. Это позволяет устройству в радиусе действия NFC вызвать чтение памяти за пределами буфера.
Исправление уже встроено в стабильные ветки ядра. Статья описывает механику ошибки, условия доступа и порядок проверки системы.
Основные характеристики
Уязвимость позволяет нарушителю с NFC-устройством вблизи системы вызвать чтение данных за пределами выделенной области памяти в ядре. Это может привести к утечке информации или нестабильности системы, хотя подтверждённая эксплуатация в реальных атаках не зафиксирована.
- Тип ошибки: Out-of-bounds read (чтение за пределами буфера) в функции обработки пакетов LLCP.
- CVSS: Официальная оценка NVD на момент публикации не назначена.
- Условия атаки: Атакующий должен находиться в радиусе действия NFC-сигнала (обычно несколько сантиметров) и иметь возможность инициировать NFC-DEP.
- Факт эксплуатации: Подтверждено воспроизведение через
KFENCEна тестовой веткеlinux-next.
- EPSS: 0,23% (процентиль 14,22%), что указывает на низкую вероятность массовой эксплуатации в ближайшем будущем.
Какие продукты и версии затронуты
Уязвимость затрагивает все версии ядра Linux, содержащие модуль NFC LLCP, начиная с коммита
d646960f7986 ("NFC: Initial LLCP support").- Версии ядра: Все стабильные ветки, в которые не внесён патч
95674f506c6376d6722a23144c9acd26609771ed.
- Компонент:
net/nfc/llcp_core.c.
- Платформы: Любые системы с поддержкой NFC и активным модулем
nfc_llcp.
Точный список версий, в которые уже внесено исправление, публикуется в релизных заметках дистрибутивов и на git.kernel.org.
Причина уязвимости
Причина ошибки заключается в отсутствии проверки длины входящего пакета (PDU) перед его разбором. Каждый LLCP PDU должен начинаться с двухбайтового заголовка, однако функция
nfc_llcp_rx_skb() не проверяет, что буфер содержит хотя бы эти два байта.При обработке пакетов типа CONNECT или CC код вычисляет длину массива TLV как
skb->len - LLCP_HEADER_SIZE. Если длина пакета меньше размера заголовка, вычитание приводит к переполнению типа size_t, в результате чего получается огромное значение. Последующий обход TLV-структуры выходит за пределы выделенной области памяти, вызывая out-of-bounds read.Как работает атака
Атакующий использует NFC-устройство в радиусе действия для отправки специально сформированного пакета LLCP, длина которого меньше размера обязательного заголовка.
После активации NFC-DEP ядро автоматически переходит к обработке LLCP. Функция
__nfc_llcp_recv() принимает пакет и передаёт его в nfc_llcp_rx_skb(). Из-за отсутствия проверки длины, код пытается прочитать заголовок и вычислить длину полезной нагрузки, что приводит к чтению памяти за пределами буфера skb.Исправление добавляет проверку
pskb_may_pull() в начале функции __nfc_llcp_recv(), которая гарантирует наличие заголовка в линейной части буфера перед дальнейшей обработкой.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо выполнить следующие условия:
- Физическая близость: Устройство атакующего должно находиться в радиусе действия NFC-сигнала жертвы (обычно 10–20 см).
- Активность NFC: Модуль NFC на целевой системе должен быть включён и готов к обмену данными.
- Инициация NFC-DEP: Атакующий должен инициировать процесс NFC-DEP, после чего система автоматически активирует LLCP-соединение.
- Отсутствие аутентификации: LLCP-связь устанавливается автоматически после NFC-DEP, без необходимости предварительной аутентификации.
Возможный сценарий атаки
Атакующий подходит к целевому устройству с NFC-модулем. Используя собственное NFC-устройство, он инициирует NFC-DEP. После успешного рукопожатия система автоматически активирует LLCP.
Атакующий отправляет пакет LLCP, длина которого меньше
LLCP_HEADER_SIZE. Ядро принимает пакет, и функция nfc_llcp_rx_skb() пытается разобрать его. Из-за переполнения при вычислении длины TLV-массива происходит чтение памяти за пределами буфера.В результате атакующий может получить доступ к данным, находящимся в памяти ядра рядом с буфером пакета, или вызвать сбой системы. В описании уязвимости указано, что ошибка воспроизводится через
KFENCE на linux-next.Есть ли публичный эксплойт
Публичный эксплойт в виде готового кода для массовой атаки не опубликован. Однако в описании уязвимости указано, что ошибка была воспроизведена с помощью
KFENCE (Kernel Fuzzing) через /dev/virtual_nci на ветке linux-next.Это подтверждает техническую возможность эксплуатации, но не означает, что эксплойт используется в реальных атаках. Отсутствие сведений о массовой эксплуатации не исключает наличие скрытых эксплойтов у сторонних исследователей.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости в открытых источниках не описаны. Ниже приведены общие, неспецифичные точки контроля, которые могут указывать на подозрительную активность NFC-модуля:
- Журналы ядра: Записи о сбоях или предупреждениях
KFENCE/KASANв модулеnfc_llcp.
- Активность NFC: Непредусмотренные попытки установления NFC-соединений в местах, где NFC не ожидается.
- Сбои системы: Внезапные перезагрузки или ошибки ядра, связанные с обработкой NFC-пакетов.
Как обнаружить атаку
Для обнаружения признаков эксплуатации или аномальной активности NFC-модуля рекомендуется использовать следующие методы:
- Мониторинг журналов: Анализ логов ядра (
dmesg,journalctl) на наличие сообщений об ошибках в модулеnfc_llcpили срабатыванийKFENCE.
- Контроль NFC-событий: Отслеживание попыток активации NFC-DEP и LLCP-соединений через системные логи или специализированные инструменты мониторинга.
- Проверка конфигурации: Убедиться, что NFC-модуль отключён, если он не используется, или что доступ к нему ограничен.
Как проверить свою версию
Для проверки версии ядра и наличия исправления выполните следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с релизными заметками вашего дистрибутива. Если версия ядра содержит коммит
95674f506c6376d6722a23144c9acd26609771ed, система защищена. Для проверки наличия конкретного коммита в исходниках ядра можно использовать git log в репозитории ядра, если он доступен локально.Исправление
Единственный надёжный способ устранения уязвимости — обновление ядра Linux до версии, содержащей патч
95674f506c6376d6722a23144c9acd26609771ed.- Обновление через дистрибутив: Используйте штатные средства обновления (
apt,yum,dnf,zypperи т.д.) для установки последнего стабильного ядра.
- Проверка патча: Убедитесь, что в вашем ядре присутствует коммит
95674f506c6376d6722a23144c9acd26609771ed(см. git.kernel.org).
- Перезагрузка: После обновления ядра требуется перезагрузка системы для применения изменений.
Временные меры защиты
До обновления ядра можно снизить риск, применив следующие временные меры:
- Отключение NFC: Если NFC-модуль не используется, отключите его через
rfkillили в настройках системы.
- Ограничение доступа: Ограничьте физический доступ к устройству, чтобы предотвратить приближение посторонних NFC-устройств.
- Использование
KFENCE: ВключитеKFENCE(если доступно) для раннего обнаружения out-of-bounds ошибок в ядре.
Эти меры не устраняют уязвимость, но снижают вероятность её эксплуатации.
Как проверить устранение уязвимости
Для проверки успешного применения исправления выполните следующие шаги:
- Проверка версии ядра: Убедитесь, что система работает на обновлённом ядре (
uname -r).
- Проверка наличия патча: Если у вас есть доступ к исходникам ядра, проверьте наличие коммита
95674f506c6376d6722a23144c9acd26609771edв истории изменений.
- Функциональное тестирование: Проведите тестирование NFC-связи, чтобы убедиться, что модуль работает корректно после обновления.
- Мониторинг: Продолжайте отслеживать журналы ядра на наличие ошибок в модуле
nfc_llcp.
Вывод
Уязвимость CVE-2026-80798 представляет собой риск для систем с активным NFC-модулем, так как позволяет нарушителю в радиусе действия вызвать чтение памяти за пределами буфера. Исправление уже доступно в стабильных ветках ядра Linux.
Рекомендуется как можно скорее обновить ядро до версии, содержащей патч
95674f506c6376d6722a23144c9acd26609771ed. Если обновление невозможно в ближайшее время, отключите NFC-модуль и ограничьте физический доступ к устройству. Регулярно проверяйте журналы ядра на наличие признаков аномальной активности.Официальные источники
- NVD — CVE-2026-80798
- FIRST EPSS — CVE-2026-80798
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
- nfc: llcp: reject PDUs shorter than the LLCP header - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 09.09.2026 — Опубликована первая версия материала.
