Ia dirancang untuk memindahkan mekanisme pengasingan ikrar ke Linux

Baru-baru ini pengarang perpustakaan standard Cosmopolitan C dan platform Redbean diumumkan melalui a mengumumkan, pelaksanaan mekanisme pengasingan ikrar() untuk Linux.

Ia adalah pada asalnya dibangunkan oleh projek OpenBSD y membolehkan anda melarang secara selektif bahawa aplikasi mengakses panggilan sistem yang tidak digunakan (sejenis senarai putih panggilan sistem dibentuk untuk aplikasi dan panggilan lain adalah dilarang). Tidak seperti mekanisme kawalan capaian syscall yang tersedia di Linux, seperti seccomp, mekanisme ikrar direka dari bawah untuk menjadi mesra pengguna yang mungkin.

Inisiatif yang gagal untuk mengasingkan aplikasi dalam persekitaran asas OpenBSD menggunakan mekanisme systrace menunjukkan bahawa pengasingan pada tahap panggilan sistem individu adalah terlalu rumit dan memakan masa.

Sebagai alternatif, ikrar telah dicadangkan, yang dibenarkan membuat peraturan pengasingan tanpa memasukkan butiran dan memanipulasi kelas akses yang disediakan.

Sebagai contoh, kelas yang ditawarkan ialah stdio (input/output), rpath (fail baca sahaja), wpath (tulis fail), cpath (buat fail), tmppath (bekerja dengan fail sementara), inet (rangkaian soket), unix (soket unix ), dns (resolusi DNS), getpw (akses baca ke pangkalan data pengguna), ioctl (panggilan ioctl), proc (kawalan proses), exec (proses permulaan), dan id (kawalan kebenaran).

Peraturan untuk bekerja dengan panggilan sistem dinyatakan dalam bentuk anotasi yang termasuk senarai kelas panggilan sistem yang dibenarkan dan tatasusunan laluan fail di mana akses dibenarkan. Selepas menyusun dan menjalankan aplikasi yang diubah suai, kernel mengambil alih tugas memantau pematuhan dengan peraturan yang ditentukan.

Secara berasingan, pelaksanaan ikrar untuk FreeBSD sedang dibangunkan, yang dibezakan dengan keupayaan untuk mengasingkan aplikasi tanpa membuat perubahan pada kod mereka, manakala dalam OpenBSD panggilan ikrar bertujuan untuk penyepaduan yang ketat dengan persekitaran asas dan penambahan anotasi pada kod setiap satu.

Ikrar adalah seperti buah terlarang yang kita semua idamkan apabila bos mengatakan kita harus menggunakan perkara seperti Linux. Mengapa perkara itu penting? Ini kerana ikrar() sebenarnya menjadikan keselamatan boleh difahami. Linux tidak pernah benar-benar mempunyai lapisan keselamatan yang boleh difahami oleh manusia biasa.

Pembangun pelabuhan ikrar Linux mengambil petunjuk daripada FreeBSD dan bukannya membuat perubahan kod, mereka menyediakan utiliti tambahan daripada pledge.com yang membolehkan anda menggunakan sekatan tanpa mengubah kod aplikasi. Contohnya, untuk menjalankan utiliti curl dengan akses hanya kepada kelas panggilan sistem stdio, rpath, inet dan threadstdio, hanya jalankan "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Utiliti ini berfungsi pada semua pengedaran Linux sejak RHEL6 dan tidak memerlukan akses root. Selain itu, berdasarkan perpustakaan kosmopolitan, API disediakan untuk mengurus sekatan dalam kod program bahasa C, yang membolehkan, antara lain, membuat enklaf untuk menyekat akses secara terpilih berhubung dengan fungsi tertentu aplikasi. .

Terdapat beberapa pembangun pada masa lalu yang telah mencuba ini. Saya tidak akan menamakan nama, kerana kebanyakan projek ini tidak pernah disiapkan. Mengenai SECOMP, tutorial dalam talian hanya menerangkan cara menyenarai putihkan panggilan sistem, jadi kebanyakan orang kehilangan minat sebelum memikirkan cara menapis hujah. Projek yang bergerak ke hadapan juga mempunyai kesilapan seperti membenarkan bit setuid/setgid/sticky ditukar. Oleh itu, tiada alternatif semasa harus digunakan. Saya fikir usaha ini membawa kita lebih dekat untuk mempunyai ikrar() berbanding sebelum ini.

Pelaksanaan tidak memerlukan perubahan kernel: kekangan utiliti diterjemahkan ke dalam peraturan SECCOMP BPF dan diproses menggunakan mekanisme pengasingan panggilan sistem asli Linux. Contohnya, memanggil promise("stdio rpath", 0) akan ditukar kepada penapis BPF

Akhirnya, jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh melihat butirannya Dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.