Вразливість у firejail, що дозволяє отримати root-доступ у системі

В утиліті для ізольованого виконання програм Firejail виявлено вразливість (CVE-2022-31214), що дозволяє локальному користувачеві отримати права root в основній системі. У відкритому доступі є робочий експлоїт, перевірений у актуальних випусках openSUSE, Debian, Arch, Gentoo та Fedora із встановленою утилітою firejail. Проблема усунена у випуску firejail 0.9.70. Як обхідний шлях захисту можна виставити в налаштуваннях (/etc/firejail/firejail.config) параметри join no і force-nonewprivs yes.

Firejail використовує для ізоляції механізм просторів імен (namespaces), AppArmor та фільтрацію системних викликів (seccomp-bpf) у Linux, але для налаштування ізольованого запуску вимагає підвищених привілеїв, які отримує через прив'язку до утиліти прапора suid root або запуск за допомогою sudo. Вразливість викликана помилкою в логіці роботи опції «-join= », призначеної для підключення до вже працюючого ізольованого оточення (аналог команди login для sandbox-оточення) з визначенням оточення за ідентифікатором процесу, що працює в ньому. На етапі до скидання привілеїв firejail визначає привілеї зазначеного процесу і застосовує їх до нового процесу, що підключається до оточення за допомогою опції join.

Перед підключенням здійснюється перевірка, чи запущений вказаний процес в оточенні firejail. Ця перевірка оцінює наявність файлу /run/firejail/mnt/join. Для експлуатації вразливості атакуючий може симулювати фіктивне не ізольоване оточення firejail, використовуючи простір точок монтування (mount namespace), після чого підключитися до нього за допомогою опції join. Якщо в налаштуваннях не активовано режим заборони отримання додаткових привілеїв у нових процесах (prctl NO_NEW_PRIVS), firejail підключить користувача до фіктивного оточення та спробує застосувати налаштування простору імен ідентифікаторів користувачів (user namespace) процесу init (PID 1).

У результаті підключений через «firejail-join» процес виявиться у вихідному для користувача просторі імен ідентифікаторів користувачів з незмінними привілеями, але в іншому просторі точок монтування, що повністю контролюється атакуючим. У тому числі атакуючий може виконувати setuid-root програми у створеному ним просторі точок монтування, що дозволяє, наприклад, змінити налаштування /etc/sudoers або параметри PAM у своїй файловій ієрархії та отримати можливість виконання команд з правами root за допомогою утиліт sudo або su.

Джерело: opennet.ru

Додати коментар або відгук