The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

ModuleJail для блокировки неиспользуемых модулей ядра Linux

17.05.2026 22:46 (MSK)

Джаспер Нюйенс (Jasper Nuyens), основатель организации Linux Belgium, создавший надстройку для использования Linux в информационной системе автомобилей Tesla, предложил простой способ снизить поверхность атаки на ядро Linux для снижения вероятности компрометации на фоне всплеска выявления опасных уязвимостей при помощи AI. Так как многие уязвимости находят в специфичных модулях ядра, доступных для автозагрузки, но обычно не применяемых большинством пользователей, Джаспер предложил по умолчанию блокировать неиспользуемые в текущей системе или в общем виде редко используемые модули.

В ядре доступно несколько тысяч модулей, но в большинстве систем используется только несколько сотен, а остальные остаются доступны для загрузки и потенциально могут содержать уязвимости. Идея реализована через скрипт ModuleJail, который определяет список используемых в текущей системе модулей (через /proc/modules) и автоматически помещает неиспользуемые модули в чёрный список. Скрипт написан на shell, использует распространённые системные утилиты (достаточно busybox) и распространяется под лицензией GPLv3.

Скрипт поддерживает выполнение в Debian, Ubuntu, RHEL, Fedora, SUSE, AlmaLinux, Rocky Linux, Alpine и Arch Linux, и в результате своей работы генерирует файл /etc/modprobe.d/modulejail-blacklist.conf, который штатно используется в системе для отключения автозагрузки модулей ядра. Подобный подход позволяет превентивно защитить свою систему, не прибегая к загрузке специализированных модулей ядра или выполнения дополнительных фоновых процессов для мониторинга за системой.

При необходимости пользователю предоставлена возможность добавления в белый список модулей, которые в данным момент не загружены, но потенциально могут использоваться в работе. Также доступны для включения профили, допускающих использование наиболее необходимых модулей для типовых применений системы. Предложены профили "minimal" (только самые важные модули и основные ФС), "conservative" (+ типовые драйверы для серверов и виртуальных машин) и desktop (+ драйверы для WiFi, Bluetooth, звука и видео).

Отдельной предлагается скрипт cve-watch.sh, осуществляющий мониториг списка рассылки linux-cve-announce и REST API nvd.nist.gov на предмет обнаружения уязвимостей в незаблокированных модулях ядра. Как правило CVE-идентификаторы уязвимостей раскрываются раньше устранения проблемы в дистрибутивах, что позволяет на ранних стадиях блокировать проблемы обходным путём.

Дополнение 1: Опубликован скрипт похожего назначения, блокирующий автозагрузку модулей ядра спустя 3 минуты после загрузки системы, за исключением модулей из белого списка /etc/restricted-module-load.whitelist. Для инструментария kmod, используемого для управления загрузкой модулей ядра, подготовлен патч, добавляющий режим работы на основе белого списка, по умолчанию разрешающего загрузку только избранных модулей.

Дополнение 2: В своё время проект grsecurity реализовал небольшой патч, позволяющий разрешить автоматическую загрузку модулей ядра только приложениям, запущенным с правами root.

  1. Главная ссылка к новости (https://github.com/jnuyens/mod...)
  2. OpenNews: FreedomEV - открытая надстройка для информационной системы автомобилей Tesla
  3. OpenNews: Выпуск LKRG 1.0.0 для защиты от эксплуатации уязвимостей в ядре Linux
  4. OpenNews: Fragnesia - уязвимость в ядре Linux, позволяющая получить root через изменение страничного кэша
  5. OpenNews: Модель угроз и особенности оценки уязвимостей в ядре Linux
  6. OpenNews: Предложен killswitch для экстренного отключения уязвимой функциональности в ядре Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65466-modulejail
Ключевые слова: modulejail, kernel, linux
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (28) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Tron is Whistling (?), 23:26, 17/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Самый лёгкий способ всерьёз снизить "поверхность атаки" - выдернуть кабель питания.
     
     
  • 2.7, Аноним (7), 00:02, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вам просто не хватает квалификации увидетьдейственные методы. например спекулятивное выплнение косвенно можно отключить для защиты от уязвимостей в процессорах https://stackoverflow.com/questions/48360238/how-can-the-l1-l2-l3-cpu-caches-b Так же и тут я уверен возможно исхитрится и отключить всякие Кэши, возможно прийдётся редактировать исходный код. Да будут большие потери в производительнсти.
     
     
  • 3.8, Аноним (7), 00:04, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кэши это зло. :D
     
  • 3.9, Tron is Whistling (?), 00:08, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но проще, быстрее и надёжнее всё-таки выдернуть кабель питания.
    И ещё SSD в микроволновку, чтобы избежать оффлайн-атак. HDD в кислоту.
     
  • 2.15, Frestein (ok), 00:40, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ZealOS в продакшен
     

  • 1.2, dannyD (?), 23:27, 17/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +15 +/
    что только не делают чтоб своё ядро не собирать.
     
  • 1.4, Аноним (4), 23:50, 17/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Чего стоит немного подумать и забрать именно свои 50 копеек из этих предложенных нескольких сотен рублей. Ну это же элементарно, ага
     
  • 1.5, НектоОткудаТо (?), 23:57, 17/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Разумная заплатка широкого профиля.
    Но как-то странно, что реализована она только сейчас.
    А не лет 10-15 назад.
     
     
  • 2.17, Аноним (17), 01:03, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Что разумного то? Итак большинство пользователей, включая некоторых админов не скажут зачем нужен тот или иной модуль, а вы хотите чтобы они еще списки составили. Будет как с apparmor.
     
     
  • 3.18, Аноним (18), 01:21, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    что значит некоторых? типа админ должен все тысячи модулей знать? может гдето в тибете и учат гуру навистывать пинги в модем, но большая часть тех тысяч это лютая экзотика аля ipx протокол который нафиг не нужен
     
     
  • 4.23, anonymos (?), 02:28, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Админ должен знать каждый ядерный модуль в администрируемой системе!
    Если админ этого не знает, значить это не админ - это "Анукейщик" )
     
  • 3.19, НектоОткудаТо (?), 01:26, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я опираюсь на текст новости.
    Из него следует, что утомлённым админам ничего говорить не надо. А надо им один раз запустить скрипт. Который - цитата - "определяет список используемых в текущей системе модулей".
    Это лучше чем ничего и никого к рассказам не принуждает)
     
     
  • 4.25, anonymos (?), 02:46, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А что, команду lsmod у вас не завезли?
     
     
  • 5.26, НектоОткудаТо (?), 02:55, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Не. Мы под санкциями - нам lsmod не возят.
    А вот бельгийцу завезли, и он как раз его в ModuleJail и употребил.
     

  • 1.10, Аноним (10), 00:14, 18/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Костыли-костылики
     
  • 1.14, Аноним (14), 00:36, 18/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Если на то пошло, то нужно пересматривать политику управления модулями в системе, а не костыли городить.
     
     
  • 2.20, НектоОткудаТо (?), 01:28, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А какой бы Вы видели такую пересмотренную политику?
     
  • 2.21, Аноним (18), 01:30, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    как? ну реально, есть полка на ней какието вещи, кто захотел подошел и взял, любое усложнение это очереди, задержки и негатив, вон микрософт пилит ядро "микро" и чета не особото получается - по функционалу так и остались в 2000х, а всякие рейды и вланы, реализованы настолько отвратно, что никто и не пользуется
     
     
  • 3.22, Аноним (14), 02:01, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > любое усложнение это очереди, задержки и негатив

    а какой-то васянский скрипт в системе вместо нормального конфига не усложнение?

     

  • 1.16, 1 (??), 00:45, 18/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    В чем прикол писАть на sh, внутри которого писАть на python?
     
  • 1.24, мяв (?), 02:30, 18/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    куда логичнее просто запретить загрузку новых модулей, как этотделает лкрг.
    а не блеклистить все.
    это как минимум менее костыльно, кажется. как бы. свой модуль не-рут не притащит, конешно.
    но сам факт как бы, что загрузка модулей таки разрешена.
    и !
    я уж молчу. что это ломает частенько функионал. именно в том виде, каком оно тут.
    надо сначала систему превести в состояние, когда используется все необходимое (т.е. все модули подгрузились), потом загрузку этих модулей сделать обязательной в етс.
    и только потом уже форсировать запрет.
    опыт лкрг прекрасно уже все это показал и показал, как надо, хз, зачем велик
     
  • 1.27, Аноним (27), 03:15, 18/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Охх я чувствую что пройдёт время и они узнают что можно собрать ядро вообще без поддержки модулей(или уже нельзя?)
    И оставить в нем только то что реально нужно целевой системе.
    Вот ещё года 3-4 и они узнают эту фичу, точней нет они переизобретут её.
     
     
  • 2.28, anonymos (?), 04:17, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас переизобрести пока не могут, нет достаточно продвинутого ИИ
    Но уже скоро все должно изменится )))
     
  • 2.30, dannyD (?), 06:44, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >>...они узнают что можно собрать ядро вообще...

    поправил, не благодари.

    не знаю как в любимой всеми бубунточке, но в дедушке в компилятор искаропки не входит.


    считайте, что это вброс.

     
  • 2.32, Michael (??), 07:08, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Всё ещё можно. И всё необходимое вкомпилить, и вообще поддержку модулей отключить. Но второе не очень удобно.
     

  • 1.31, Ilya Indigo (ok), 07:02, 18/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вместо устранения причины - борьба со следствием.
    Если админ точно знает что ему нужно а что нет он просто соберёт статическое ядро без модулей!
    Пользователь же никогда не знает какую именно железку ему придётся подключить и для них и предназначены модули, но составить списки нужных он не сможет.

    А использовать тот же AI для поиска уязвимостей во всех модулях и устранить их не вариант?

     
     
  • 2.34, Аноним (34), 07:23, 18/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Если админ точно знает что ему нужно

    Сюрреализм

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру