Sandbox-Escape: Sicherheitslücke in Flatpak behoben

Wer von Euch Flatpaks einsetzt, möchte jetzt vermutlich gleich mal den Updatebutton drücken: Sandbox-Escape in Flatpak Version < 1.8.5,1.10.0

Sandbox-Escape: Sicherheitslücke in Flatpak behoben

Für alle, die nicht wissen was Flatpaks sind, es handelt sich dabei um distributionsunabhängige Programmpakete, die, sonst würde es keine Sicherheitslücke sein, in sich gekapselte Container sind.

Der Gedanke ist, daß man als Entwickler alles mitliefert was die Anwendung braucht, ohne auf das Betriebssystem angewiesen zu sein. Der Nachteil davon ist … genau das: Jede Anwendung kann Zeug mitbringen, daß komplett veraltet und buggy ist. Deswegen schließen die Containerverwaltungen wie Flatpak, Snap und Docker die Inhalte in eine Sandbox ein, aus der das Programm nur unter bestimmten Vorgaben ausbrechen kann, z.b. um eine Bild-Datei zu öffnen. Dem Programmcode ist es aber nicht erlaubt, außerhalb seiner Sandbox etwas auszuführen.

Sandbox-Ausbruch

Im passenden Advisory steht dazu:

In vulnerable versions, the Flatpak portal service passes caller-specified environment variables to non-sandboxed processes on the host system, and in particular to the „flatpak run“ command that is used to launch the new sandbox instance. A malicious or compromised Flatpak app could set environment variables that are trusted by the „flatpak run“ command, and use them to execute arbitrary code that is not in a sandbox.
https://github.com/flatpak/flatpak/security/advisories/GHSA-4ppf-fxf6-vxg2

Das meint, ein Prozess innerhalb des Flatpaks kann über den DBUS anderen Prozessen Umgebungsvariablen setzen, die diese dann beachten und so aus der Sandbox auszubrechen, obwohl so nur Prozesse gestartet werden sollten, die gleiche oder weniger Rechte haben, als der ausrufende Elternprozess.

Für Fedora ist die abgesicherte Flatpak Version 1.8.5-1 erschienen:

——————————————————————————–
Fedora Update Notification FEDORA-2021-f807eb480a from 2021-01-19 01:50:48.910487
——————————————————————————–
Update Information:

This is a security update that fixes a sandbox escape where a malicious application can execute code outside the sandbox by controlling the environment of the „flatpak run“ command when spawning a sub-sandbox. See the advisory for details: https://github.com/flatpak/flatpak/security/advisories/GHSA-4ppf-fxf6-vxg2
——————————————————————————–

Wer nicht auf Fedora als System setzt, der kann auf 1.8.5 oder 1.10.0 updaten, die beide dagegen gesichert sind.

Wer mehr über Flatpak wissen möchte, kann die Seiten flatpak.org und wiki.gnome.org/Projects/SandboxedApps besuchen.

Flatpak ist */()$§*#D3§$

Ich fand ja FlatPak schon im letzten Artikel nicht so prall, wegen der ganzen Platzverschwendung, aber das hier topt es grade :

[marius ~]$ /usr/bin/flatpak info "com.belledonnecommunications.linphone/x86_64/4.1.1"
Ref: app/com.belledonnecommunications.linphone/x86_64/4.1.1
ID: com.belledonnecommunications.linphone
Arch: x86_64
Branch: 4.1.1
Origin: com.belledonnecommunications.linphone-1-origin
Commit: bae79f29ce390b6b28254cba0ae63f1bbb8d9a30f50acce422ce5ef1f1839441
Location: /home/marius/.local/share/flatpak/app/com.belledonnecommunications.linphone/x86_64/4.1.1/bae79f29ce390b6b28254cba0ae63f1bbb8d9a30f50acce422ce5ef1f1839441
Installed size: 315,4 MB
Runtime: org.freedesktop.Platform/x86_64/1.6
[marius ~]$ /usr/bin/flatpak update "com.belledonnecommunications.linphone/x86_64/4.1.1"
Looking for updates...
Fehler: com.belledonnecommunications.linphone/x86_64/4.1.1 not installed
[marius ~]$ /usr/bin/flatpak update app/com.belledonnecommunications.linphone/x86_64/4.1.1
Looking for updates...
Fehler: app/com.belledonnecommunications.linphone/x86_64/4.1.1 not installed

Also, mit der original REF, die die INFO Anweisung ausgibt ODER die auch LIST ausgibt, behauptet Flatpak, die Anwendung wäre nicht installiert. Lustigerweise will er die Starten, was übrigens nicht geht, weil die NVIDIA Treiber aktualisiert worden sind und nun die von Flatpak installierten Treiber zu den Treibern nicht mehr passen:

Installiert ist 384.90 , aber Flatpak hat noch 375 im Einsatz :

[marius]$ flatpak list
Ref Options 
com.belledonnecommunications.linphone/x86_64/4.1.1 user,current
org.freedesktop.Platform.GL.nvidia-375-66/i386/1.4 user,runtime
org.freedesktop.Platform.GL.nvidia-375-66/x86_64/1.4 user,runtime
org.freedesktop.Platform/x86_64/1.6 user,runtime

Das Ende von Lied: LinPhone startet nicht mehr 😀 Natürlich updated flatpak auch nichts, wenn man nur „update“ eingibt, was alles aktualisiert laut Manpage, aber es gibt wohl kein Update dafür 😀

Fazit: Tolle Idee son System im System 😀

Aufruf: Nieder mit den Flatpaks und Snappys dieser Welt. Es lebe DNF ! 😉

PS: Zu DNF kommen wir morgen nochmal 😀

Update: Annahme verweigert

Der Red Hat Bugbetreuer hat die Meldung, daß die installierten Flatpakapps nicht gefunden werden, wenn man sie namentlich angibt, als „Kein Bug“/“Kein Supportforum“ abgetan. Also entweder der weiß mehr als wir zu dem Thema, oder er hat leider keine Vorstellung davon, was ein Bug in Flatpak sein könnte 🙂

Mal sehen was per Github vom Projektmaintainer kommt :  https://github.com/flatpak/flatpak/issues/1139

Flatpak & Linphone 4

Da grade ein OSBN Blogkollege LinPhone 4 vorgestellt hat, dachte ich mir, schau doch mal, obs das nicht auf für Fedora fertig gibt. Zunächst findet man im Repo tatsächlich eine LinPhone 3 Version, aber die ist komplett unbrauchbar. Versucht es erst gar nicht. Der korrekte Umgang damit ist : dnf -y erase linphone

Das Programm war so dämlich, sich darüber zu beschweren, daß es sich nicht auf Port 5060 ( SIP ) binden kann, weil es sich dort bereits im ersten Versuch beim Start der eigenen Instanz gebunden hatte 😉 Alle 3 Sekunden 😀 Mehr muß man nicht schreiben.

LinPhone 4 sieht anders aus. Das funktioniert tatsächlich irgendwann mal. Leider braucht man FlatPak um es zu installieren, weil die Autoren auf ein RPM verzichtet haben. Dafür darf man sich dann ein 144 MB GnomeBundle plus diverse Treiber ziehen, als wenn Gnome nicht schon auf dem Rechner drauf wäre 🙁

Die Installation von LinPhone 4

Mit Hilfe von Flatpak ist die Installation

[marius@eve ~]$ flatpak –user install –from https://linphone.org/flatpak/linphone.flatpakref
This application depends on runtimes from:
https://sdk.gnome.org/repo/
Configure this as new remote ‚gnome‘ [y/n]: y
Installieren: com.belledonnecommunications.linphone/x86_64/4.1.1
Erforderliche Laufzeit für com.belledonnecommunications.linphone/x86_64/4.1.1 (org.freedesktop.Platform/x86_64/1.6) ist nicht installiert. Suche läuft …
Found in remote gnome, do you want to install it? [y/n]: y
Installieren: org.freedesktop.Platform/x86_64/1.6 von gnome
[####################] 11 delta parts, 81 loose fetched; 141011 KiB transferred in 53 seconds
Installieren: org.freedesktop.Platform.GL.nvidia-375-66/i386/1.4 von gnome
[####################] Downloading: 44,8 MB/44,8 MB (4,1 MB/s)
Installieren: org.freedesktop.Platform.GL.nvidia-375-66/x86_64/1.4 von gnome
[####################] Downloading: 42,2 MB/42,2 MB (4,2 MB/s)
Installieren: org.freedesktop.Platform.Locale/x86_64/1.6 von gnome
[####################] 18 metadata, 73 content objects fetched; 955 KiB transferred in 7 seconds
Installieren: com.belledonnecommunications.linphone/x86_64/4.1.1 von com.belledonnecommunications.linphone-1-origin
[####################] 353 metadata, 2718 content objects fetched; 117296 KiB transferred in 81 seconds

Die Apps finden

[marius@eve ~]$ flatpak list
Ref Options
com.belledonnecommunications.linphone/x86_64/4.1.1 user,current
org.freedesktop.Platform.GL.nvidia-375-66/i386/1.4 user,runtime
org.freedesktop.Platform.GL.nvidia-375-66/x86_64/1.4 user,runtime
org.freedesktop.Platform/x86_64/1.6 user,runtime

Der Start

[marius@eve ~]$ flatpak run com.belledonnecommunications.linphone/x86_64/4.1.1
Qt: Session management error: None of the authentication protocols specified are supported
[12:13:16:118][0x2219d80][Info]/run/build/linphone-qt/src/app/App.cpp:106: „Use locale: en“
[12:13:25:406][0x2219d80][Info]:0: „Running app…“
… ab hier jede Menge lustiger und völlig überflüssiger Fehlermeldungen …

Irgendwie blöd wenn man sich nicht ausweisen kann, aber es geht am Ende doch, den ganzen Fehlermeldungen die da noch folgen zum Trotz 🙂

am sieht den Startbildschirm von Linphone

Startbildschirm

Es fällt natürlich sofort das rote Ausrufezeichen ins Auge, daß anzeigt, daß die unsinnige Standardeinstellung erwartungsgemäß nicht funktioniert. Ist auch kein Wunder, denn es versucht sich auf der IP des DSL-Routers als SIP Server zu etablieren.

Wenn man dann über den Assistenten endlich mal ein SIPGATE Konto erstellt hat, kann man am Ende dann tatsächlich darüber am Rechner telefonieren. Funktionieren tut es also. Allerdings nur per UDP, alles andere was an Optionen zur Verfügung stand, warf auch nur rote Ausrufezeichen und sonst nix. Nicht so tragisch, es sollte trotz dessen mit ZRTP verschlüsselt sein.

Die Fritzbox habe ich dann auch noch irgendwie an das Phone angeschlossen bekommen. Ob man sich damit selbst erfolgreich anrufen kann, habe ich dann nicht noch ausprobiert.

Wozu allerdings die Videooptionen da sind, hat sich mir nicht erschlossen, da SIP ja für Telefon da ist und einen Jabberserver habe ich nicht dran bekommen. Genauso wenig konnte ich damit Chatten, was mich auch gewundert hätte.

Was negativ auffällt ist, daß man das unsinnige Defaultkonto nicht entfernen und durch ein funktionierendes Konto ersetzen kann. Das fällt dann wohl unter failed.

Fazit: Jitsi ist cooler, kann mehr, ist einfacher zu installieren / konfigurieren und nimmt nicht soviel Platz auf dem Desktop ein.

Dies ist meine erste Erfahrung mit Flatpak, und sehr wahrscheinlich auch die letzte, weil sich alle Vorurteile bestätigt haben:

  • – Doppelt und Dreifache OS Umgebung
    – Platzverschwendung
    – Updates – Was sind Updates ? Muß man selbst einspielen .. args ..
  • Sorry, Flatpak und Snaps sind der falsche Weg.