Уязвимость во 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» с командой, эксплуатирующей уязвимость.

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