Уязвимость во flatpak, позволяющая обойти sandbox-изоляцию

В инструментарии Flatpak, предназначенном для создания самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux и изолированных от остальной системы, выявленауязвимость (CVE-2024-32462). Уязвимость позволяет вредоносному или скомпрометированному приложению, поставляемому в пакете flatpak, обойти установленный режим sandbox-изоляции и получить доступ к файлам в основной системе. Проблема проявляется только в пакетах, использующих порталы Freedesktop (xdg-desktop-portal), применяемые для организации доступа к ресурсам пользовательского окружения из изолированных приложений. Уязвимость устранена в корректирующих обновлениях flatpak 1.15.8, 1.14.6, 1.12.9 и 1.10.9. Обходной путь для защиты также предложен в выпусках xdg-desktop-portal 1.16.1 и 1.18.4. Благодаря уязвимости, находящееся в изолированном окружении приложение может использовать интерфейс xdg-desktop-portal для создания файла ".desktop" с командой запуска приложения из flatpak, позволяющей получить доступ к файлам основной системы. Для выхода из изолированного окружения используются манипуляции с параметром "--command", применяемым для передачи имени программы, находящейся внутри flatpak-пакета, которую нужно запустить в изолированном окружении. Для настройки изолированного окружения flatpak вызывает утилиту bwrap, передавая ей указанное имя программы. Например, для запуска утилиты ls в изолированном окружении пакета можно использовать конструкцию "flatpak run --command=ls org.gnome.gedit" которая приведёт к запуску "bwrap ls". Суть уязвимости в том, что если имя программы начинается на символы "--", то оно будет воспринято утилитой bwrap как собственная опция. Например, запуск "flatpak run --command=--bind org.gnome.gedit / /host ls -l /host" приведёт к выполнению "bwrap --bind / /host ls -l /host", т.е. имя "--bind" будет обработано не как имя запускаемого приложения, а как опция bwrap. Уязвимость усугубляется тем, что D-Bus интерфейс "org.freedesktop.portal.Background.RequestBackground" позволяет приложению из пакета Flatpak указать любую команду для выполнения при помощи "flatpak run --command", в том числе начинающуюся с символа "--". Подразумевалось, что передача любых команд не опасна, так как они будут выполнены в изолированном окружении пакета. Но не было учтено, что команды, начинающиеся на "--" будут обработаны как опции утилитой bwrap. В итоге, интерфейс xdg-desktop-portal может использоваться для создания файла ".desktop" с командой, эксплуатирующей уязвимость.

Анализ
×