CVE: CVE-2026-74583
Продукт: Linux Kernel
Дата публикации: 21.08.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,12%; процентиль 1,83%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В классификаторе маршрутов Linux Kernel (cls_route) обнаружена гонка, приводящая к обращению к освобождённой памяти (use-after-free). Проблема затрагивает кэш fastmap и возникает при одновременной классификации пакетов и удалении фильтров. Статья разбирает механику уязвимости, условия её проявления и методы проверки исправления.
Основные характеристики
Уязвимость относится к категории memory corruption (use-after-free) в компоненте net/sched: cls_route. CVSS 3.1 оценивает риск как HIGH (7.8) с вектором CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Для эксплуатации требуется локальный доступ с правами, позволяющими управлять сетевыми фильтрами. EPSS составляет 0.00117 (процентиль 0.01832), что указывает на низкую вероятность массового использования в настоящее время. Уязвимость была обнаружена Trend Micro ZDI и Santosh Kalluri, исправление внесено в стабильные ветки ядра.
Какие продукты и версии затронуты
Затронут Linux Kernel в версиях, содержащих код классификатора cls_route с уязвимой логикой управления кэшем fastmap. Точный диапазон версий не указан в предоставленных источниках, однако исправление было применено в нескольких стабильных ветках (stable tree) в августе 2026 года. Рекомендуется проверить наличие патча в используемой версии ядра, обратившись к официальным релизам дистрибутива или git-репозиторию Linux Kernel.
Причина уязвимости
Причина кроется в нарушении синхронизации между читателем (route4_classify) и писателем (route4_delete, route4_change) данных в кэше fastmap. Читатель записывает указатель на фильтр в кэш после того, как писатель уже сбросил кэш и запланировал освобождение памяти. Это приводит к тому, что в кэше остаётся «висячий» указатель (dangling pointer), который при последующем обращении к памяти вызывает use-after-free. Критическим моментом является отсутствие механизма, предотвращающего повторное добавление указателя в кэш после его сброса.
Как работает атака
Атака строится на создании гонки состояний (race condition). Атакующий инициирует одновременное выполнение двух процессов: один классифицирует пакеты, срабатывая на конкретный фильтр, а другой удаляет или изменяет этот же фильтр. В момент, когда читатель находит фильтр в RCU-защищённой цепочке, но ещё не записал его в кэш, писатель удаляет фильтр и сбрасывает кэш. Читатель продолжает выполнение и записывает указатель на уже освобождённый объект в кэш. При следующем пакете, попадающем под этот фильтр, ядро обращается к памяти по этому указателю, что приводит к чтению из освобождённой области памяти.
Условия успешной эксплуатации
Для успешной эксплуатации необходимо: локальный доступ к системе; права, позволяющие создавать и удалять сетевые фильтры (обычно root или CAP_NET_ADMIN); возможность генерировать трафик, проходящий через уязвимый классификатор; наличие уязвимой версии ядра без патча. Эксплуатация требует точного тайминга, что делает её сложной для удалённого атакующего без локального доступа.
Возможный сценарий атаки
Локальный атакующий с правами root создаёт фильтр в cls_route. Затем он запускает процесс, который генерирует трафик, срабатывающий на этот фильтр, и параллельно процесс, удаляющий фильтр. Из-за гонки в кэше fastmap остаётся указатель на освобождённый объект. При обработке следующего пакета ядро обращается к этому указателю, что может привести к падению ядра (DoS) или, в худшем случае, к выполнению кода в контексте ядра, если атакующий сможет контролировать содержимое освобождённой памяти.
Есть ли публичный эксплойт
Публичный эксплойт в виде готового PoC или подтверждённой эксплуатации в реальных атаках не зафиксирован. Однако уязвимость была воспроизведена с использованием mdelay(100) и стресс-теста, что подтверждает её наличие. Отчёты о воспроизведении были предоставлены Trend Micro ZDI и Santosh Kalluri. Отсутствие публичного эксплойта не означает, что он не может быть создан, учитывая доступность исходного кода и описание механики.
Признаки эксплуатации
Специфических IOC для этой уязвимости не существует. Общие точки контроля (неспецифичные) включают: мониторинг логов ядра на наличие сообщений KASAN slab-use-after-free в путях route4 fastmap; анализ сетевых правил на наличие подозрительных частых изменений фильтров cls_route; контроль за процессами, выполняющими операции с сетевыми фильтрами в сочетании с генерацией трафика.
Как обнаружить атаку
Для обнаружения можно использовать: анализ логов ядра (dmesg, journalctl) на наличие ошибок KASAN, связанных с use-after-free в cls_route; мониторинг сетевых правил (tc) на аномальную активность; применение инструментов для обнаружения гонки состояний в ядре (например, KCSAN) в тестовых средах. В продакшене акцент делается на мониторинге стабильности ядра и сетевых правил.
Как проверить свою версию
Для проверки версии ядра используйте:
uname -r, uname -a, cat /proc/version. Затем сверьте версию с официальными релизами дистрибутива или git-репозиторием Linux Kernel, чтобы убедиться, что патч (commit 47d7f7051253bdc02b1d245d87e38f16d31a74df и его порты в stable) присутствует в вашей версии. Если используется дистрибутив, проверьте наличие обновлений через пакетный менеджер.Исправление
Основной способ устранения — обновление ядра до версии, содержащей исправление. Патч был применён в стабильных ветках Linux Kernel в августе 2026 года. Для дистрибутивов: установите последние обновления ядра через пакетный менеджер. Для кастомных сборок: примените патч из git-репозитория Linux Kernel (commit 47d7f7051253bdc02b1d245d87e38f16d31a74df) и пересоберите ядро. После обновления перезагрузите систему для применения нового ядра.
Временные меры защиты
Пока обновление не установлено, можно: ограничить доступ к управлению сетевыми фильтрами (cls_route) только для доверенных пользователей; отключить использование cls_route, если это возможно, переключившись на другие классификаторы; снизить частоту изменений сетевых правил, чтобы уменьшить вероятность гонки; использовать мониторинг для быстрого обнаружения падений ядра, связанных с этой уязвимостью. Эти меры не устраняют уязвимость, но снижают вероятность её эксплуатации.
Как проверить устранение уязвимости
После обновления ядра проверьте: версию ядра с помощью
uname -r; наличие патча в исходном коде (если доступно) или в changelog дистрибутива; отсутствие сообщений KASAN slab-use-after-free в логах ядра после стресс-теста с cls_route. Проведите функциональное тестирование сетевых фильтров, чтобы убедиться, что они работают корректно после обновления.Вывод
CVE-2026-74583 представляет собой серьёзную уязвимость в Linux Kernel, требующую внимания администраторов систем, использующих cls_route. Несмотря на локальный вектор атаки, последствия могут быть критичными. Рекомендуется своевременно обновлять ядро и ограничивать доступ к сетевым фильтрам. Мониторинг логов ядра и сетевых правил поможет в раннем обнаружении аномалий.
Официальные источники
- NVD — CVE-2026-74583
- FIRST EPSS — CVE-2026-74583
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
- net/sched: cls_route: fix fastmap use-after-free on filter - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 21.08.2026 — Опубликована первая версия материала.
- 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
