Rilis Bubblewrap 0.4.0, lapisan untuk menciptakan lingkungan sandbox

Tersedia rilis baru dari toolkit ini Bungkus gelembung 0.4.0, dirancang untuk mengatur pekerjaan lingkungan terisolasi di Linux dan beroperasi pada tingkat aplikasi pengguna yang tidak memiliki hak istimewa. Dalam praktiknya, Bubblewrap digunakan oleh proyek Flatpak sebagai lapisan untuk mengisolasi aplikasi yang diluncurkan dari paket. Kode proyek ditulis dalam C dan didistribusikan oleh berlisensi di bawah LGPLv2+.

Untuk isolasi, teknologi virtualisasi container Linux tradisional digunakan, berdasarkan penggunaan cgroups, namespace, Seccomp dan SELinux. Untuk melakukan operasi istimewa guna mengonfigurasi wadah, Bubblewrap diluncurkan dengan hak root (file yang dapat dieksekusi dengan tanda suid) dan kemudian menyetel ulang hak istimewa setelah wadah diinisialisasi.

Aktivasi namespace pengguna dalam sistem namespace, yang memungkinkan Anda menggunakan kumpulan pengidentifikasi terpisah dalam container, tidak diperlukan untuk pengoperasian, karena ini tidak berfungsi secara default di banyak distribusi (Bubblewrap diposisikan sebagai implementasi suid terbatas dari a bagian dari kemampuan ruang nama pengguna - untuk mengecualikan semua pengidentifikasi pengguna dan proses dari lingkungan, kecuali yang saat ini, mode CLONE_NEWUSER dan CLONE_NEWPID digunakan). Untuk perlindungan tambahan, dapat dieksekusi di bawah kendali
Program bubblewrap diluncurkan dalam mode PR_SET_NO_NEW_PRIVS, yang melarang perolehan hak istimewa baru, misalnya, jika ada tanda setuid.

Isolasi pada tingkat sistem file dilakukan dengan membuat namespace mount baru secara default, di mana partisi root kosong dibuat menggunakan tmpfs. Jika perlu, partisi FS eksternal dilampirkan ke partisi ini dalam mode “mount —bind” (misalnya, ketika diluncurkan dengan opsi “bwrap —ro-bind /usr /usr”, partisi /usr diteruskan dari sistem utama dalam mode hanya baca). Kemampuan jaringan terbatas pada akses ke antarmuka loopback dengan isolasi tumpukan jaringan melalui flag CLONE_NEWNET dan CLONE_NEWUTS.

Perbedaan utama dari proyek serupa penjara api, yang juga menggunakan model peluncuran setuid, adalah bahwa dalam Bubblewrap lapisan pembuatan kontainer hanya mencakup kemampuan minimum yang diperlukan, dan semua fungsi lanjutan yang diperlukan untuk menjalankan aplikasi grafis, berinteraksi dengan desktop, dan memfilter panggilan ke Pulseaudio dialihdayakan ke Flatpak dan dijalankan setelah hak istimewa diatur ulang. Firejail, di sisi lain, menggabungkan semua fungsi terkait dalam satu file yang dapat dieksekusi, sehingga menyulitkan audit dan pemeliharaan keamanan pada tingkat yang tepat.

Rilis baru ini terkenal karena implementasi dukungan untuk bergabung dengan namespace pengguna yang ada dan memproses namespace pid. Untuk mengontrol koneksi namespace, flag “--userns”, “--userns2” dan “-pidns” telah ditambahkan.
Fitur ini tidak berfungsi dalam mode setuid dan memerlukan penggunaan mode terpisah yang dapat bekerja tanpa mendapatkan hak root, tetapi memerlukan aktivasi
ruang nama pengguna pada sistem (dinonaktifkan secara default pada Debian dan RHEL/CentOS) dan tidak mengecualikan kemungkinan Operasi berpotensi tersisa kerentanan untuk pelek pembatasan "ruang nama pengguna". Fitur baru Bubblewrap 0.4 juga mencakup kemampuan untuk membangun dengan pustaka musl C alih-alih glibc dan dukungan untuk menyimpan informasi namespace ke file dengan statistik dalam format JSON.

Sumber: opennet.ru

Tambah komentar