| Джаспер Нюйенс (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. |