run0: alat pengganti sudo dari systemd
- Alat baru yang disertakan dalam v256 (sebenarnya hanya
systemd-run yang di-symlink)
- Bekerja mirip sudo, tetapi bukan SUID
- Meminta service manager untuk memanggil perintah atau shell dengan UID pengguna target
- Memanggil perintah target dalam konteks eksekusi terisolasi yang baru di-fork dari PID 1, tanpa mewarisi konteks dari klien
- run0 tidak mengimplementasikan bahasa konfigurasi sendiri, dan menggunakan polkit untuk otorisasi.
- Saat eskalasi hak akses, latar terminal diubah menjadi nuansa merah untuk memberi tahu bahwa sistem sedang berjalan dengan hak istimewa. Pada judul jendela juga ditampilkan titik merah yang menandakan status eskalasi hak akses.
- Mendukung switch
--property= milik systemd-run, sehingga pengaturan service yang diinginkan dapat ditentukan untuk perintah/sesi istimewa yang dipanggil.
Masalah sudo
- sudo adalah biner SUID yang relatif besar, yakni kode istimewa yang dapat dipanggil pengguna non-privileged dari konteks mereka sendiri.
- Memiliki attack surface yang besar karena bahasa konfigurasi yang kompleks, plugin yang bisa dimuat (LDAP, dll.), pencocokan nama host, dan sebagainya.
- Fakta bahwa ia adalah biner SUID adalah masalah terbesarnya. Ia dipanggil oleh kode non-privileged dan mewarisi konteks eksekusi yang dikendalikan oleh kode non-privileged tersebut (variabel lingkungan, atribut penjadwalan proses, alokasi cgroup, konteks keamanan, file descriptor yang diteruskan, dll.). Biner SUID harus membersihkan hal-hal ini dengan sangat hati-hati, tetapi sering kali gagal melakukannya dengan baik.
Lainnya
- Dengan run0, bukan hanya shell, tetapi perintah lain juga bisa dijalankan dengan hak root. Saat program berakhir, warna terminal kembali seperti semula.
- Perubahan warna latar otomatis bisa terasa mengganggu, tetapi dapat diubah atau dinonaktifkan dengan switch
--background=.
- Tampaknya juga memungkinkan untuk sepenuhnya mengganti sudo dengan run0, tetapi tiap distribusi mungkin punya preferensi berbeda.
- Pendekatan plugin sudo seperti dukungan LDAP memiliki banyak masalah. polkit dapat diperluas dengan cara yang dikelola secara aman di systemd.
- Apakah skrip bash dijalankan lewat run0 dapat diperiksa melalui variabel lingkungan
SUDO_xxx yang kompatibel dengan sudo.
Opini GN⁺
- Menarik bahwa run0 diajukan sebagai alternatif untuk sudo yang sering digunakan. Tampaknya ia mewarisi kelebihan sudo sambil menghindari risiko SUID.
- Memberi tahu status eskalasi hak istimewa secara visual dengan jelas tampaknya dapat membantu mengurangi kerusakan akibat kesalahan. Mengubah warna latar terminal mungkin terasa mengganggu, tetapi karena bisa diatur lewat opsi, sepertinya bukan masalah besar.
- Pengaturan otorisasi melalui polkit mungkin kurang fleksibel dibanding sudo, tetapi justru bisa menjadi lebih sederhana dan mengurangi attack surface. Dokumentasi contoh konfigurasi polkit tampaknya akan sangat penting.
- Untuk migrasi skrip lama dan hal lain yang bergantung pada sudo, sudo tampaknya masih perlu disediakan bersama untuk sementara waktu. Namun, untuk lingkungan baru, sebaiknya sejak awal menggunakan run0.
- Dalam jangka panjang, hadirnya run0 diharapkan menjadi momentum untuk berani menghapus SUID dan beralih ke arsitektur yang memusatkan pengelolaan hak sistem pada service sistem. Ini tampak sebagai arah yang diinginkan dari sisi keamanan dan ketangguhan sistem.
1 komentar
Komentar Hacker News