Sebuah temuan keamanan baru-baru ini mengungkap bahwa konfigurasi default dari Omarchy, distribusi Linux berbasis Arch yang dirancang untuk desktop, memiliki masalah serius: hampir semua program yang berjalan di session user bisa melakukan eskalasi ke root tanpa password, tanpa sudo, dan tanpa prompt privilege. Akar masalahnya sederhana, user default menjadi anggota grup docker.
Artikel ini membahas detail kerentanan tersebut, mengapa keanggotaan grup docker pada dasarnya setara dengan akses root, bagaimana proof of concept-nya bekerja, dan langkah-langkah yang bisa diambil untuk mengamankan sistem.
Kronologi Penemuan
Kerentanan ini dilaporkan secara privat melalui proses responsible disclosure ke proyek Omarchy. Setelah dilaporkan, konfigurasi yang bermasalah berhasil diperbaiki, dan sekarang tersedia versi 4.0.1 yang mengatasi masalah tersebut. Setelah patch dirilis, detail teknis dipublikasikan agar pengguna memahami apa yang terjadi dan segera memperbarui sistem mereka.
Pola ini adalah contoh yang baik dari alur penanganan kerentanan: peneliti menemukan masalah, melaporkan secara privat, pengembang memperbaiki, lalu informasi dibuka untuk publik setelah patch tersedia. Pengguna yang belum memperbarui tetap berisiko, karena detail eksploitasi sekarang sudah diketahui umum.
Akar Masalah: Grup Docker
Masalahnya dimulai dari konfigurasi default Omarchy yang menempatkan user sebagai anggota grup docker. Pada Arch Linux, daemon Docker berjalan sebagai root dan mendengarkan di socket /var/run/docker.sock. Anggota grup docker dapat berkomunikasi dengan socket tersebut tanpa perlu mengetik sudo.
Docker sendiri sudah memperingatkan sejak lama bahwa grup docker memberikan hak setara root kepada penggunanya. Alasannya jelas: dengan akses ke socket Docker, seseorang bisa meminta daemon untuk menjalankan container sebagai root, memasang bagian mana pun dari filesystem host ke dalam container, dan menjalankan kode sebagai root di dalamnya.
Pada sistem yang terdampak, ini berarti user default dan semua proses yang berjalan di session user memiliki akses ke root. Ini bukan bug di Docker, tetapi konsekuensi dari konfigurasi yang menempatkan user di grup yang memang didesain untuk memberikan akses istimewa.
Proof of Concept
Untuk membuktikan masalah ini, peneliti menunjukkan langkah-langkah berikut pada instalasi Omarchy yang baru. Pertama, mencoba membaca file sensitif sebagai user biasa:
$ cat /etc/shadow
cat: /etc/shadow: Permission denied
Seperti yang diharapkan, user biasa tidak bisa membaca file tersebut. Selanjutnya, memeriksa keanggotaan grup:
$ id
uid=1000(tester) gid=1000(tester)
groups=1000(tester),967(docker),992(input),998(wheel)
Terlihat bahwa user berada dalam grup docker. Sekarang, membaca file yang sama dengan bantuan Docker yang berjalan sebagai root:
$ docker run --rm -v /:/hostroot alpine cat /hostroot/etc/shadow
root:$6$... bin:!*:... daemon:!*:...
Perintah ini dijalankan oleh proses user biasa, tetapi akses filesystem sebenarnya dilakukan melalui daemon yang berjalan sebagai root. Hasilnya, konten /etc/shadow bisa dibaca tanpa password apa pun.
Mengapa Ini Berbahaya
Bahaya dari kerentanan ini tidak terbatas pada kemampuan membaca /etc/shadow. Akses ke socket Docker berarti kemampuan untuk melakukan apa pun sebagai root, termasuk:
- Membaca, memodifikasi, atau menghapus file apa pun di host dengan memasang filesystem ke dalam container.
- Menjalankan kode berbahaya sebagai root di dalam container.
- Memasang backdoor yang bertahan setelah reboot.
- Mencuri kredensial dari proses lain yang berjalan di sistem.
- Mengubah konfigurasi sistem dan menonaktifkan keamanan.
Yang lebih mengkhawatirkan: supplementary group di Linux diwariskan ke proses anak. Artinya, dampaknya tidak terbatas pada shell interaktif. Semua proses yang berjalan di bawah user session, termasuk aplikasi desktop, browser, dan layanan latar belakang, juga memiliki akses grup docker. Proses tree di bawah systemd --user menunjukkan bahwa grup docker hadir di hampir semua proses normal.
Dalam praktiknya, ini berarti satu aplikasi yang terkompromi, misalnya browser yang kena eksploitasi, sudah cukup untuk mengambil alih seluruh sistem.
Kenapa Grup Docker Setara dengan Root
Banyak pengguna tidak menyadari seberapa besar kekuatan yang diberikan oleh grup docker. Logika dasarnya begini: daemon Docker berjalan sebagai root, dan socket-nya memungkinkan siapa pun yang bisa mengaksesnya untuk mengirim perintah. Salah satu perintah yang bisa dikirim adalah menjalankan container dengan volume yang dipasang dari host.
Dengan menjalankan container seperti ini:
docker run -v /:/host -it alpine sh
Seseorang mendapatkan shell di dalam container yang memiliki akses penuh ke seluruh filesystem host. Karena proses di dalam container dijalankan oleh daemon yang berjalan sebagai root, maka operasi file pun dilakukan dengan hak root. Tidak ada mekanisme yang membatasi ini; Docker memang dirancang seperti itu.
Inilah mengapa dokumentasi Docker menegaskan bahwa menambahkan user ke grup docker sebaiknya dihindari kecuali benar-benar diperlukan, dan bahkan saat diperlukan, penggunanya harus dipercaya penuh seperti pengguna root.
Langkah Mitigasi
Bagi pengguna Omarchy, langkah pertama dan paling penting adalah memperbarui ke versi 4.0.1 yang sudah memasukkan perbaikan konfigurasi. Setelah itu, periksa apakah user masih berada di grup docker:
groups
Kalau user masih terdaftar di grup docker dan tidak benar-benar membutuhkannya, keluarkan user dari grup tersebut:
sudo gpasswd -d $USER docker
Untuk pengguna yang memang membutuhkan akses Docker secara rutin, pertimbangkan alternatif yang lebih aman:
- Gunakan rootless Docker, yang menjalankan daemon dan container tanpa hak root.
- Batasi akses ke socket Docker dengan mekanisme seperti
docker contextyang terisolasi. - Jalankan container hanya melalui pipeline CI yang sudah dikontrol, bukan dari session user biasa.
- Gunakan Podman sebagai alternatif yang mendukung rootless secara native.
Prinsip umumnya: jangan pernah memberikan akses grup docker kepada user yang tidak sepenuhnya dipercaya, karena itu sama saja dengan memberikan akses root.
Pelajaran untuk Distribusi dan Pengguna
Kerentanan ini adalah pengingat bahwa konfigurasi default memiliki dampak keamanan yang besar. Apa yang terlihat seperti kemudahan, menempatkan user di grup docker agar tidak perlu sudo setiap kali menjalankan container, sebenarnya membuka pintu lebar untuk eskalasi privilege.
Bagi pengguna Linux pada umumnya, ada beberapa pelajaran yang bisa diambil:
- Periksa keanggotaan grup secara berkala, terutama grup yang memberikan hak istimewa seperti docker, wheel, dan sudo.
- Jangan pernah menambahkan user ke grup istimewa tanpa alasan yang jelas dan tanpa memahami risikonya.
- Ikuti proses responsible disclosure: laporkan masalah secara privat dan tunggu patch sebelum memublikasikan detail.
- Perbarui sistem secara rutin, karena patch keamanan sering kali menjadi satu-satunya pertahanan terhadap eksploitasi yang sudah dipublikasikan.
Perbandingan dengan Eskalasi Root Konvensional
Eksploitasi privilege escalation biasanya dibayangkan sebagai rangkaian teknik rumit: buffer overflow, race condition, atau chain CVE yang panjang. Kerentanan Omarchy menunjukkan sisi lain dari spektrum: kadang-kadang celah paling berbahaya bukan di kernel, tetapi di konfigurasi default yang salah.
Perbedaan pentingnya, eksploitasi teknis biasanya butuh kondisi tertentu dan sering kali gagal, sedangkan celah konfigurasi seperti ini bekerja seratus persen setiap saat. Tidak ada race condition yang harus dimenangkan, tidak ada mitigasi kernel yang harus dilewati. Cukup satu perintah docker, dan akses root didapat. Ini membuat risiko yang ditimbulkan jauh lebih dapat diprediksi dan lebih mudah dieksploitasi oleh siapa pun, termasuk attacker dengan keahlian rendah.
Dari sudut pandang pertahanan, celah konfigurasi juga lebih sulit dideteksi oleh tool otomatis. Scanner kerentanan biasanya mencari versi package yang rentan atau pola eksploitasi yang dikenal, bukan mengevaluasi apakah user seharusnya berada di grup docker. Karena itu, audit manual terhadap keanggotaan grup dan hak istimewa user tetap menjadi bagian penting dari praktik keamanan.
Membangun Kebiasaan Audit Hak Istimewa
Insiden seperti ini adalah pengingat untuk membangun kebiasaan audit sederhana yang bisa dilakukan secara rutin. Beberapa perintah dan praktik yang berguna:
- Periksa keanggotaan grup user secara berkala dengan
groupsdanid. - Tinjau file
/etc/groupuntuk melihat siapa saja yang masuk grup istimewa seperti docker, sudo, dan wheel. - Gunakan rootless container runtime untuk workload yang tidak membutuhkan akses penuh host.
- Batasi akses ke socket Docker dengan memastikan socket hanya bisa diakses oleh proses yang memang membutuhkannya.
- Dokumentasikan alasan setiap user diberikan akses istimewa, dan cabut akses begitu alasan itu tidak berlaku.
Kebiasaan audit ini tidak memakan waktu lama, tetapi bisa mencegah insiden yang biayanya jauh lebih besar. Dalam keamanan, pencegahan yang murah selalu lebih baik daripada respons yang mahal.
Bagi pengguna Omarchy secara khusus, insiden ini juga menjadi momen untuk mengevaluasi kembali asumsi tentang konfigurasi default. Distribusi desktop sering kali memilih kemudahan daripada keamanan, dan dalam banyak kasus itu keputusan yang wajar. Tetapi untuk hak istimewa tingkat root, trade-off seperti itu tidak bisa dibenarkan. Kemudahan menjalankan docker tanpa sudo tidak sebanding dengan risiko kehilangan kendali atas seluruh sistem, dan alternatif seperti rootless Docker sudah tersedia untuk menutup jarak antara kemudahan dan keamanan. Ini juga pengingat bahwa dokumentasi resmi sering kali memuat peringatan yang sebaiknya tidak diabaikan: peringatan Docker tentang grup docker bukan sekadar formalitas, tetapi peringatan keamanan yang didasarkan pada cara kerja sistem yang sebenarnya.
Kalau ada satu pesan yang bisa dibawa pulang dari insiden ini, itu adalah: periksa hak istimewa yang dimiliki setiap user dan setiap proses di sistem Anda hari ini, bukan minggu depan. Satu perintah id dan satu menit membaca outputnya sudah cukup untuk menemukan masalah seperti ini sebelum orang lain menemukannya untuk Anda.
Dalam dunia keamanan, insiden seperti ini sering disebut sebagai low-hanging fruit: celah yang sederhana, murah untuk dieksploitasi, dan berdampak besar. Justru karena sederhana, celah seperti ini paling sering terlewat, dan justru karena itu juga paling mudah ditutup begitu diketahui. Tidak ada alasan untuk menunda.
Kesimpulan
Kerentanan Omarchy menunjukkan bahwa eskalasi root tidak selalu membutuhkan eksploitasi kernel yang rumit. Kadang-kadang, konfigurasi default yang tampak sepele, seperti keanggotaan grup docker, sudah cukup untuk memberikan akses penuh ke sistem.
Kabarnya, perbaikan sudah tersedia di versi 4.0.1, dan pengguna disarankan untuk segera memperbarui. Untuk semua pengguna Linux, ini juga menjadi pengingat untuk selalu memeriksa hak istimewa yang dimiliki user dan proses yang berjalan di sistem, karena dalam keamanan, asumsi yang salah bisa berujung pada kehilangan kendali penuh atas mesin.
Keamanan bukan tentang menambah fitur, tetapi tentang mengurangi permukaan serangan. Mengeluarkan user dari grup yang tidak dibutuhkan adalah salah satu langkah paling sederhana dan paling efektif yang bisa dilakukan hari ini.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬