Desde el 3 de enero de 2018, se ha publicado mucha información conflictiva y posiblemente alarmante sobre el lado de la ejecución especulativa -vulnerabilidades de canal también conocidas como Meltdown y Spectre que afectan a la mayoría de los procesadores modernos en diversos grados. El exploit Meltdown (CVE-2017-5754) en particular solo afecta a los procesadores Intel. Proteger sus sistemas de estas vulnerabilidades implica una serie de pasos para la mayoría de los sistemas según el entorno en el que se ejecuta SQL Server y la funcionalidad que se utiliza.
El principio rector es que las preocupaciones de seguridad deben prevalecer sobre las preocupaciones de rendimiento. Ignorar estas vulnerabilidades de seguridad y no aplicar los parches necesarios debido a posibles problemas de rendimiento sería un gran error (y una posible responsabilidad legal) para la mayoría de las organizaciones. Ya se han publicado investigaciones sobre nuevas variaciones de Meltdown y Spectre, por lo que este tipo de problema no desaparecerá pronto. Además, los proveedores de seguridad han estado reportando evidencia de ataques de Spectre/Meltdown en la naturaleza.
Desafortunadamente, decidir qué debe hacer realmente con sus sistemas para protegerlos contra estas vulnerabilidades ha sido cada vez más complejo y confuso a medida que ha pasado el tiempo, con información cambiante sobre la vulnerabilidad publicada por Intel y AMD, y con el microcódigo de la CPU y el sistema operativo. parches que se lanzan y luego se retiran poco después.
Impacto en el rendimiento de la aplicación de parches
Según el hardware de su servidor, el sistema operativo, la carga de trabajo y los parches que termine instalando, es probable que observe un impacto negativo en el rendimiento debido a estas medidas de mitigación. Terry Myerson de Microsoft tiene una publicación bastante detallada sobre este tema, mientras que Brendan Gregg de Netflix tiene algunos resultados detallados sobre Linux. Brandon Lee ha realizado algunas pruebas comparativas sintéticas en un entorno de VMware aquí.
La buena noticia es que la mayoría de las regresiones de rendimiento que resultan de este esfuerzo de aplicación de parches se pueden reducir con la configuración adecuada y el ajuste de la carga de trabajo en SQL Server. El uso de productos de monitoreo como SQL Sentry de SentryOne puede ayudarlo a identificar los cuellos de botella de rendimiento que existen en su entorno.
Para muchas organizaciones, actualizar completamente su compilación de SQL Server implementada (como efecto secundario de la aplicación de parches para Spectre/Meltdown) resolverá muchos otros problemas y mejorará potencialmente su rendimiento lo suficiente como para ayudar a compensar cualquier regresión de rendimiento que vean en el conjunto completo de Parches de Spectre/Meltdown. La lectura de la lista de correcciones para cada CU de SQL Server generalmente revela una cantidad de correcciones relacionadas con el rendimiento que pueden tener un impacto sustancial en el rendimiento de SQL Server.
Los procesadores Intel modernos son compatibles con PCID e INVPCID, lo que reduce significativamente el impacto en el rendimiento del parche del sistema operativo Meltdown. Esto significa que obtendrá compatibilidad con el sistema operativo Windows para la optimización del rendimiento de PCID en la familia de productos Intel Xeon E5-2600 v3 (Haswell-EP) y procesadores posteriores, junto con la familia de productos Intel Xeon E7 v3 (Haswell-EX) y procesadores posteriores.
Si sus procesadores Intel son más antiguos que la microarquitectura Haswell (que se lanzó en el tercer trimestre de 2014 para servidores de dos sockets), esto le da más razones para planificar una actualización de hardware. He escrito sobre cómo usar Microsoft CoreInfo para verificar fácilmente si su procesador es compatible con PCID e INVPCID. También realicé algunas pruebas comparativas sintéticas en un sistema Intel Kaby Lake más nuevo.
Microsoft tiene una nueva característica de Windows Analytics que puede usar para verificar el estado del parche Spectre/Meltdown de todas sus máquinas. Microsoft también tiene un módulo de PowerShell que puede usar para verificar el estado general del parche (desde la perspectiva de Windows y el hardware) que expuse aquí. Si desea realizar una verificación rápida y sencilla del sistema operativo de un cliente para un usuario final (o su mamá) sin tener que lidiar con PoSH, puede descargar y ejecutar la utilidad InSpectre (con una GUI fácil) para verificar el parche. estado de su sistema operativo y el microcódigo de su procesador.
Comprobando su instancia de SQL Server
Finalmente, debe verificar el estado de su parche de SQL Server. Desarrollé un script T-SQL que verificará su instancia de SQL Server para ver si ha instalado los parches relevantes de SQL Server o no. Este script funcionará en SQL Server 2008 a SQL Server 2017 para instancias locales o instancias de Azure IaaS. Esto no está diseñado para funcionar en Azure SQL Database. Puedes descargarlo aquí.
Un posible beneficio de este problema es que puede darle más justificación para que su organización actualice sus instancias de SQL Server con su Service Pack y Actualizaciones acumulativas, que es lo que Microsoft recomienda explícitamente de todos modos.
Pasos de mitigación de Spectre/Meltdown
Estos son los pasos de mitigación que debe considerar seriamente tomar:
- Instalar el parche del sistema operativo correspondiente de Microsoft (si está disponible)
- Disponible para Windows Server, versión 1709, Windows Server 2016, Windows Server 2012 R2 y Windows Server 2008 R2
- Aún no disponible para Windows Server 2012 o Windows Server 2008 (al 15 de febrero de 2018)
- Realice los cambios de configuración necesarios (ajustes de registro) para habilitar la protección del sistema operativo en sistemas operativos de servidor
- Si está ejecutando en un hipervisor, instale los parches de hipervisor relevantes
- Las actualizaciones de VMware vSphere, Workstation y Fusion agregan la corrección de invitados asistida por hipervisor para problemas de ejecución especulativa
- Instale el parche de SQL Server correspondiente de Microsoft
- Disponible para SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012 SP4, SQL Server 2008 R2 SP3 y SQL Server 2008 SP4
- No disponible para SQL Server 2005 o anterior
- Instale una actualización de BIOS (que tiene una actualización de microcódigo de CPU) del proveedor de su servidor (si está disponible)
- Esto depende del procesador que esté utilizando, junto con su entorno y el uso de funciones
- Estas actualizaciones de BIOS actualmente no están disponibles para la mayoría de los servidores (inicialmente se lanzaron para algunos servidores más nuevos y luego se retiraron)
- Evalúe qué características de extensibilidad de SQL Server puede estar utilizando y qué pasos de mitigación adicionales puede necesitar tomar. Estos incluyen:
- Conjuntos SQL CLR
- Paquetes de R y Python que se ejecutan a través del mecanismo de scripts externos o se ejecutan desde el estudio R/Machine Learning independiente en la misma máquina física que SQL Server
- Puntos de extensibilidad del Agente SQL que se ejecutan en la misma máquina física que SQL Server (scripts ActiveX)
- Proveedores OLE DB que no son de Microsoft utilizados en servidores vinculados
- Procedimientos almacenados extendidos que no son de Microsoft
- Objetos COM ejecutados dentro del servidor (a los que se accede a través de sp_OACreate)
- Programas ejecutados a través de xp_cmdshell