
Скрипт для проверки системы на уязвимость к CVE-2026-23111
CVE-2026-23111 — это уязвимость ядра Linux в nf_tables, которая может быть использована для локального повышения привилегий непривилегированным пользователем в системах, где доступны пользовательские пространства имён и nftables.[1][2] Публичные рекомендации от производителей и правительственных организаций описывают её как локальную проблему, затрагивающую дистрибутивы Linux, и подчёркивают, что основным исправлением является установка патча.[3][4]
Этот репозиторий содержит защитный проверочный скрипт, предназначенный для оценки того, создаёт ли хост технические условия, связанные с данной CVE, не предоставляя эксплойт для повышения привилегий. Он проверяет соответствующие условия ядра и среды выполнения, опционально загружает модуль nf_tables для полного функционального тестирования, пытается выполнить контролируемый непривилегированный путь проверки с помощью unshare и nft, собирает локальные диагностические трассы и классифицирует хост по операционным вердиктам, таким как «вероятно безопасен», «заблокирован локальной политикой» или «доступен уязвимый путь».[1][5]
Согласно NVD, CVE-2026-23111 — это уязвимость ядра Linux в nf_tables, исправленная как логическая ошибка в netfilter, которая может быть использована для локального повышения привилегий от непривилегированного пользователя через пользовательские пространства имён и nftables в уязвимых конфигурациях.[1] Уведомление безопасности Ubuntu описывает тот же путь эксплуатации высокого уровня и отслеживает состояния уязвимых и исправленных пакетов по выпускам.[2]
Red Hat сообщает, что локальный пользователь с низким уровнем привилегий может использовать проблему для отказа в обслуживании или потенциально для повышения привилегий, и документирует путь смягчения, основанный на предотвращении загрузки модуля nf_tables, если это приемлемо для эксплуатации.[3] Национальные рекомендации от Канадского центра кибербезопасности также указывают затронутым организациям на обновления от производителей и упоминают регенерацию initramfs при использовании блокирующих модуль механизмов смягчения.[4]
Скрипт предназначен для защитной оценки подверженности, а не для эксплуатации. Он предназначен для:
CONFIG_USER_NS и CONFIG_NF_TABLES.[1]kernel.unprivileged_userns_clone и user.max_user_namespaces для оценки доступности непривилегированных пользовательских пространств имён.install nf_tables /bin/false) или слабого чёрного списка для модуля nf_tables./proc/kallsyms для уязвимого символа (nft_map_catchall_activate) по сравнению с исправленным символом (nft_catchall_set_activate) до любого взаимодействия с модулем.nf_tables через modprobe при указании --allow-load-module (см. ниже) и автоматической выгрузки при выходе.unshare -U -n --map-root-user + nft при загруженном модуле, с записью stdout, stderr и недавних сообщений ядра.unshare --user действительно создаёт пространство имён и что CAP_NET_ADMIN работает внутри него, чтобы подтвердить, действительно ли ограничения AppArmor или SELinux эффективны.Скрипт сохраняет журналы в подкаталог каталога скрипта и удаляет их по умолчанию, если не используется --keep-logs.
По умолчанию скрипт никогда не загружает nf_tables. Если модуль ещё не загружен на момент запуска скрипта, все функциональные тесты nft пропускаются, и вердикт выводится только на основе версии ядра, отпечатка kallsyms, конфигурации modprobe, журнала изменений RPM и свидетельств политики LSM.
Этот консервативный стандарт позволяет избежать непреднамеренного расширения поверхности атаки на производственных хостах. Для включения полного функционального тестирования на контролируемой или инструментированной системе используйте --allow-load-module от root (см. ниже).
# По умолчанию — без загрузки модуля, вердикт только на основе свидетельств политики
./check_cve_2026_23111.sh
./check_cve_2026_23111.sh --color
./check_cve_2026_23111.sh --keep-logs
./check_cve_2026_23111.sh --color --keep-logs
# Полное функциональное тестирование — загружает (и выгружает) nf_tables, требует root
sudo ./check_cve_2026_23111.sh --allow-load-module
sudo ./check_cve_2026_23111.sh --allow-load-module --color --keep-logs
| Параметр | Описание |
|---|---|
--allow-load-module | Разрешить скрипту загружать nf_tables через modprobe, если модуль ещё не загружен. Включает полный тест пути catchall в nft и тест эффективности CAP_NET_ADMIN. Модуль автоматически выгружается при выходе. Требует root. Отклоняется, если уже установлен жёсткий запрет modprobe. Используйте только на непроизводственных или инструментированных системах. |
--color | Включить цветной вывод в stdout, если терминал поддерживает. |
--keep-logs | Сохранять журналы и трассы в каталоге скрипта вместо удаления при выходе. |
--help | Показать информацию об использовании и выйти. |
--allow-load-moduleИспользуйте --allow-load-module, когда вам нужен вердикт с наибольшей степенью уверенности на изолированной, непроизводственной или специально созданной тестовой ВМ. Типичные сценарии:
Не используйте --allow-load-module на производственных хостах, где nf_tables намеренно заблокирован или где его загрузка нарушит политику усиления безопасности.
--allow-load-moduleПеред попыткой загрузить модуль скрипт выполняет следующие проверки и завершает работу с ошибкой, если любая из них не выполняется:
install nf_tables /bin/false) не должен присутствовать в /etc/modprobe.d/.modprobe должна быть доступна в системе.root (uid 0).Если модуль успешно загружен скриптом, при выходе вызывается modprobe -r nf_tables через обработчик cleanup(), независимо от того, как завершился скрипт (успех, ошибка или CTRL+C).
Скрипт использует операционные вердикты, а не результаты эксплуатации: