CVE: CVE-2026-80630
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,52%; процентиль 41,99%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме планирования трафика Linux Kernel обнаружена логическая ошибка в модуле
sch_fq_codel. Некорректный порядок вызова функций управления очередью приводит к ложной деактивации родительских классов и wild memory access в модуле qfq. Материал описывает механику сбоя, условия его проявления и безопасные команды для проверки состояния системы.Основные характеристики
Риск связан с нарушением целостности данных в подсистеме планирования сети, что может привести к падению ядра или некорректной работе сетевых классов. Ошибка затрагивает логику обработки пакетов в режиме peek.
- Тип ошибки: Нарушение порядка операций (Logic Error) в
net/sched/sch_fq_codel.c.
- CVSS 3.1: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
- Условия атаки: Сетевой доступ, низкая сложность, отсутствие необходимости в привилегиях или взаимодействии пользователя.
- Эксплуатация: Подтверждено техническое описание и PoC в ядре (KASAN report), подтвержденная эксплуатация в реальных атаках не зафиксирована.
- EPSS: 0,52% (процентиль 41,99%).
Какие продукты и версии затронуты
Уязвимость затрагивает ядро Linux, в котором включен модуль
sch_fq_codel. Точные номера версий, в которых присутствует ошибка, не раскрыты в предоставленных источниках.- Компонент:
net/sched/sch_fq_codel.c.
- Связанный модуль:
sch_qfq(пострадавший от wild memory access).
- Статус исправления: Патч доступен в стабильных ветках ядра (stable tree).
Причина уязвимости
Причина ошибки заключается в некорректном порядке вызова функции
qdisc_tree_reduce_backlog в процессе обработки пакетов в режиме peek.В исходном коде функция вызывалась до восстановления значения
qlen (длина очереди). Если в результате операции qlen падал до нуля, но peek возвращал пакет, срабатывал callback qlen_notify родительского класса.Это приводило к ложной деактивации родительского класса, хотя в очереди
fq_codel оставался один пакет. Последствием становился wild memory access в модуле qfq и общий сбой (Oops: general protection fault).Как работает атака
Атака эксплуатирует логическую ошибку в обработке пакетов планировщиком
fq_codel. Злоумышленник может направить трафик, который вызывает срабатывание механизма drop в режиме peek.При этом порядок операций в ядре приводит к тому, что счетчик очереди
qlen временно обнуляется. Родительский класс интерпретирует это как пустую очередь и деактивируется, несмотря на наличие пакетов в дочернем классе.Далее происходит обращение к памяти, которая уже была освобождена или некорректно инициализирована (wild memory access), что фиксируется KASAN как
maybe wild-memory-access и приводит к падению ядра.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо наличие в системе модуля
sch_fq_codel и возможность отправки сетевого трафика, который будет обработан этим планировщиком.- Доступ к сети: Злоумышленник должен иметь возможность передавать пакеты на интерфейс, где настроен
fq_codel.
- Настройка QoS: В системе должен быть активен класс, использующий
fq_codelв составе иерархии планировщиков (например, в связке сqfq).
- Отсутствие патча: Ядро должно быть собрано без исправления, переставляющего вызов
qdisc_tree_reduce_backlogпосле восстановленияqlen.
Возможный сценарий атаки
Сценарий атаки начинается с отправки пакетов, которые планировщик
fq_codel должен отбросить (drop) в процессе peek.В момент отбрасывания пакетов функция
qdisc_tree_reduce_backlog вызывается преждевременно. Если это приводит к обнулению qlen, родительский класс получает сигнал о пустой очереди и деактивируется.После этого, при попытке обработки следующего пакета или при смене конфигурации (например, через
tc), происходит обращение к невалидной памяти в модуле qfq. Результатом является падение ядра (kernel panic) или некорректное поведение сетевой подсистемы.Есть ли публичный эксплойт
Доступно техническое описание уязвимости и подтвержденный PoC в виде лога KASAN, зафиксированного в процессе разработки патча. В логе отображается
Oops: general protection fault и KASAN: maybe wild-memory-access.Подтвержденная эксплуатация в реальных атаках (in-the-wild) в предоставленных источниках не зафиксирована. Ссылки на патчи в стабильных ветках ядра подтверждают, что проблема была воспроизведена разработчиками.
Признаки эксплуатации
Специфичные IOC для этой уязвимости в источниках не приведены. Однако можно использовать следующие неспецифичные признаки аномального поведения ядра:
- Записи в
dmesgилиkern.logс текстомOops: general protection fault.
- Сообщения KASAN:
maybe wild-memory-access in range [0xdead000000000120-0xdead000000000127].
- Ссылки в call trace на функции
qfq_deactivate_agg,qdisc_resetилиqdisc_graft.
- Нестабильность сетевых интерфейсов при нагрузке на планировщики QoS.
Как обнаружить атаку
Для обнаружения признаков эксплуатации или сбоев, связанных с этой уязвимостью, рекомендуется анализировать логи ядра.
- Проверка dmesg: Выполните
dmesg | grep -i "general protection fault".
- Поиск KASAN: Выполните
dmesg | grep -i "KASAN".
- Анализ call trace: Ищите упоминания
qfq_deactivate_aggилиsch_qfqв логах падений ядра.
Эти признаки не являются уникальными для CVE-2026-80630, но указывают на возможную эксплуатацию или сбой в подсистеме планирования сети.
Как проверить свою версию
Для проверки версии ядра и наличия модуля
sch_fq_codel используйте следующие безопасные команды:
Bash:
uname -r
uname -a
cat /proc/version
Чтобы проверить, включен ли модуль в ядре, выполните:
Bash:
lsmod | grep fq_codel
Если модуль отсутствует, система не подвержена этой конкретной уязвимости. Для проверки наличия патча в стабильных ветках необходимо сверять хэш ядра с официальными списками исправлений (ссылки на патчи приведены в источниках).
Исправление
Единственным подтвержденным способом устранения уязвимости является обновление ядра до версии, содержащей исправление.
- Патч в ядре: Исправление перенесено в стабильные ветки Linux (stable tree). Ссылки на коммиты: 0500af8630c3253f0dde879bd3a73a06bb2f2b3f, 097f6fc7b1ae362dd7a9444b2572162fda73b284.
- Обновление дистрибутива: Используйте штатные механизмы обновления пакетов ядра в вашей ОС (Debian, Ubuntu, RHEL и др.).
- Пересборка ядра: Если вы используете кастомное ядро, примените патч из стабильных веток и пересоберите ядро.
Временные меры защиты
Пока обновление ядра не выполнено, можно снизить риск, ограничив использование уязвимого планировщика.
- Отключение fq_codel: Если это не критично для бизнес-процессов, удалите классы, использующие
fq_codel, через утилитуtc.
- Изоляция интерфейсов: Ограничьте доступ к сетевым интерфейсам, где настроен QoS с использованием
fq_codel, доверенным хостам.
- Мониторинг: Усиленный мониторинг логов ядра на предмет
OopsиKASANсбоев.
Эти меры не устраняют уязвимость, но снижают вероятность ее срабатывания.
Как проверить устранение уязвимости
После обновления ядра необходимо убедиться, что патч применен.
- Проверка версии: Выполните
uname -rи сравните версию с официальными релизами, содержащими исправление.
- Проверка патча: В кастомных сборках ядра можно проверить наличие функции
fq_codel_peekв исходниках или бинарнике (если доступно).
- Функциональное тестирование: Проведите нагрузочное тестирование сетевых классов с
fq_codelи убедитесь, что сбоев (Oops/KASAN) не возникает.
Если сбоев нет и версия ядра соответствует требованиям, уязвимость считается устраненной.
Вывод
CVE-2026-80630 представляет собой критический риск для систем, использующих планировщик
fq_codel в составе QoS. Ошибка приводит к wild memory access и падению ядра, что может быть использовано для отказа в обслуживании.Администраторам необходимо срочно проверить наличие модуля
fq_codel в своих системах и обновить ядро до последней стабильной версии. До применения патча рекомендуется ограничить использование уязвимого планировщика и усилить мониторинг логов ядра.Официальные источники
- NVD — CVE-2026-80630
- FIRST EPSS — CVE-2026-80630
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: sch_fq_codel: Do not call qdisc_tree_reduce_backlog during peek before restoring qlen - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 30.08.2026 — Опубликована первая версия материала.
