Mekanisme isolasi yang mirip dengan plegde dan unveil sedang dikembangkan untuk FreeBSD

Untuk FreeBSD, implementasi mekanisme isolasi aplikasi diusulkan, mengingatkan pada plegde dan mengungkap panggilan sistem yang dikembangkan oleh proyek OpenBSD. Isolasi dalam plegde dicapai dengan melarang akses ke panggilan sistem yang tidak digunakan dalam aplikasi, dan secara terbuka dengan secara selektif membuka akses hanya ke jalur file individual yang dapat digunakan oleh aplikasi. Untuk aplikasi, semacam daftar putih panggilan sistem dan jalur file dibentuk, dan semua panggilan dan jalur lainnya dilarang.

Perbedaan antara analog plegde dan unveil yang dikembangkan untuk FreeBSD terletak pada penyediaan lapisan tambahan yang memungkinkan Anda mengisolasi aplikasi tanpa membuat perubahan pada kodenya atau dengan sedikit perubahan. Ingatlah bahwa di OpenBSD, plegde dan unveil ditujukan untuk integrasi yang erat dengan lingkungan yang mendasarinya dan digunakan dengan menambahkan anotasi khusus pada kode setiap aplikasi. Untuk menyederhanakan organisasi perlindungan, filter memungkinkan Anda membuang detail pada tingkat panggilan sistem individual dan memanipulasi kelas panggilan sistem (input/output, membaca file, menulis file, soket, ioctl, sysctl, peluncuran proses, dll.) . Fungsi pembatasan akses dapat dipanggil dalam kode aplikasi saat tindakan tertentu dilakukan, misalnya, akses ke soket dan file dapat ditolak setelah membuka file yang diperlukan dan membuat koneksi jaringan.

Pembuat port plegde dan pengungkapan untuk FreeBSD bermaksud memberikan kemampuan untuk mengisolasi aplikasi arbitrer, yang mana utilitas tirai diusulkan, yang memungkinkan Anda menerapkan aturan yang ditentukan dalam file terpisah ke aplikasi. Konfigurasi yang diusulkan mencakup file dengan pengaturan dasar yang menentukan kelas panggilan sistem dan jalur file tipikal khusus untuk aplikasi tertentu (bekerja dengan suara, interaksi jaringan, logging, dll.), serta file dengan aturan akses untuk aplikasi tertentu.

Utilitas tirai dapat digunakan untuk mengisolasi sebagian besar utilitas yang tidak dimodifikasi, proses server, aplikasi grafis, dan bahkan seluruh sesi desktop. Tirai dapat digunakan bersama dengan mekanisme isolasi yang disediakan oleh subsistem Penjara dan Capsicum. Dimungkinkan juga untuk mengatur isolasi bersarang, ketika aplikasi yang diluncurkan mewarisi aturan yang ditetapkan untuk aplikasi induk, melengkapinya dengan batasan individual. Beberapa operasi kernel (fasilitas debugging, POSIX/SysV IPC, PTYs) juga dilindungi oleh mekanisme penghalang yang mencegah akses ke objek kernel yang tidak dibuat oleh proses saat ini atau proses induk.

Suatu proses dapat mengkonfigurasi isolasinya sendiri dengan memanggil tiraictl atau dengan menggunakan fungsi plegde() dan unveil() libcurtain, mirip dengan yang ditemukan di OpenBSD. Untuk melacak kunci saat aplikasi berjalan, sysctl 'security.curtain.log_level' disediakan. Akses ke protokol X11 dan Wayland diaktifkan secara terpisah dengan menentukan opsi β€œ-X”/”-Y” dan β€œ-W” saat menjalankan tirai, namun dukungan untuk aplikasi grafis belum cukup stabil dan memiliki sejumlah masalah yang belum terselesaikan ( masalah terutama muncul saat menggunakan X11, dan dukungan Wayland diterapkan jauh lebih baik). Pengguna dapat menambahkan batasan tambahan dengan membuat file aturan lokal (~/.curtain.conf). Misalnya, untuk mengizinkan penulisan dari Firfox hanya ke direktori ~/Downloads/, Anda dapat menambahkan bagian β€œ[firefox]” dengan aturan β€œ~/Downloads/ : rw +”.

Implementasinya mencakup modul kernel mac_curtain untuk kontrol akses wajib (MAC, Mandatory Access Control), satu set patch untuk kernel FreeBSD dengan implementasi penangan dan filter yang diperlukan, perpustakaan libcurtain untuk menggunakan fungsi plegde dan unveil dalam aplikasi, utilitas tirai, contoh file konfigurasi, serangkaian tes dan patch untuk beberapa program di ruang pengguna (misalnya, untuk menggunakan $TMPDIR untuk menyatukan pekerjaan dengan file sementara). Jika memungkinkan, penulis bermaksud untuk meminimalkan jumlah perubahan yang memerlukan patch pada kernel dan aplikasi.

Sumber: opennet.ru

Tambah komentar