Firejail использует для изоляции механизм пространств имён (namespaces), AppArmor и фильтрацию системных вызовов (seccomp-bpf) в Linux, но для настройки изолированного запуска требует повышенных привилегий, которые получает через привязку к утилите флага suid root или запуск при помощи sudo. Уязвимость вызвана ошибкой в логике работы опции «—join=‹PID›», предназначенной для подключения к уже работающему изолированному окружению (аналог команды 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=57337