Flatpak — это современный инструмент для управления и изоляции Linux-приложений, который обещает обеспечить дополнительный уровень безопасности за счёт контейнероподобной среды, использующей агрегаты технологий вроде bubblewrap, namespace, фильтрации системных вызовов и портальных интерфейсов. Идея состоит в том, чтобы каждое приложение работало в песочнице — ограниченной среде, полностью отделённой от основной системы. Однако идеальный сценарий часто расходится с реальностью, что приводит к появлению уязвимостей и возможностям обхода песочницы с непредвиденными последствиями для пользователя и системы в целом. В данной статье мы разберём ключевые проблемы с песочницей Flatpak, реальные случаи прорывов, причины, а также пути повышения безопасности пользователей и разработчиков. Основы песочницы Flatpak заключаются в строгом ограничении доступа приложений к ресурсам хоста.
По умолчанию Flatpak-тарелки запускаются без сетевого подключения, доступа к файловой системе за пределами runtime и личного каталога данных, с ограниченным набором системных вызовов и минимальным взаимодействием с системными или пользовательскими службами. Чтобы разрешить определённый функционал, например, выбор файлов через диалоги или работу с принтером, Flatpak задействует порталы — посреднические службы, которые регулируют и контролируют подобные возможности без предоставления полного доступа. Однако в экосистеме Flatpak множество приложений заявляют чрезмерно широкие права, такие как filesystem=home, filesystem=host или device=all, что фактически означает предоставление полномасштабного доступа к домашнему каталогу пользователя или даже устройствам системы. Такие широкие разрешения нивелируют преимущества песочницы и при неправильном использовании создают серьёзные угрозы безопасности, поскольку пользователи часто ошибочно считают, что метка «песочница» гарантирует высокую степень изоляции. Реальные инциденты, связанные с обходом песочницы, подтверждают эти опасения.
Ярким примером является уязвимость CVE-2024-32462, выявленная исследователем безопасности Гергё Котелешем. Она заключалась в уязвимости интерфейса org.freedesktop.portal.Background.
RequestBackground. Злоумышленник мог создать специально подготовленный .desktop файл, который при обработке Flatpak с опцией --command= позволял внедрять параметры bubblewrap, такие как --bind, и, таким образом, выполнять произвольные команды на хостовой системе вне песочницы. Эта уязвимость повлияла на версии Flatpak до 1.10.
9, 1.12.9, 1.14.6 и 1.
15.8 и была устранена в последующих версиях, дополнительно решение было внедрено в xdg-desktop-portal начиная с версии 1.18.4. Другой значимый случай — CVE-2024-42472, связанный с механизмом persist или persistent= в манифестах Flatpak.
Эта опция предоставляла приложениям возможность записи в директорию данных. Однако если злоумышленник заменял эту директорию на символьную ссылку (symlink), указывающую, например, на ~/.ssh или другие чувствительные каталоги хоста, то монтирование изоляционной файловой системы следовало за этим симлинком и таким образом выходило за границы namespace песочницы. Эта уязвимость присутствовала во всех версиях Flatpak до 1.14.
10 и обновлениях 1.15.10 и выше, после чего была исправлена. Проблема «широких разрешений» нередко встречается среди приложений, размещённых в популярных репозиториях, таких как Flathub. Исследования, анализирующие сотни пакетов Flatpak и Snap, показывают, что почти 42% Flatpak-приложений либо намеренно переопределяют границы изоляции, либо ошибочно настраивают sandbox, что приводит к избыточным полномочиям и потенциальным обходам песочницы.
Создание тонкого и надёжного профиля разрешений — задача непростая, поскольку любой неправильный шаг может вывести песочницу из строя. Кроме того, проблема усугубляется тем, что приложения Flathub часто включают устаревшие версии библиотек и системных компонентов, которые содержат уже исправленные в дистрибутивах уязвимости. Поскольку контейнеры Flatpak содержат «замороженные» рантаймы, пользователи остаются подвержены риску, даже если базовая система обновлена. Чтобы повысить уровень безопасности, администраторам и разработчикам рекомендуется всегда использовать актуальные версии Flatpak и связанных компонентов. В частности, для защиты от CVE-2024-32462 необходим минимум Flatpak 1.
14.6 (или 1.10.9 и 1.12.
9 в зависимости от ветки исправлений) и xdg-desktop-portal версии не ниже 1.18.4. Чтобы избегать угроз, связанных с persistent symlink, следует применять версии Flatpak 1.14.
10 или 1.15.10 и выше. Минимизация выданных разрешений — ключевой момент в управлении рисками. Стоит отказаться от универсальных разрешений типа filesystem=host или device=all и стараться максимально внимательно подходить к назначению необходимых привилегий.
Вместо прямого доступа к файловой системе лучше использовать порталы, предоставляющие контролируемый доступ к функционалу. Для простой проверки и управления текущими разрешениями полезны инструменты вроде Flatseal, позволяющие визуально увидеть и настроить права на уже установленных приложениях. Для разработчиков рекомендуется использовать статический и динамический анализ, чтобы выявить и сократить избыточные параметры в манифестах, нацеливаясь на принцип наименьших привилегий. Этим должна заниматься и экосистема в целом: репозитории и платформы распространения обязаны проводить ревизию политик по умолчанию и стремиться выдавать более жёсткие изоляционные настройки, одновременно информируя и обучая разработчиков принципам безопасности и грамотному проектированию sandbox-политик. Сложности возникают из-за необходимости балансировать между удобством использования и уровнем безопасности.
Некоторые приложения не смогут корректно работать при строгих ограничениях, в результате чего разработчики зачастую вынуждены допускать более широкой доступ. Более того, порталы — бриджи между песочницей и хостом — сами становятся потенциальной целью атак, как показал пример с CVE-2024-32462. Поэтому усиление проверок и валидации параметров, передаваемых через порталы, является одной из важных задач. Значительную проблему представляет отставание runtime-компонентов в Flatpak от обновлений дистрибутивов Linux, что приводит к уязвимостям, которые долго не исправляются, оставаясь невидимыми для конечного пользователя. Для прогресса необходимы инструменты автоматизации, которые анализируют поведение приложений и предлагают минимальные наборы разрешений для манифеста.
Это поможет систематизировать и упростить процесс создания надёжных песочниц. Очередной вектор развития — регулярный сканинг рантаймов на предмет известных CVE с последующей автоматизированной подсказкой обновлений для владельцев приложений и пользователей. Также полезно внедрение интерфейсов, которые предупреждают пользователей при установке приложений с чрезмерно широкими правами, способствуя осознанному выбору и снижая вероятность случайного нарушения безопасности. Flatpak — мощный инструмент с хорошей архитектурной базой безопасности, но недоработки и ошибки в настройках песочницы, а также выявленные уязвимости показывают, что в реальном мире защитная модель далека от идеала. Только совместные усилия разработчиков, администраторов репозиториев и пользователей по своевременному обновлению, минимизации прав и улучшению инструментов анализа смогут укрепить эту экосистему и сохранить верность изначальной идее безопасного и удобного запуска приложений на Linux.
Осознание слабых мест и систематическая работа над их устранением — залог успешного и безопасного использования Flatpak в повседневных задачах. При грамотном подходе Flatpak способен стать ключевым звеном в обеспечении безопасности приложений и защитой пользователей от множества угроз, связанных с вмешательством вредоносного кода и ошибками конфигураций.