Sejak 3 Januari 2018, ada banyak informasi yang bertentangan dan mungkin mengkhawatirkan yang dipublikasikan tentang sisi eksekusi spekulatif kerentanan -channel juga dikenal sebagai Meltdown dan Spectre yang mempengaruhi sebagian besar prosesor modern dalam berbagai tingkat. Eksploitasi Meltdown (CVE-2017-5754) khususnya hanya memengaruhi prosesor Intel. Melindungi sistem Anda dari kerentanan ini melibatkan sejumlah langkah untuk sebagian besar sistem bergantung pada lingkungan tempat SQL Server dijalankan dan fungsionalitas apa yang digunakan.
Prinsip panduannya adalah bahwa masalah keamanan harus mengesampingkan masalah kinerja. Mengabaikan kerentanan keamanan ini dan tidak melakukan penambalan yang diperlukan karena kemungkinan masalah kinerja akan menjadi kesalahan besar (dan kemungkinan tanggung jawab hukum) bagi sebagian besar organisasi. Sudah ada penelitian yang dipublikasikan tentang variasi baru Meltdown dan Spectre, jadi jenis masalah ini tidak akan hilang dalam waktu dekat. Selain itu, vendor keamanan telah melaporkan bukti serangan Spectre/Meltdown secara liar.
Sayangnya, memutuskan apa yang sebenarnya harus Anda lakukan pada sistem Anda untuk melindunginya dari kerentanan ini semakin kompleks dan membingungkan seiring berjalannya waktu, dengan perubahan informasi tentang kerentanan yang dirilis oleh Intel dan AMD, dan dengan mikrokode CPU dan sistem operasi. patch yang dirilis dan kemudian segera ditarik.
Dampak Kinerja Penambalan
Bergantung pada perangkat keras server, sistem operasi, beban kerja, dan patch mana yang akhirnya Anda pasang, kemungkinan Anda akan melihat beberapa dampak kinerja negatif dari langkah-langkah mitigasi ini. Terry Myerson dari Microsoft memiliki posting yang cukup rinci tentang hal ini, sementara Brendan Gregg dari Netflix memiliki beberapa hasil terperinci di Linux. Brandon Lee telah melakukan beberapa pengujian benchmark sintetis di lingkungan VMware di sini.
Kabar baiknya adalah bahwa sebagian besar regresi kinerja yang dihasilkan dari upaya penambalan ini dapat dikurangi dengan konfigurasi yang tepat dan penyetelan beban kerja di SQL Server. Menggunakan produk pemantauan seperti SentryOne's SQL Sentry dapat membantu Anda mengidentifikasi hambatan kinerja yang ada di lingkungan Anda.
Bagi banyak organisasi, mendapatkan sepenuhnya terkini pada build SQL Server yang mereka gunakan (sebagai efek samping dari patching untuk Spectre/Meltdown) akan memecahkan banyak masalah lain dan berpotensi meningkatkan kinerja mereka cukup untuk membantu mengimbangi setiap regresi kinerja yang mereka lihat dari set lengkap Patch momok / Meltdown. Membaca daftar perbaikan untuk setiap SQL Server CU biasanya mengungkapkan sejumlah perbaikan terkait kinerja yang dapat berdampak besar pada kinerja SQL Server.
Prosesor Intel modern memiliki dukungan PCID dan INVPCID, yang secara signifikan mengurangi dampak kinerja patch sistem operasi Meltdown. Ini berarti Anda akan mendapatkan dukungan OS Windows untuk pengoptimalan kinerja PCID dalam rangkaian produk Intel Xeon E5-2600 v3 (Haswell-EP) dan prosesor yang lebih baru, bersama dengan rangkaian produk Intel Xeon E7 v3 (Haswell-EX) dan prosesor yang lebih baru.
Jika prosesor Intel Anda lebih tua dari mikroarsitektur Haswell (yang dirilis pada Q3 2014 untuk server dua soket), ini memberi Anda lebih banyak alasan untuk merencanakan peningkatan perangkat keras. Saya telah menulis tentang cara menggunakan Microsoft CoreInfo untuk memeriksa dengan mudah apakah prosesor Anda memiliki dukungan PCID dan INVPCID. Saya juga telah melakukan beberapa pengujian benchmark sintetis pada sistem Intel Kaby Lake yang lebih baru.
Microsoft memiliki fitur Windows Analytics baru yang dapat Anda gunakan untuk memeriksa status patch Spectre/Meltdown dari semua mesin Anda. Microsoft juga memiliki modul PowerShell yang dapat Anda gunakan untuk memeriksa status patch secara keseluruhan (dari perspektif Windows dan perangkat keras) yang saya bahas di sini. Jika Anda ingin melakukan pemeriksaan sistem operasi klien dengan cepat dan mudah untuk pengguna akhir (atau Ibu Anda) tanpa harus berurusan dengan PoSH, Anda dapat mengunduh dan menjalankan utilitas InSpectre (dengan GUI yang mudah) untuk memeriksa patch status sistem operasi dan mikrokode prosesor Anda.
Memeriksa Instance SQL Server Anda
Terakhir, Anda perlu memeriksa status patch SQL Server Anda. Saya telah mengembangkan skrip T-SQL yang akan memeriksa instance SQL Server Anda untuk melihat apakah Anda telah menginstal patch SQL Server yang relevan atau belum. Skrip ini akan berfungsi pada SQL Server 2008 hingga SQL Server 2017 untuk instans lokal atau untuk instans Azure IaaS. Ini tidak dirancang untuk bekerja di Azure SQL Database. Anda dapat mengunduhnya di sini.
Salah satu kemungkinan manfaat dari masalah ini adalah bahwa hal itu dapat memberi Anda lebih banyak pembenaran untuk membuat organisasi Anda mendapatkan instance SQL Server Anda terkini dengan Paket Layanan dan Pembaruan Kumulatif mereka, yang tetap direkomendasikan secara eksplisit oleh Microsoft.
Langkah-Langkah Mitigasi Hantu/Meltdown
Berikut adalah langkah-langkah mitigasi yang harus Anda pertimbangkan untuk dilakukan:
- Instal patch sistem operasi yang relevan dari Microsoft (jika tersedia)
- Tersedia untuk Windows Server, versi 1709, Windows Server 2016, Windows Server 2012 R2, dan Windows Server 2008 R2
- Belum tersedia untuk Windows Server 2012 atau Windows Server 2008 (per 15 Februari 2018)
- Lakukan perubahan konfigurasi yang diperlukan (pengaturan registri) untuk mengaktifkan perlindungan sistem operasi pada sistem operasi server
- Jika Anda menjalankan Hypervisor, instal patch Hypervisor yang relevan
- Pembaruan VMware vSphere, Workstation, dan Fusion menambahkan Perbaikan Tamu Berbantuan Hypervisor untuk masalah eksekusi spekulatif
- Instal patch SQL Server yang relevan dari Microsoft
- Tersedia untuk SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 dan SQL Server 2008 SP4
- Tidak tersedia untuk SQL Server 2005 atau sebelumnya
- Instal pembaruan BIOS (yang memiliki pembaruan mikrokode CPU) dari vendor server Anda (jika tersedia)
- Ini tergantung pada prosesor apa yang Anda gunakan, bersama dengan lingkungan dan penggunaan fitur Anda
- Pembaruan BIOS ini saat ini tidak tersedia untuk sebagian besar server (awalnya dirilis untuk beberapa server yang lebih baru dan kemudian ditarik)
- Evaluasi fitur ekstensibilitas SQL Server apa yang mungkin Anda gunakan dan langkah mitigasi tambahan apa yang mungkin perlu Anda ambil. Ini termasuk:
- Perakitan SQL CLR
- Paket R dan Python berjalan melalui mekanisme skrip eksternal atau dijalankan dari studio R/Machine Learning mandiri pada mesin fisik yang sama dengan SQL Server
- Poin ekstensibilitas Agen SQL yang berjalan pada mesin fisik yang sama dengan SQL Server (skrip ActiveX)
- Penyedia DB OLE non-Microsoft yang digunakan di Server Tertaut
- Prosedur Perpanjangan Non-Microsoft
- Objek COM yang dieksekusi di dalam server (diakses melalui sp_OACreate)
- Program dijalankan melalui xp_cmdshell