UNTRUSTEDCODE/etccredsnetSANDBOXno access outside

Kotak pasir

10 min bacaKeselamatan

Kotak pasir ialah corak keselamatan yang membolehkan penyemak imbas anda menjalankan JavaScript dari mana-mana tapak, telefon anda menjalankan apl daripada mana-mana pembangun dan komputer riba anda membuka lampiran e-mel — semuanya tanpa program tersebut dapat membaca fail akaun bank anda. Ia adalah lapisan teknologi yang menukar kod yang tidak dipercayai daripada kelemahan kepada ciri.

Badan artikel penuh disediakan dalam bahasa Inggeris di bawah.

Sandboxing ialah amalan menjalankan kod dalam persekitaran terhad yang menghalangnya daripada mengakses sumber di luar sempadannya. Kotak pasir mengehadkan fail yang boleh dibacanya, sambungan rangkaian yang boleh dibuatnya, proses lain yang boleh berkomunikasi dengannya dan apa yang dipanggil sistem yang boleh digunakannya. Jika kod tersebut ternyata berniat jahat atau buggy, kerosakan itu terkandung.

Mengapa kotak pasir penting

Pengkomputeran moden bergantung pada menjalankan kod yang kami tidak percayai sepenuhnya:

  • JavaScript daripada mana-mana tapak web yang dilawati oleh penyemak imbas anda
  • Apl secara rasmi disahkan)
  • Pelanjutan penyemak imbas, pemalam IDE, kebergantungan dalam kod anda
  • Makro dalam dokumen, skrip dilampirkan pada e-mel
  • Beban kerja kontena dalam infrastruktur awan

tanpa menunggu kotak pasir ini akan berlaku kepada semua. Kotak pasir ialah perkara yang membolehkan model berfungsi.

Cara kotak pasir dibina

Teknik pelaksanaan, berlapis:

  • Pengasingan proses. Setiap tab dalam penyemak imbas moden ialah proses OS yang berasingan. Inti penyemak imbas menimbang tara perkara yang dibenarkan untuk dilakukan oleh proses tersebut.
  • seccomp-bpf pada Linux — penapis dikuatkuasakan kernel yang mana sistem memanggil proses boleh buat. Kotak pasir mengisytiharkan syscall yang diperlukannya (baca, tulis, mmap, dsb.) dan kernel menolak semua yang lain.
  • Namespaces dan keupayaan pada Linux — pandangan terpencil sistem fail, proses, rangkaian dan sebagainya. Bekas dibina daripada primitif ini.
  • App Sandbox pada macOS/iOS — kelayakan perisytiharan yang menerangkan keupayaan yang diperlukan oleh apl (akses kamera, rangkaian, laluan khusus). Apl tanpa kelayakan tidak boleh mengakses ciri tersebut.
  • AppContainer / Windows Sandbox — model pengasingan setara Microsoft.
  • Pengasingan Tapak dalam Chrome dan Firefox — proses berasingan bagi setiap asal, menghalang satu ingatan peringkat kernel tapak yang lain adalah JavaScript tahap eksploit yang lain. dijumpai.

Kotak pasir penyemak imbas secara terperinci

Pelayar ialah kotak pasir yang paling awam dan paling banyak diserang dalam pengkomputeran. Kernel penyemak imbas berjalan sebagai proses yang dipercayai. Setiap proses pemapar — satu atau lebih setiap tab — berjalan sebagai proses yang tidak dipercayai dengan keupayaan minimum. Penyampai boleh:

  • Peruntukkan memori
  • Berkomunikasi dengan kernel penyemak imbas melalui IPC untuk operasi yang sangat khusus
  • Render kepada penimbal grafik
  • Jalankan JavaScript dan WebAssemblyXPLZ54PLZPL6XPLZ64PLZPL6 tidak boleh:

    • Buka fail di luar direktori kotak pasirnya
    • TBerbual dengan destinasi rangkaian sewenang-wenang (inti penyemak imbas membuat sambungan tersebut)
    • Melahirkan proses lain
    • Baca memori proses lain' pay7ZPLZ76XXPLZ tertanam vendors berjuta-juta vendor. dalam hadiah pepijat khusus untuk kelemahan pelarian kotak pasir. Hadiah tunggal yang paling menguntungkan pada Chrome (lebih $200,000) digunakan untuk rangkaian penuh yang terlepas dari kotak pasir.

      Kotak pasir aplikasi mudah alih

      iOS dan Android membawa kotak pasir ke tahap logiknya yang melampau: setiap apl berjalan dalam UIDnya sendiri, melihat saluran sistem fail IPC yang sempit dan hanya boleh berkomunikasi melalui paparan sistem fail IPC yang lain (Niat pada Android, skema URL dan AppExtensions pada iOS). OS menggesa pengguna untuk kebenaran gaya keupayaan (kamera, mikrofon, kenalan) pada masa jalan. Hasilnya: perisian hasad pada telefon terkandung jauh lebih ketat berbanding pada desktop.

      WebAssembly dan sandbox baharu

      WebAssembly telah direka dari awal dengan kotak pasir sebagai harta kelas pertama. Modul WASM tidak mempunyai panggilan sistem sendiri; semuanya perlu disediakan oleh persekitaran hos (WASI untuk API gaya panggilan sistem, API web dalam penyemak imbas). Ini menjadikan WASM calon yang kuat untuk menjalankan pemalam yang tidak dipercayai dalam aplikasi yang dipercayai — kes penggunaan yang sebelum ini memerlukan pengasingan proses yang berat. Alat seperti wasmtime dan wasmer menggunakan model ini.

      Apabila kotak pasir gagal

      Kerentanan melarikan diri kotak pasir adalah nyata dan berharga. Mod kegagalan berulang:

      • Pepijat dalam permukaan kernel. Malah proses terhad seccomp kadangkala boleh mengeksploitasi pepijat kernel yang boleh dicapai melalui syscalls yang dibenarkan.Pepijat
      • IPC. Antara muka yang digunakan oleh kotak pasir untuk bercakap dengan proses broker ialah saluran serangan sendiri.XPLZPL0XXPLX8deZter. Meltdown menunjukkan bahawa pengoptimuman CPU boleh membocorkan data merentasi sempadan proses. Kotak pasir moden mengurangkan perkara ini tetapi isu asas tetap menjadi kebimbangan peringkat perkakasan.
      • Kesilapan profil kotak pasir. Pengendali kadangkala melonggarkan profil kotak pasir untuk membuat perisian berfungsi, membuka lubang secara tidak sengaja.

      Sandboxing adalah penghalang kebarangkalian, ia menghapuskan kebarangkalian pertahanan. Pertahanan secara mendalam menggabungkan kotak pasir dengan langkah lain (bahasa selamat ingatan, pembersih, pengurangan permukaan serangan).

      Apakah maksud kotak pasir untuk anda

      Bagi pengguna akhir, kotak pasir kebanyakannya tidak kelihatan. Implikasi praktikal: pastikan penyemak imbas dan OS dikemas kini, kerana kotak pasir melarikan diri adalah pembaikan keselamatan keutamaan tertinggi. Elakkan melumpuhkan ciri kotak pasir (sesetengah pengguna Linux mematikan profil seccomp, sesetengah pengguna kuasa melumpuhkan bendera kotak pasir Chrome) melainkan anda memahami akibatnya. Penyemak imbas dihantar mengeras secara lalai; lalai adalah betul untuk hampir semua pengguna.

Soalan lazim

Adakah kotak pasir sama dengan virtualisasi?
Mereka bertindih tetapi tidak sama. Virtualisasi menjalankan keseluruhan sistem pengendalian di dalam emulator; pengasingan adalah pada tahap perkakasan-virtualisasi. Kotak pasir biasanya menjalankan proses di dalam OS yang sama dengan sekatan yang dikuatkuasakan kernel. Maya adalah lebih berat tetapi menyediakan pengasingan yang lebih kuat; reka bentuk moden sering menggabungkan kedua-duanya (VM Firecracker untuk tanpa pelayan, gVisor untuk bekas).
Adakah kotak pasir memperlahankan keadaan?
Overhed sederhana — biasanya peratusan satu digit untuk penapisan syscall, lebih sedikit untuk pengasingan proses. Kos prestasi telah dikurangkan secara aktif melalui sokongan perkakasan (Intel CET, ARM PAC) jadi kotak pasir moden pada asasnya percuma untuk kebanyakan beban kerja.
Bolehkah VPN melarikan diri dari kotak pasirnya?
Perisian klien VPN biasanya memerlukan lebih banyak keistimewaan daripada aplikasi kotak pasir — mereka mengkonfigurasi penghalaan dan antara muka rangkaian. Pada macOS dan iOS mereka menggunakan API tertentu (rangka kerja NetworkExtension) untuk melakukan ini dengan selamat. Pelanggan VPN itu sendiri mempunyai keistimewaan; data yang mengalir melaluinya adalah legap kepada apl lain.
Adakah menjalankan kod dalam bekas Docker sama seperti kotak pasir?
Bekas Docker menggunakan ruang nama Linux dan seccom untuk pengasingan, yang merupakan satu bentuk kotak pasir. Pengasingan adalah lebih lemah daripada kotak pasir berasaskan maya (bekas berkongsi kernel hos) dan lebih lemah daripada kotak pasir ruang pengguna yang mengharamkan kebanyakan syscall (bekas membenarkan banyak). Untuk beban kerja yang tidak dipercayai, projek seperti gVisor atau Kata Containers membalut pengasingan yang lebih kuat di sekeliling UX Docker.
Mengapakah Chrome menggunakan begitu banyak memori?
Pengasingan Tapak. Setiap asal berjalan dalam prosesnya sendiri — 50 tab tapak berbeza bermakna 50 proses, setiap satu dengan overhed memori sendiri. Kosnya ialah RAM; faedahnya ialah eksploitasi satu tab tidak boleh membaca data tab lain (kata laluan, sesi). Chrome moden meletakkan lebih banyak usaha dalam pengoptimuman perkongsian memori untuk mengurangkan kesan, tetapi seni bina secara semula jadi memperdagangkan memori untuk keselamatan.
Penjelasan Kotak Pasir: Cara Penyemak Imbas dan Sistem Pengendalian Mengandungi Kod Tidak Dipercayai