Flatpak is a system for building, distributing, and running sandboxed desktop applications on Linux. in versions before 1.10.9, 1.12.9, 1.14.6, and 1.15.8, a malicious or compromised Flatpak app could execute arbitrary code outside its sandbox. Normally, the --command
argument of flatpak run
expects to be given a command to run in the specified Flatpak app, optionally along with some arguments. However it is possible to instead pass bwrap
arguments to --command=
, such as --bind
. It's possible to pass an arbitrary commandline
to the portal interface org.freedesktop.portal.Background.RequestBackground
from within a Flatpak app. When this is converted into a --command
and arguments, it achieves the same effect of passing arguments directly to bwrap
, and thus can be used for a sandbox escape. The solution is to pass the --
argument to bwrap
, which makes it stop processing options. This has been supported since bubblewrap 0.3.0. All supported versions of Flatpak require at least that version of bubblewrap. xdg-desktop-portal version 1.18.4 will mitigate this vulnerability by only allowing Flatpak apps to create .desktop files for commands that do not start with --. The vulnerability is patched in 1.15.8, 1.10.9, 1.12.9, and 1.14.6.