- D-Bus adalah bus untuk komunikasi antar-aplikasi; konsepnya berguna, tetapi implementasinya sangat buruk dan tidak standar
- Dokumen standarnya tidak lengkap dan tidak konsisten, dan implementasi nyata tidak mengikutinya sehingga terjadi keruntuhan kompatibilitas
- Celah keamanan juga serius; aplikasi dapat membaca data rahasia aplikasi lain saat penyimpanan dalam keadaan tidak terkunci
- Sebagai tanggapan, penulis sedang mengembangkan sistem bus baru 'hyprtavern' dan protokol 'hyprwire'
- hyprtavern berupaya menyelesaikan masalah struktural D-Bus melalui pemeriksaan tipe yang ketat, manajemen izin bawaan, penyimpanan rahasia aman (kv), dan lainnya
Konsep dan batasan D-Bus
- D-Bus adalah sistem yang memungkinkan aplikasi dan layanan mengekspos metode serta properti melalui bus bersama (bus) dan saling memanggil
- Misalnya, jika aplikasi yang menyediakan layanan cuaca mendaftarkan API ke bus, aplikasi lain dapat menemukannya dan menggunakannya
- Namun, karena D-Bus memiliki desain yang terlalu permisif dan tidak terstruktur, objek apa pun dapat mendaftarkan dan memanggil metode arbitrer
- Akibatnya muncul fenomena "Garbage in, garbage out"
Kekacauan dokumen standar dan implementasi
- Dokumen standar D-Bus tersebar di berbagai tempat dan hadir dalam bentuk yang belum selesai serta sulit dipahami
- Implementasi nyata tidak mengikutinya, atau secara sembarang memakai spesifikasi yang berbeda satu sama lain
- Penulis menjelaskan bahwa saat mengembangkan xdg-desktop-portal-hyprland ia mengimplementasikan spesifikasi "restore_token",
tetapi semua aplikasi memakai field tidak resmi "restore_data" sehingga tidak kompatibel
- Tipe variant(a{sv}) pada D-Bus memungkinkan pengiriman data arbitrer, dan disebut sebagai penyebab utama rusaknya konsistensi protokol
Cacat pada struktur keamanan
- D-Bus tidak memiliki manajemen izin terpusat maupun mekanisme penolakan
- Semua aplikasi dapat melihat panggilan aplikasi lain, dan tanpa mekanisme keamanan eksplisit, akses tak terbatas dimungkinkan
- Penyimpanan rahasia seperti gnome-keyring, kwallet juga rapuh secara struktural
- Begitu penyimpanan dibuka, semua aplikasi dapat mengakses semua data rahasia
- Penulis menyebut ini sebagai "lelucon keamanan"
Alternatif baru: hyprwire dan hyprtavern
- Untuk mengatasi masalah D-Bus, penulis sedang mengembangkan sistem bus baru 'hyprtavern'
- hyprwire adalah protokol wire yang ringkas dan konsisten yang terinspirasi dari desain Wayland
- Ciri utamanya adalah pemaksaan tipe, koneksi cepat, dan struktur sederhana
- hyprtavern memiliki struktur tempat aplikasi mendaftarkan objek berbasis protokol dan saling menemukan
- Menyediakan sistem izin bawaan, kepatuhan protokol yang ketat, API yang disederhanakan, dan default yang aman
hyprtavern-kv (penyimpanan key-value aman)
- Protokol inti (core) yang menggantikan Secrets API milik D-Bus
- Rahasia yang didaftarkan aplikasi hanya dapat dibaca oleh aplikasi tersebut, dan tidak dapat dienumerasi (enumeration)
- Kontrol akses berbasis ID untuk aplikasi Flatpak, Snap, AppImage juga direncanakan
- Selalu disimpan dalam keadaan terenkripsi, dan saat kata sandi disetel, jaminan keamanan yang nyata dimungkinkan
- Semua aplikasi dapat memakai fungsi penyimpanan rahasia aman secara default
Status pengembangan dan rencana ke depan
- hyprtavern masih berada pada tahap awal pengembangan, dan direncanakan akan dipakai secara internal pada Hyprland versi 0.54
- Adopsi awal diperkirakan terbatas, tetapi transisi bertahap dimungkinkan
- Berbeda dengan D-Bus, beberapa session bus dapat dijalankan paralel sehingga proxy kompatibilitas juga bisa dibuat
- Ditulis dalam C++, dan binding Rust, Go, Python juga dapat diimplementasikan dengan mudah
- Penulis menegaskan bahwa "D-Bus pada dasarnya tidak bisa diperbaiki dan harus didesain ulang sepenuhnya"
Ringkasan FAQ
- Menanggapi kritik bahwa ini "menciptakan ulang roda", ia menyebut desain fundamental D-Bus sudah rusak sehingga redesain tak terelakkan
- Dokumentasi saat ini masih berstatus WIP (dalam proses pengerjaan) dan akan dipublikasikan setelah selesai
- Alasan tidak menggunakan Wayland adalah karena tidak cocok untuk IPC umum
- Proxy kompatibilitas D-Bus (hyprtavern-dbus-notification-proxy) dapat dibuat
- Alasan memakai C++ alih-alih Rust adalah karena bahasa utama pengembang adalah C++
- Dari sisi keamanan, serangan LD_PRELOAD sulit diblokir sepenuhnya, tetapi strukturnya dirancang untuk meningkatkan tingkat kesulitan serangan dan kemungkinan deteksi
Kesimpulan
- D-Bus disebut sebagai hambatan dalam ekosistem desktop Linux karena tidak standar, tidak aman, dan tidak konsisten
- hyprtavern sedang dikembangkan sebagai bus IPC modern dan aman untuk menggantikannya,
dengan adopsi bertahap yang diperkirakan berpusat pada ekosistem Hyprland
- Tujuannya adalah "membuat userspace lebih nyaman"
Belum ada komentar.