W narzędziu Flatpak, przeznaczonym do tworzenia samodzielnych pakietów, niezwiązanych z konkretnymi dystrybucjami systemu Linux i izolowanych od reszty systemu, zidentyfikowano lukę (CVE-2024-32462). Luka ta pozwala złośliwej lub skompromitowanej aplikacji dostarczanej w pakiecie flatpak na obejście wprowadzonego trybu izolacji sandbox i uzyskanie dostępu do plików w podstawowym systemie. Problem występuje tylko w pakietach korzystających z portali Freedesktop (xdg-desktop-portal), które służą do organizacji dostępu do zasobów środowiska użytkownika z izolowanych aplikacji. Luka została usunięta w poprawkach flatpak 1.15.8, 1.14.6, 1.12.9 i 1.10.9. Obejście problemu zostało również zaproponowane w wersjach xdg-desktop-portal 1.16.1 i 1.18.4.
Dzięki tej luce, aplikacja znajdująca się w izolowanym środowisku może użyć interfejsu xdg-desktop-portal do utworzenia pliku „.desktop” z poleceniem uruchomienia aplikacji z flatpak, co pozwala na dostęp do plików podstawowego systemu. Aby wyjść z izolowanego środowiska, używa się manipulacji z parametrem „—command”, który jest stosowany do przekazania nazwy programu znajdującego się wewnątrz pakietu flatpak, który ma być uruchomiony w izolowanym środowisku. W celu konfiguracji izolowanego środowiska flatpak wywołuje narzędzie bwrap, przekazując mu wskazaną nazwę programu. Na przykład, aby uruchomić narzędzie ls w izolowanym środowisku pakietu, można użyć konstrukcji „flatpak run —command=ls org.gnome.gedit”, co prowadzi do uruchomienia „bwrap ls”.
Sednem luki jest to, że jeśli nazwa programu zaczyna się od symboli „—”, to zostanie ona uznana przez narzędzie bwrap za własną opcję. Na przykład, uruchomienie „flatpak run —command=—bind org.gnome.gedit / /host ls -l /host” doprowadzi do wykonania „bwrap —bind / /host ls -l /host”, tzn. nazwa „—bind” zostanie przetworzona nie jako nazwa uruchamianej aplikacji, lecz jako opcja bwrap.
Luka jest potęgowana tym, że interfejs D-Bus „org.freedesktop.portal.Background.RequestBackground” pozwala aplikacji z pakietu Flatpak wskazać dowolne polecenie do wykonania za pomocą „flatpak run —command”, w tym rozpoczynające się od znaku „—”. Zakładano, że przekazywanie dowolnych poleceń jest bezpieczne, ponieważ będą one wykonywane w izolowanym środowisku pakietu. Jednak nie uwzględniono, że polecenia zaczynające się na „—” będą traktowane jako opcje przez narzędzie bwrap. W rezultacie interfejs xdg-desktop-portal może być użyty do stworzenia pliku „.desktop” z poleceniem wykorzystującym tę lukę.
Źródło: opennet.ru
