Hier ein Kommentar zu einem anderen Post, der nach (unoffiziellen) Flatpak-Browsern auf Linux gefragt hat, im Vergleich mit einem offiziellen externen Repository. Genauergesagt Brave.
Die Situation ist komplex.
flatpak remote-add --if-not-exists flathub-verified --subset=verified https://dl.flathub.org/repo/flathub.flatpakrepo
Damit hast du erstmal das Repository mit nur verifizierten Apps. Etliche sind da nicht drin, zB VLC, weil die Entwickler einfach keine Ahnung von Flatpak haben (wollen).
Die Version ist aber top, also empfiehlt es sich, auch das ungefilterte Repository zu installieren, aber so viele Apps wie möglich vom verifizierten zu installieren (Flatpak Eigenheit).
Jetzt aber zu den Browsern. Die Situation ist komplex und Firefox ist da ziemlich komisch, denn sie unterstützen die Flatpak Version offiziell, meiner Meinung nach ein großer Fehler.
Flatpak & Bubblewrap
Flatpaks werden vom System mithilfe von Bubblewrap isoliert. Bubblewrap ist eine neuere und viel sichere Alternative zu firejail. Bubblewrap isoliert nicht nur den Speicherzugriff, sondern auch „system calls“.
Einer dieser System Calls ist das erstellen von „unprivileged user namspaces“. Also isolierte Container, in denen Apps oder auch einzelne Prozesse laufen können. User Namespaces bedeutet, dass Apps ohne root-Zugriff diese Container erstellen können.
User namespaces werden von Flatpak blockiert, da sie oft nicht benötigt werden, und eventuelle Schwachstellen in dann zur Verfügung gestellten Programmen ausnutzen könnten, um aus der Bubblewrap Sandbox auszubrechen und root-Zugriff zu bekommen.
Die Chromium Sandbox
So sehr ich Firefox mag, ist es erheblich unsicherer als Chromium, vor allem auf den Betriebssystemen Linux und Android.
Chromium verwendet user namespaces, um jeden Tab in einem separaten Prozess laufen zu lassen. Sie haben einen hohen Fokus auf Sicherheit, ironischerweise wurde das damals immer als „Chrome braucht so viel RAM“ Meme verwendet, ohne überhaupt zu verstehen, dass Firefox einfach sau unsicher ist.
(Das RAM management wurde an Firefox angeglichen. Und auch Firefox ist sicherlich besser geworden, aber viel zu langsam und nicht auf Android)
(Vergleichbar damit, wie die Linux Kernel-Effizienz bei Windowsspielen glorifiziert wird. Klar, WINE ist cool, aber Linux packt jeden Treiber in den Kernel, während Windows die Treiber isoliert laufen lässt (ein Blick in den Taskmanager). Das bedeutet alle Treiber für jede Hardware sind in einem großen Blubb, und haben vollen Zugriff auf alles, auch deine Katze.)
Also, Chromium-Sandbox. Ist ziemlich cool, da es essentiell ist, dass eventueller Schadcode nicht an deine Browserpasswörter kommt. Jeder Tab läuft in einem eigenen Prozess.
(NoScript bitte trotzdem verwenden, auch aus Privatsphäregründen. Aber es gibt auch CSS exploits)
Was tut Flatpak also? Sie benutzen Zypak, ein sehr experimentelles Projekt, das die Chromium Sandbox umgeht, um Electron Apps und Chromium Browser in Flatpak laufen zu lassen. Es täuscht die namespace Sandbox vor, isoliert jedoch die Prozesse in Flatpak Sandboxen.
Das ist sicherlich nützlich bei Electron Apps, die Chromium einfach nur verwenden, weil man damit einfach plattformunabhängig und mit Web-Bibliotheken schreiben kann. Aber das bedeutet, dass die Chromium Sandbox durch die Flatpak Sandbox ersetzt wird.
Der Grund dafür ist, dass Flatpak Systemcalls verhindert, die für die user namespace Erstellung nötig sind.
Das bedeutet nicht, dass man keine Browser mit Bubblewrap vom System isolieren kann. Man braucht einfach einen anderen seccomp Filter, und Flatpak verwendet wohl für alle Apps den selben.
Die beste Lösung wäre, dass Flatpak/Flathub ein extra Repository für Browser bereitstellt. Bin mir nicht sicher, ob die Filter davon abgängig sind, oder in Flatpak selber festgelegt sind.
Alternativ kann man die Flatpak Filter anpassen, um User namespace Erstellung zu erlauben. Hat mal jemand mit Firefox gemacht (finde ich nicht, aarg) aber wohl noch keiner für Chromium.
Mit diesen Filtern kann man dann die native Version manuell isolieren.
WARNUNG
Alle Flatpak-Chromiumbrowser, außer Chromium selbst, verwenden Zypak anstatt der richtigen Sandbox und sind damit wahrscheinlich unsicher.
Chromium hat wohl eine Alternative, aber auch diese muss als unsicherer angenommen werden als die offizielle Sandbox.
Firefox ist offiziell unterstützt und verwendet eine andere Sandbox, die wohl besser mit Flatpak Filtern kompatibel ist. Aber dazu gibt es keine Erklärungen von Mozilla, also auch sehr unvertrauenswürdig.
Risikos von user namespaces
User Namespaces können ein Risiko darstellen. Das wird de facto in Kauf genommen, siehe
- Chromium Sandbox, ChromeOS
- Docker
- Podman
- Flatpaks bubblewrap selbst
Dennoch gibt es Probleme, da durch user namespaces Prozesse Zugriff auf Bibliotheken und Programme bekommen können, die sie sonst nicht haben. Dadurch kann es Privilege Escalation geben.
- https://www.crowdstrike.com/blog/crowdstrike-discovers-new-container-exploit/
- https://nvd.nist.gov/vuln/detail/CVE-2022-1055
- https://nvd.nist.gov/vuln/detail/CVE-2021-41805
Deshalb hat die Fedora Variante Secureblue für jede Edition eine mit user namespaces und eine ohne.
Dort haben sie Bubblewrap modifiziert, dass es ohne funktioniert, und Chromium verwendet eine suid Sandbox. Diese Sandbox wurde früher verwendet, ist noch enthalten aber kaum verwendet, da mittlerweile alle (?) Linux Distributionen user namespaces aktiviert haben.
Fazit
Momentan sind native Browser zu empfehlen. Es kann jedoch sein, dass Chromium-basierte Browser in Zukunft auch als Flatpak sicher werden. Bis diese jedoch abgesichert und offiziell unterstützt sind, ist die native Lösung zu empfehlen.
Um schnelle Updates zu garantieren, empfiehlt sich:
Firefox, Torbrowser
- .tar Archiv
- Selbstupdatend, jedoch ohne Desktop-Integration.
Dazu mache ich bald noch ein Installationsskript.
Chromium
- dein System-repository (wenn es schnelle Updates bereitstellt)
- Chromium wird von Google möglichst unkomfortabel gemacht
- alternativ: updater Script
Brave
- offizielles Repository
- für Fedora Atomic (Silverblue, Kinoite, Secureblue, Ublue, Bazzite, Bluefin, …) habe ich dieses Skript geschrieben
ACHTUNG
Ich rate stark von der Verwendung von „stable“ Distributionen ab.
- Debian
- Ubuntu LTS
- Linux Mint
- RockyLinux, AlmaLinux, …
da diese nicht einfach kontrolliert die neuesten Updates bereitstellen (wie zB. Opensuse Tumbleweed), sondern ausgewählte Sicherheitspatches backporten.
Das bedeutet die Versionen sind veraltet, der Code wird jedoch manuell von den Distributoren angepasst.
Ergänzung: Firefox wird in solchen Distributionen (wie auch in Thunderbird und im Torbrowser) in der von Mozilla gepflegten „Firefox ESR“ Variante installiert. Das bedeutet Mozilla und nicht die Distributionen entscheiden, welche Updates gebackported werden, und welche nicht.
Nur Sicherheitslücken mit CVE werden (meines Wissens nach) zurückgeportet.
Und ernsthaft, anstatt das die Entwickler machen zu lassen, muss man unbezahlten Distributoren vertrauen, sich genauso gut mit dem Code auszukennen. Das ganze ist einfach eine Katastrophe. (Bezieht sich auf alle Pakete außer spezifisch Firefox ESR, den LTS Kernel etc.)
Nebenbei bedeutet „stable“ einfach, dass sich Funktionen nicht verändern, auch Bugs werden meistens nicht gefixt. (bezieht sich auf alle Pakete)
Stable Distributionen sind nicht „nutzerfreundlicher“ oder „zuverlässiger“, wenn ihre Pakete veraltet sind. (Ja, Linux Mint ist nicht sicher).
Als Alternative eignet sich vielleicht OpenSuse Slowroll (Heise Artikel).
Solltest du dennoch eine „stable“ Distribution verwenden, auf jeden Fall
- Firefox & Torbrowser als Tar Archiv (updated sich von selbst)
- Chromium über das Skript, oder einfacher:
- Brave über das Repository
Das würde ich auch für Slowroll empfehlen.
Sichere Reise!