mem-isolate: Keselamatan Memori Berasaskan Fork Mempunyai Batasan Serius, Pakar Memberi Amaran
mem-isolate: Keselamatan Memori Berasaskan Fork Mempunyai Batasan Serius, Pakar Memberi Amaran
Komuniti Rust kini sedang membincangkan perpustakaan mem-isolate yang baru dikeluarkan, yang menjanjikan untuk menjalankan kod tidak selamat dengan selamat melalui teknik yang mengasingkan operasi berbahaya dalam proses yang difork. Walaupun pendekatan ini bijak, pakar keselamatan dan pengaturcaraan sistem telah menimbulkan kebimbangan ketara tentang batasannya dan potensi penyalahgunaannya.mem-isolate berfungsi dengan melaksanakan fungsi dalam proses anak yang diasingkan yang dicipta melalui panggilan sistem POSIX fork(). Pendekatan ini mencipta salinan ruang memori proses induk, membolehkan operasi tidak selamat dijalankan tanpa menjejaskan ruang memori proses asal. Apabila fungsi selesai, hasilnya diserialisasikan kembali kepada proses induk melalui paip, dan proses anak ditamatkan.Batasan KeselamatanPakar keselamatan dalam komuniti telah menunjukkan bahawa mem-isolate sebenarnya tidak menyediakan tahap keselamatan yang diimplikasikan oleh namanya. Perpustakaan ini tidak memenuhi definisi Rust tentang kod selamat, yang memerlukan jaminan keselamatan memori spatial dan temporal.Saya tidak fikir ini memenuhi definisi 'selamat' dalam Rust yang selamat: selamat bukan sahaja bermaksud tidak akan gagal disebabkan oleh ralat memori spatial, ia bermaksud bahawa kod itu sebenarnya selamat dari segi memori spatial dan temporal.Dari perspektif keselamatan, pengasingan yang disediakan adalah cetek. Proses yang difork mengekalkan salinan lengkap keadaan program, termasuk apa-apa rahsia dalam memori. Ini bermakna kod tidak selamat yang boleh dieksploitasi masih boleh mengakses maklumat sensitif dalam persekitaran yang diasingkan. Tambahan pula, proses anak mengekalkan keistimewaan yang sama seperti induk, jadi kelemahan pelaksanaan kod masih boleh dieksploitasi.Batasan Utama mem-isolate:Hanya berfungsi pada sistem POSIX (Linux, macOS, BSD)Menambah overhead sekitar 1.9ms bagi setiap panggilan fungsi (berbanding 1.5ns untuk panggilan terus)Memerlukan pengserialan data yang dikembalikan antara prosesBerpotensi berbahaya dalam aplikasi berbilang bebenangTidak menghalang eksploitasi yang tidak menyebabkan kerosakan sistemProses anak mempunyai keistimewaan dan akses memori yang sama seperti proses indukBoleh menyebabkan kebuntuan jika proses bercabang ketika mutex sedang dipegangKebimbangan Teknikal dengan ForkPakar pengaturcaraan sistem telah menekankan bahawa fork() adalah API yang bermasalah untuk kes penggunaan ini, terutamanya dalam aplikasi berbilang benang. Apabila proses difork, seluruh keadaan memori direplikasi, termasuk keadaan mutex dan kunci. Jika mana-mana benang memegang kunci pada masa forking, proses anak boleh mengalami deadlock.Walaupun operasi mudah seperti mencetak atau peruntukan memori boleh menyebabkan pembekuan dalam proses yang difork. Penimbal ruang pengguna yang tidak dibilas sebelum callback selesai akan hilang. Isu-isu ini menjadikan mem-isolate berpotensi berbahaya dalam aplikasi kompleks.Implikasi PrestasiPerpustakaan ini memperkenalkan overhed prestasi yang ketara, dengan penanda aras menunjukkan bahawa execute_in_isolated_process() mengambil masa kira-kira 1.9ms berbanding dengan 1.5ns untuk panggilan fungsi langsung – lebih sejuta kali lebih perlahan. Walaupun penulis mengakui batasan ini dengan komen jenaka tentang menjalankan kod 1ms lebih perlahan, ahli komuniti menunjukkan bahawa overhed ini menjadikan perpustakaan tidak praktikal untuk banyak kes penggunaan.Ramai pembangun menggunakan kod tidak selamat khusus untuk pengoptimuman prestasi, jadi membungkus kod sedemikian dalam mekanisme yang memperkenalkan overhed yang besar mengalahkan tujuan asal. Seperti yang dinyatakan oleh seorang pengulas, menggunakan pendekatan ini secara meluas boleh menafikan kelebihan prestasi Rust berbanding bahasa seperti Python atau Ruby yang sangat bergantung pada forking untuk keselarian.Penanda Aras Prestasi:Panggilan fungsi langsung: ~1.5nsfork() + wait: ~1.7msexecute_in_isolated_process(): ~1.9msAplikasi PraktikalWalaupun terdapat batasannya, sesetengah pembangun melihat nilai dalam mem-isolate untuk senario tertentu. Perpustakaan ini boleh berguna apabila bekerja dengan kod pihak ketiga yang secara semulajadi tidak selamat yang tidak dapat diperbaiki, terutamanya apabila berinteraksi dengan perpustakaan C. Dalam kes-kes ini, pengasingan yang disediakan mungkin merupakan pertukaran yang boleh diterima untuk keselamatan tambahan, terutamanya dalam laluan yang tidak kritikal dari segi prestasi.Walau bagaimanapun, untuk kebanyakan aplikasi, pakar mengesyorkan pendekatan pengasingan yang lebih teguh. Seni bina berbilang proses yang direka dengan baik dengan saluran IPC terhad dan API sandboxing peringkat OS memberikan jaminan keselamatan yang lebih kukuh. Enjin pelayar seperti Chrome menggunakan pendekatan ini berbanding pengasingan proses yang mudah.Perbincangan mengenai mem-isolate menyoroti cabaran berterusan dalam mengimbangi keselamatan, prestasi, dan kepraktisan dalam pengaturcaraan sistem. Walaupun pendekatan inovatif terhadap keselamatan memori dialu-alukan dalam ekosistem Rust, ia mesti dinilai dengan teliti berbanding amalan terbaik dan model keselamatan yang mantap.Rujukan: mem-isolate: Run unsafe code safely
Keamanan
11 jam yang lalu
Model AI WHAMM Microsoft Menjalankan Quake II dalam Pelayar dengan Grafik Generatif Masa Nyata
AI
12 jam yang lalu
Model AI WHAMM Microsoft Menjalankan Quake II dalam Pelayar dengan Grafik Generatif Masa Nyata
Ubisoft Dilaporkan Membangunkan Permainan Strategi Berinspirasi XCOM untuk Rainbow Six Siege
Permainan Konsol
13 jam yang lalu
Ubisoft Dilaporkan Membangunkan Permainan Strategi Berinspirasi XCOM untuk Rainbow Six Siege
Fon Sparks Mencipta Visualisasi Data Dalam Teks, Tetapi Mencetuskan Perbahasan Mengenai Definisi
AI
17 jam yang lalu
Fon Sparks Mencipta Visualisasi Data Dalam Teks, Tetapi Mencetuskan Perbahasan Mengenai Definisi
Plugin Pytest.nvim Mengintegrasikan Pengujian Terus dalam Neovim dengan Sokongan Docker
17 jam yang lalu
Plugin Pytest.nvim Mengintegrasikan Pengujian Terus dalam Neovim dengan Sokongan Docker
Sistem OCR Menimbulkan Kebimbangan Tentang Risiko Halusinasi AI dan Penggunaan Data Beretika
AI
17 jam yang lalu
Sistem OCR Menimbulkan Kebimbangan Tentang Risiko Halusinasi AI dan Penggunaan Data Beretika
uWrap: Penyelesaian Pembungkusan Teks Ringan yang Telah Ditunggu oleh Pembangun
Aplikasi
23 jam yang lalu
uWrap: Penyelesaian Pembungkusan Teks Ringan yang Telah Ditunggu oleh Pembangun
SpacetimeDB Mencetuskan Perbahasan Mengenai Pelesenan Pangkalan Data dan Aplikasi Pembangunan Permainan
Semalam
SpacetimeDB Mencetuskan Perbahasan Mengenai Pelesenan Pangkalan Data dan Aplikasi Pembangunan Permainan
Google Cloud Dilaporkan Memudahkan Pengawasan Sempadan Menggunakan AI Walaupun Sebelum Ini Menafikannya
AI
Semalam
Google Cloud Dilaporkan Memudahkan Pengawasan Sempadan Menggunakan AI Walaupun Sebelum Ini Menafikannya
Dell Melancarkan Kit Kabel AlienFX Berharga $35 yang Membolehkan Keserasian Papan Induk Pihak Ketiga untuk Alienware Area-51
Papan Induk
Semalam
Dell Melancarkan Kit Kabel AlienFX Berharga $35 yang Membolehkan Keserasian Papan Induk Pihak Ketiga untuk Alienware Area-51
Harga Nvidia RTX 5060 Ti Terbocor: RM399 untuk Model 8GB dan RM499 untuk Model 16GB Dijangka pada 16 April
GPU
Semalam
Harga Nvidia RTX 5060 Ti Terbocor: RM399 untuk Model 8GB dan RM499 untuk Model 16GB Dijangka pada 16 April
Kemaskini Cold Fusion Abiotic Factor Membawa Sistem Peningkatan Baharu dan Memperbaiki Serangan Pangkalan
Permainan Steam
Semalam
Kemaskini Cold Fusion Abiotic Factor Membawa Sistem Peningkatan Baharu dan Memperbaiki Serangan Pangkalan
Spesifikasi dan Harga Samsung Galaxy XCover 7 Pro Terbocor: Telefon Lasak dengan Ketahanan Gred Tentera Bakal Tiba Bulan Ini
Telefon
Semalam
Spesifikasi dan Harga Samsung Galaxy XCover 7 Pro Terbocor: Telefon Lasak dengan Ketahanan Gred Tentera Bakal Tiba Bulan Ini
Ferron: Pelayan Web Baharu Selamat-Memori dalam Rust Menunjukkan Potensi Berbanding Pesaing Terkemuka
Startup
Semalam
Ferron: Pelayan Web Baharu Selamat-Memori dalam Rust Menunjukkan Potensi Berbanding Pesaing Terkemuka
Patch Terbaru Inzoi Menangani Kebimbangan Utama Pemain: Tempoh Tidur, Tabiat Makan, dan Kadar Perkembangan Hubungan
Aplikasi
Semalam
Patch Terbaru Inzoi Menangani Kebimbangan Utama Pemain: Tempoh Tidur, Tabiat Makan, dan Kadar Perkembangan Hubungan
Perkhidmatan Langganan AI Baharu Garmin Mengecewakan dengan Pandangan Umum dan Kesilapan Matematik
AI
Semalam
Perkhidmatan Langganan AI Baharu Garmin Mengecewakan dengan Pandangan Umum dan Kesilapan Matematik
Android 16 Memperkenalkan Kompilasi Awan untuk Mempercepatkan Pemasangan Aplikasi
Aplikasi
Semalam
Android 16 Memperkenalkan Kompilasi Awan untuk Mempercepatkan Pemasangan Aplikasi
Peruncit Vietnam Membina Pelayan AI Berkuasa Tinggi Menggunakan Berbilang GPU RTX 5090 Ketika Bekalan Global Berkurangan
Perkakasan AI
Semalam
Peruncit Vietnam Membina Pelayan AI Berkuasa Tinggi Menggunakan Berbilang GPU RTX 5090 Ketika Bekalan Global Berkurangan
Apabila Skrip Shell Menjadi Terlalu Kompleks: Perdebatan Mengenai Pengurai INI Bash
Semalam
Apabila Skrip Shell Menjadi Terlalu Kompleks: Perdebatan Mengenai Pengurai INI Bash
Microsoft Menyekat Sambungan C/C++ pada Fork VSCode, Termasuk Cursor
Microsoft
Semalam
Microsoft Menyekat Sambungan C/C++ pada Fork VSCode, Termasuk Cursor