- D-Bus ist ein Bus für die Kommunikation zwischen Anwendungen; das Konzept ist nützlich, aber die Implementierung ist äußerst mangelhaft und nicht standardkonform
- Die Standarddokumentation ist unvollständig und inkonsistent, und die tatsächlichen Implementierungen halten sich nicht daran, was zu einem Zusammenbruch der Kompatibilität führt
- Auch Sicherheitslücken sind gravierend: Apps können im entsperrten Zustand geheime Daten anderer Apps lesen
- Als Reaktion darauf entwickelt der Autor ein neues Bussystem namens
hyprtavern und ein Protokoll namens hyprwire
hyprtavern soll die strukturellen Probleme von D-Bus durch strikte Typprüfung, integrierte Rechteverwaltung, einen sicheren Secret-Store (kv) usw. lösen
Das Konzept von D-Bus und seine Grenzen
- D-Bus ist ein System, mit dem Anwendungen und Dienste über einen gemeinsamen Bus Methoden und Eigenschaften bereitstellen und gegenseitig aufrufen können
- Wenn zum Beispiel eine App, die einen Wetterdienst anbietet, eine API am Bus registriert, können andere Apps sie finden und verwenden
- Wegen seines zu großzügigen und unstrukturierten Designs kann D-Bus jedoch beliebige Objekte mit beliebigen Methoden registrieren und aufrufen
- Dadurch entsteht der Effekt „Garbage in, garbage out“
Verwirrung bei Standarddokumentation und Implementierungen
- Die Standarddokumentation von D-Bus ist über mehrere Stellen verstreut und in unvollständiger, schwer verständlicher Form vorhanden
- Reale Implementierungen halten sich entweder nicht daran oder verwenden willkürlich voneinander abweichende Spezifikationen
- Der Autor erklärt, dass er bei der Entwicklung von
xdg-desktop-portal-hyprland die Spezifikation für restore_token implementiert habe,
alle Apps jedoch das inoffizielle Feld restore_data verwendeten und es deshalb zu Inkompatibilitäten kam
- Der Variant-Typ (
a{sv}) von D-Bus erlaubt die Übertragung beliebiger Daten und wird als Hauptursache für die Auflösung der Protokollkonsistenz genannt
Mängel in der Sicherheitsarchitektur
- In D-Bus fehlt eine zentralisierte Rechteverwaltung oder ein Mechanismus zum Verweigern von Zugriffen
- Alle Apps können die Aufrufe anderer Apps sehen und haben ohne explizite Sicherheitsmaßnahmen unbegrenzten Zugriff
- Auch Secret-Stores wie
gnome-keyring, kwallet sind strukturell schwach
- Sobald der Store entsperrt ist, können alle Apps auf alle geheimen Daten zugreifen
- Der Autor bezeichnet das als „ein sicherheitstechnischer Witz“
Die neue Alternative: hyprwire und hyprtavern
- Um die Probleme von D-Bus zu lösen, entwickelt der Autor ein neues Bussystem namens
hyprtavern
hyprwire ist ein von Wayland inspiriertes knappes und konsistentes Wire-Protokoll
- Es zeichnet sich durch erzwungene Typen, schnelle Verbindungen und eine einfache Struktur aus
hyprtavern basiert auf einer Struktur, in der Apps protokollbasierte Objekte registrieren und gegenseitig entdecken
- Es bietet ein integriertes Berechtigungssystem, strikte Protokolltreue, eine vereinfachte API und sichere Voreinstellungen
hyprtavern-kv (sicherer Key-Value-Store)
- Ein Core-Protokoll, das die Secrets API von D-Bus ersetzen soll
- Von einer App registrierte Secrets können nur von dieser App gelesen werden und sind nicht auflistbar
- Auch eine ID-basierte Zugriffskontrolle für Flatpak-, Snap- und AppImage-Apps ist geplant
- Daten werden immer verschlüsselt gespeichert; mit gesetztem Passwort ist echte Sicherheit möglich
- Alle Apps können die Funktion eines sicheren Secret-Stores standardmäßig nutzen
Entwicklungsstand und weitere Pläne
hyprtavern befindet sich noch in einer frühen Entwicklungsphase und soll künftig intern in Hyprland Version 0.54 genutzt werden
- Die anfängliche Verbreitung dürfte begrenzt sein, doch ein schrittweiser Übergang ist möglich
- Anders als bei D-Bus können mehrere Session-Busse parallel betrieben werden, wodurch sich auch Kompatibilitäts-Proxys schreiben lassen
- Das Projekt ist in C++ geschrieben, Bindings für Rust, Go und Python lassen sich jedoch leicht umsetzen
- Der Autor betont: „D-Bus lässt sich grundlegend nicht reparieren und muss komplett neu entworfen werden.“
FAQ-Zusammenfassung
- Zur Kritik, man „erfinde das Rad neu“, sagt der Autor, dass das Grunddesign von D-Bus kaputt ist und ein Redesign unvermeidlich sei
- Die Dokumentation ist derzeit WIP (in Arbeit) und soll nach Fertigstellung veröffentlicht werden
- Wayland wurde nicht verwendet, weil es für allgemeine IPC-Zwecke ungeeignet sei
- Ein D-Bus-Kompatibilitäts-Proxy (
hyprtavern-dbus-notification-proxy) ist möglich
- Warum C++ statt Rust verwendet wurde: weil C++ die Hauptsprache des Entwicklers ist
- In Bezug auf Sicherheit lassen sich LD_PRELOAD-Angriffe nicht vollständig verhindern, aber die Struktur erhöht die Angriffshürde und verbessert die Erkennbarkeit
Fazit
- D-Bus gilt wegen fehlender Standardisierung, mangelnder Sicherheit und Inkonsistenz als Engpass im Linux-Desktop-Ökosystem
hyprtavern wird als moderner und sicherer IPC-Bus entwickelt, der D-Bus ersetzen soll,
voraussichtlich mit schrittweiser Einführung rund um das Hyprland-Ökosystem
- Das Ziel ist, „den Userspace angenehmer zu machen“
Noch keine Kommentare.