Релиз системы изоляции приложений Firejail 0.9.78

Опубликован релиз проекта Firejail 0.9.78, развивающего систему для изолированного выполнения графических, консольных и серверных приложений, позволяющую минимизировать риск компрометации основной системы при запуске не заслуживающих доверия или потенциально уязвимых программ. Программа написана на языке Си, распространяется под лицензией GPLv2 и может работать в любом дистрибутиве Linux с ядром старше 3.0. Готовые пакеты с Firejail подготовлены в форматах deb (Debian, Ubuntu) и rpm (CentOS, Fedora).

Для изоляции в Firejail используются пространства имён (namespaces), AppArmor и фильтрация системных вызовов (seccomp-bpf) в Linux. После запуска программа и все её дочерние процессы используют отдельные представления ресурсов ядра, таких как сетевой стек, таблица процессов и точки монтирования. Зависимые между собой приложения можно объединять в один общий sandbox. При желании Firejail можно применять и для запуска контейнеров Docker, LXC и OpenVZ.

В отличие от средств контейнерной изоляции firejail предельно прост в конфигурации и не требует подготовки системного образа — состав контейнера формируется на лету на основе содержимого текущей ФС и удаляется после завершения работы приложения. Предоставляются гибкие средства задания правил доступа к файловой системе, можно определять к каким файлами и директориям разрешён или запрещён доступ, подключать для данных временные ФС (tmpfs), ограничивать доступ к файлам или директориям только на чтение, совмещать директории через bind-mount и overlayfs.

Для большого числа популярных приложений, в том числе для Firefox, Chromium, VLC и Transmission, подготовлены готовые профили изоляции системных вызовов. Для получения привилегий, необходимых для настройки изолированного окружения, исполняемый файл firejail устанавливается с флагом SUID root (после инициализации привилегии сбрасываются). Для выполнения программы в режиме изоляции достаточно указать имя приложения в качестве аргумента утилиты firejail, например, «firejail firefox» или «sudo firejail /etc/init.d/nginx start».

В новом выпуске:

  • В файл конфигурации firejail.config добавлены опции arg-max-count, arg-max-len, env-max-count и env-max-len для изменения лимитов на число и размер опций командной строки и переменных окружения. По умолчанию число аргументов ограничено 128, число переменных окружения 256, а размер каждого аргумента — PATH_MAX из limits.h (в Linux 40196) + 32.
  • Добавлена опция «—xephyr-extra-params» для задания дополнительных опций к Xephyr (используется для создания sandbox-окружений X11 со своим X-сервером, запущенным в окне) в командной строке без изменения firejail.config.
  • Устанавливаемая в sandbox-окружение утилита bwrap (bubblewrap) заменена на прослойку fbwrap, запускающую программы без изоляции для решения проблем с запуском Firefox, Thunderbird, GIMP из-за вызова glycin 2.0.0 из gdk-pixbuf2 с использованием bwrap. Для копирования bwrap вместо прослойки добавлена опция «—allow-bwrap».
  • Обновлены таблицы системных вызовов для seccomp. Добавлены новые системные вызовы, такие как epoll_pwait2 и futex_wait.
  • Удалена сборочная опция «—disable-globalcfg», прекращена поддержка overlayfs («—overlay») и режима IDS (Intrusion Detection System, «—ids»).
  • Добавлены профили изоляции для текстового редактора ne (текстовый редактор), браузера Trivalent и игровых движков OpenRA, quakespasm, gzdoom, lzdoom, uzdoom.
  • Обновлены профили для thunderbird, wine, qutebrowser, firefox, godot, wusc, mullvad-browser, blink, steam, ssh, brave и hashcat.

Источник: http://www.opennet.ru/opennews/art.shtml?num=64553