Adakah VM lebih selamat daripada bekas?

Kita sering mengatakan, "HTTPS selamat," atau "HTTP tidak selamat." Tetapi apa yang kita maksudkan adalah "HTTPS sulit untuk mengintip dan membuat serangan man-in-the-middle sukar" atau "nenek saya tidak menghadapi masalah untuk mengintai HTTP."

Walaupun begitu, HTTPS telah diretas, dan dalam beberapa keadaan, HTTP cukup aman. Lebih jauh lagi, jika saya menemui kecacatan yang dapat dieksploitasi dalam implementasi umum yang mendukung HTTPS (pikir OpenSSL dan Heartbleed), HTTPS dapat menjadi pintu masuk penggodaman hingga pelaksanaannya diperbaiki.

HTTP dan HTTPS adalah protokol yang ditentukan dalam IETF RFC 7230-7237 dan 2828. HTTPS dirancang sebagai HTTP selamat, tetapi mengatakan HTTPS selamat dan HTTP masih tidak menyembunyikan pengecualian penting.

Mesin maya (VM) dan kontena ditakrifkan dengan kurang teliti, dan kedua-duanya tidak sengaja dirancang untuk lebih selamat daripada yang lain. Oleh itu, masalah keselamatan masih suram.

Mengapa saya percaya VM lebih selamat daripada bekas

Membahagi dan menakluki adalah strategi kemenangan dalam perang dan perisian. Apabila seni bina membahagikan satu masalah keselamatan yang kompleks dan sukar diselesaikan menjadi masalah yang lebih mudah, hasilnya, dalam kebanyakan kes, akan lebih selamat daripada satu penyelesaian yang menangani semua masalah.

Bekas adalah contoh pembahagi-dan-penaklukan yang diterapkan secara mendatar pada aplikasi. Dengan mengunci setiap aplikasi di penjara sendiri, kelemahan dalam satu aplikasi tidak melemahkan aplikasi dalam bekas lain. VM juga berpecah dan menakluk, tetapi mereka melangkah lebih jauh dalam pengasingan.

Marvin Waschke /

Kekurangan dalam aplikasi yang dipenjara tidak dapat mempengaruhi aplikasi lain secara langsung, tetapi aplikasi yang dipenjara dapat memecahkan sistem operasi tunggal (OS) yang dikongsi dengan bekas lain dan mempengaruhi semua kontena. Dengan OS yang dikongsi, kekurangan pada setiap titik aplikasi, kontena, dan timbunan pelaksanaan OS dapat membatalkan keselamatan keseluruhan timbunan dan menjejaskan mesin fizikal.

+ Juga di Dunia Rangkaian: Mana yang lebih murah: Bekas atau mesin maya? +

Senibina berlapis seperti virtualisasi memisahkan susunan pelaksanaan setiap aplikasi hingga ke perkakasan, menghilangkan kemungkinan aplikasi mengganggu satu sama lain melalui OS bersama. Di samping itu, antara muka antara setiap timbunan aplikasi dan perkakasan ditentukan dan terhad untuk mengelakkan penyalahgunaan. Ini memberikan perimeter tambahan yang kuat untuk melindungi aplikasi antara satu sama lain.

VM memisahkan OS yang mengawal aktiviti pengguna dari hypervisor yang mengawal interaksi antara OS tetamu dan perkakasan. OS tetamu VM mengawal aktiviti pengguna tetapi bukan interaksi perkakasan. Kekurangan dalam aplikasi atau OS tetamu tidak mungkin mempengaruhi perkakasan fizikal atau VM lain. Apabila OS tetamu VM dan OS yang menyokong wadah serupa, yang sering berlaku, kerentanan yang sama yang akan menjejaskan semua kontena lain yang berjalan di OS tidak akan membahayakan VM lain. Oleh itu, VM memisahkan aplikasi secara mendatar dan juga memisahkan OS secara menegak dari perkakasan.

Overhead VM

Keselamatan tambahan VM dikenakan dengan perbelanjaan. Pemindahan kawalan selalu mahal dalam sistem pengkomputeran, baik dalam kitaran pemproses dan sumber lain. Tumpukan pelaksanaan disimpan dan diset semula, operasi luaran mungkin terpaksa dijeda atau dibiarkan selesai, dan seterusnya.

Peralihan antara OS tetamu dan penyelia memerlukan banyak kos dan sering berlaku. Walaupun dengan arahan kawalan khas yang dibakar ke dalam cip pemproses, overhead pemindahan kawalan akan mengurangkan kecekapan keseluruhan VM. Adakah penurunan itu ketara? Soalan susah. Aplikasi dapat disetel untuk mengurangi overhead dengan mengatur transfer transfer, dan kebanyakan prosesor server sekarang dirancang untuk memperkemaskan transfer control. Dengan kata lain, kepentingan bergantung pada aplikasi dan pelayan, tetapi overhead tidak dapat dihilangkan sepenuhnya, hanya mereda.

Kerentanan hypervisor

Untuk merumitkan lagi masalah, memisahkan lapisan dalam seni bina VM menimbulkan satu lagi hambatan: kekurangan hypervisor. Pelanggaran hypervisor adalah satu titik kegagalan dengan potensi akibat yang besar, terutama di awan awam. Dapat difahami, satu penggodam dapat melancarkan kod dalam VM yang mengendalikan aplikasi yang dimiliki oleh pengguna awan awam yang lain, menyusun jejak awan awam dalam satu eksploitasi.

Senibina yang kukuh masih boleh mempunyai kecacatan pelaksanaan yang melemahkan sistem dengan ketara. Pelanggaran Hypervisor sering dicetuskan dengan mendakwa mereka tidak akan pernah berlaku: Kisahnya bahawa penyelia sangat mudah, ditulis dengan baik, dan diperiksa dengan teliti sehingga mereka tidak pernah gagal. Pelanggaran hypervisor mungkin sama buruknya dengan WannaCry, tetapi jangan risau. Tetapi Heartbleed berlaku. OpenSSL mempunyai garis kod yang jauh lebih sedikit daripada hypervisor. Saya perlu keluar sekarang — babi terbang saya mahu lebih banyak pencuci mulut.

Saya tidak mengetahui sebarang pelanggaran hypervisor yang ketara sehingga kini. Tetapi tinjauan cepat pada pangkalan data Kerentanan dan Pendedahan Umum (CVE) menunjukkan bahawa penyelidik mendapati kelemahan hypervisor yang dapat dieksploitasi. Pembangun dan vendor hypervisor cepat memperbaiki kerentanan ketika ia berlaku. Pada bulan Mac 2017, Microsoft mengeluarkan Security Bulletin MS17-008, mendokumentasikan tujuh kerentanan yang ditambal di hypervisor Hyper-Vnya, semuanya dinyatakan penting atau kritikal.

Saya masih percaya VM memberikan keselamatan yang lebih baik daripada kontena, tetapi kita harus melihat keselamatan sistem VM dengan mata yang jelas. Saya merancang untuk membincangkan kelemahan hypervisor dengan lebih terperinci pada masa akan datang. Juga, bekas dan VM sering digabungkan. Masih banyak yang perlu diperkatakan.