ModuleJail: новий інструмент для безпеки ядра Linux
ModuleJail: новий інструмент для посилення безпеки ядра Linux
Після трьох критичних уразливостей ядра Linux, таких як Copy Fail, Dirty Frag та Fragnesia, які були виявлені всього за два тижні, спільнота Linux почала шукати рішення для вирішення проблеми. Одним з запропонованих рішень став Kernel Killswitch, а тепер з’явилася аналогічна ідея — ModuleJail. Це проект жорсткого захисту Linux, який блокує невикористовувані модулі ядра, щоб зменшити атаку з локальних підвищень привілеїв.
Як працює ModuleJail?
ModuleJail реалізовано у вигляді єдиного POSIX shell-скрипта. Він сканує поточно завантажені модулі, порівнює їх з повним деревом модулів, що знаходяться у /lib/modules/$(uname -r), і створює modprobe.d чорний список для невикористовуваних модулів. За замовчуванням чорний список зберігається за адресою /etc/modprobe.d/modulejail-blacklist.conf.
Більшість систем Linux містять тисячі модулів ядра, але використовують лише невелику вибірку. Якщо невикористовуваний модуль містить уразливість підвищення привілеїв, система залишалася під загрозою, якщо модуль можна завантажити пізніше. ModuleJail вирішує цю проблему, запобігаючи автоматичному завантаженню невикористовуваних модулів.
Безпека без внесення змін до уразливостей
Важливо розуміти, що ModuleJail не виправляє ці уразливості чи не визначає вразливі модулі. Замість цього, він бере більш широкий оборонний підхід, обмежуючи доступ до непотрібної функціональності ядра.
Згідно з документацією, ModuleJail зберігає модулі, вже завантажені на хост, вбудовану основу з основних модулів і будь-які модулі, зазначені в необов’язковому білому списку системного адміністратора. Інші модулі заносять до чорного списку за допомогою директиви <module> /bin/true в файлі, сумісному з modprobe.d.
Обмеження та профілі ModuleJail
ModuleJail призначений як одноразовий інструмент посилення безпеки, а не як фоновий сервіс. Він не має демонів, постійного моніторингу, перевірки бази даних CVE, оцінки ризику модулів або функцій штучного інтелекту. Його підхід повністю залежить від того, чи модуль зараз завантажений на перевіреній системі.
Ця модель безпеки також визначає його основне обмеження. ModuleJail слід запускати лише після того, як система досягне сталого стану, з усіма запущеними службами, змонтованими файловими системами і завантаженими необхідними драйверами. Запуск його надто рано може привести до блокування модулів, необхідних пізніше, що потенційно порушує роботу апаратури, зберігання, мережі або функціональність додатків.
ModuleJail пропонує три базові профілі. Консервативний профіль за замовчуванням призначений для віртуалізованих або фізичних серверів. Профіль для настільних комп’ютерів зберігає додаткові драйвери Wi-Fi, Bluetooth, аудіо та відео для ноутбуків і робочих станцій. Мінімальний профіль залишає лише основні файлові системи та важливі модулі ядра.
Адміністратори можуть редагувати місцевий білий список в скрипті, щоб зберегти певні модулі, незалежно від того, чи вони завантажені, коли працює ModuleJail. Це корисно для модулів, які потрібні лише іноді або за певних умов експлуатації.
За словами розробників, інструмент було протестовано на Ubuntu 24.04 LTS, Debian 13.4 та Rocky Linux 9.7 за допомогою живих хостів, а також проводились додаткові тести на базі контейнерів для Arch Linux, Alpine Linux та openSUSE Tumbleweed. Доступні попередньо зібрані пакунки DEB та RPM для систем Debian/Ubuntu та RHEL/Fedora/Alma/Rocky.
Зворотні зміни і подальші дії
Однак повернення змін є повністю ручним процесом. Адміністратори можуть видалити /etc/modprobe.d/modulejail-blacklist.conf і перезавантажити, або перезавантажити окремі модулі за допомогою modprobe для поточної сесії. Чорний список буде повторно застосовано після перезавантаження, якщо файл не видалено.
Для більш детальної інформації можна ознайомитися з сторінкою проекту на GitHub.




