En enero de 2018, las vulnerabilidades de seguridad de Spectre y Meltdown se divulgaron públicamente, lo que provocó una preocupación generalizada entre los profesionales de la seguridad, ya que el dúo puede usarse para robar datos de casi cualquier computadora, así como de iPhones, iPads y otros dispositivos móviles.
Spectre y Meltdown representan individualmente clases de vulnerabilidades de hardware, cada una con una serie de variantes que dependen de la funcionalidad específica del nivel de silicio. Las diferencias entre los fabricantes (p. ej., Intel frente a AMD) y las arquitecturas (p. ej., x86-64 frente a Arm) hacen que algunos procesadores sean vulnerables a más variantes que otros. Si bien estos son fundamentalmente defectos de diseño de hardware, los intentos de remediarlo a nivel de software han tenido cierto éxito.
La comprensión de Spectre y Meltdown ha aumentado significativamente desde la divulgación inicial, y los investigadores de seguridad continúan estudiando estas vulnerabilidades. Actualmente, se han identificado 13 variantes de Spectre y 14 variantes de Meltdown. Inicialmente, se pensaba que los procesadores AMD eran inmunes a Meltdown, aunque se ha demostrado con éxito una variante en los sistemas AMD.
Esta guía incluye explicaciones detalladas sobre estas vulnerabilidades de seguridad excepcionalmente peligrosas y las mejores soluciones de mitigación.
Indice
¿Qué son Spectre y Meltdown?
En la definición más básica, Spectre es una vulnerabilidad que permite leer ubicaciones arbitrarias en la memoria asignada de un programa. Meltdown es una vulnerabilidad que permite que un proceso lea toda la memoria en un sistema determinado. Spectre y Meltdown no son fallas singulares, representan individualmente una clase de variantes estrechamente relacionadas.
Spectre y Meltdown son vulnerabilidades de seguridad excepcionalmente peligrosas que permiten a los actores maliciosos eludir las protecciones de seguridad del sistema presentes en casi todos los dispositivos recientes con una CPU, no solo PC, servidores y teléfonos inteligentes, sino también dispositivos de Internet de las cosas (IoT) como enrutadores y televisores inteligentes. Al aprovechar el dúo, es posible leer la memoria protegida del sistema, obtener acceso a contraseñas, claves de cifrado y otra información confidencial.
Ambos son ejemplos representativos de ataques de «ejecución transitoria», que se basan en fallas de diseño de hardware en la implementación de la ejecución especulativa, la canalización de instrucciones y la ejecución desordenada en las CPU modernas. Si bien este trío es esencial para las optimizaciones de rendimiento inherentes a los procesadores modernos, las implementaciones de estos varían entre los fabricantes de CPU y las microarquitecturas; como resultado, no todas las variantes de Spectre y Meltdown se pueden explotar en todas las microarquitecturas.
Tras la divulgación de Spectre y Meltdown, la investigación adicional sobre las fallas del canal lateral de la CPU arrojó una nueva clase de vulnerabilidad, «Muestreo de datos de microarquitectura» (MDS), que explota los búferes internos de la CPU en lugar de los cachés de la CPU. Este objetivo hace que los ataques que aprovechan MDS sean más difíciles de mitigar, aunque también son más difíciles de explotar para los piratas informáticos.
Varios factores han complicado enormemente la comprensión de Spectre y Meltdown, que incluyen:
- Diferencias técnicas en las variaciones descubiertas después de la divulgación inicial.
- La diferente medida en que los tipos de microarquitectura son susceptibles a los ataques de ejecución transitoria.
- La dificultad y las diferentes formas en que se pueden mitigar los riesgos de Spectre y Meltdown.
- El golpe financiero temido por los fabricantes de procesadores y los proveedores de hardware.
- Política endémica de la industria de TI.
- Información errónea ampliamente difundida días antes e inmediatamente después de la divulgación inicial.
Riesgos asociados
Spectre y Meltdown permiten a los atacantes extraer claves de cifrado y contraseñas de sistemas comprometidos, lo que permite otros ataques que dependen del acceso a sistemas comprometidos. Aprovechar Spectre y Meltdown no requiere que un usuario ejecute un ejecutable en particular formado maliciosamente, ya que las pruebas de concepto basadas en JavaScript demuestran el potencial de explotar estas vulnerabilidades dentro de un navegador web. En respuesta, los proveedores de navegadores han reducido la precisión de los temporizadores de alta resolución necesarios para llevar a cabo un ataque con éxito.
Para la computación en la nube, los atacantes pueden aprovechar Spectre y Meltdown para escapar de los contenedores de software, los sistemas paravirtualizados y las máquinas virtuales.
Como vulnerabilidad independiente, Spectre y Meltdown son bastante ineficientes para la exfiltración masiva de datos, ya que la investigación inicial demuestra que Meltdown puede acceder a los datos a aproximadamente 120 KB/s, con Spectre alrededor de 1,5 a 2 KB/s. Además, Spectre-BTB (Variante 2) requiere de 10 a 30 minutos para la inicialización en un sistema con 64 GB de RAM, que se prevé que se escale «más o menos linealmente» con aumentos en el tamaño de la RAM del host.
La explotación de Spectre y Meltdown puede llevarse a cabo de forma no rastreable, es decir, sin dejar evidencia de una explotación en los registros del sistema. Esto hace que el par sea difícil de detectar en ataques de malware dirigidos, aunque las firmas de malware conocidas todavía son posibles de determinar por medios tradicionales.
¿Cómo funcionan?
La mecánica de Spectre y Meltdown requiere una comprensión de cómo se diseña la microarquitectura de los procesadores modernos.
Introducción rápida al diseño de procesadores modernos
Las mejoras en el rendimiento de los procesadores modernos se derivan de una serie de técnicas. Las limitaciones en el aumento de los atributos físicos de los procesadores requieren cambios en la arquitectura de cómo funcionan los procesadores para ofrecer piezas de mayor rendimiento. Estos cambios se centran en gran medida en el paralelismo: optimizar y alargar las canalizaciones de instrucciones, permitir que se realicen varias operaciones en paralelo en un núcleo lógico (hilo) y aumentar la cantidad de núcleos lógicos y físicos en un procesador.
Otras propiedades de los procesadores modernos incluyen la memoria virtual (paginada), un método que agiliza la gestión de la memoria en todos los procesos, los niveles de privilegios, que permiten a los sistemas operativos controlar qué áreas de la memoria virtual pueden leer otros procesos, y la memoria caché de la CPU, en la que los datos en la memoria RAM del sistema se almacena en caché para reducir la latencia.
Dos técnicas de optimización independientes de los procesadores modernos, utilizadas en conjunto, son clave para comprender cómo Spectre y Meltdown son vulnerabilidades a nivel de hardware.
La ejecución fuera de orden permite el uso simultáneo de todas las unidades de ejecución en un núcleo de CPU. Meltdown, en lugar de procesar las instrucciones estrictamente en el orden secuencial del programa, la CPU las ejecuta tan pronto como todos los recursos necesarios están disponibles. Mientras la unidad de ejecución de la operación actual está ocupada, otras unidades de ejecución pueden avanzar. Por lo tanto, las instrucciones se pueden ejecutar en paralelo siempre que sus resultados sigan la definición arquitectónica.
El estado de las instrucciones procesadas fuera de orden se almacena en un búfer de reorden, desde el cual se comprometen en orden.
La ejecución especulativa permite a los procesadores especular sobre direcciones de instrucciones futuras y ejecutar instrucciones de manera proactiva a lo largo de estas rutas antes de saber si las instrucciones son correctas. Considera un ejemplo en el que el flujo de control del programa depende de un valor no almacenado en caché ubicado en la memoria física externa. Como esta memoria es mucho más lenta que la CPU, a menudo se necesitan varios cientos de ciclos de reloj antes de que se conozca el valor. En lugar de desperdiciar estos ciclos en inactividad, la CPU intenta adivinar la dirección del flujo de control, guarda un punto de control de su estado de registro y procede a ejecutar especulativamente el programa en la ruta adivinada.
Cuando el valor llega de la memoria, se verifica la exactitud de la conjetura. Si es correcto, los resultados se confirman, «lo que genera una mejora significativa en el rendimiento, ya que se realizó un trabajo útil durante el retraso». Si es incorrecta, se descarta la ejecución especulativa. En cuanto al rendimiento, esto es transparente: las velocidades son comparables al ralentí, como si la ejecución especulativa nunca hubiera ocurrido. Es importante destacar que es posible ejecutar especulativamente instrucciones en canalizaciones en orden y fuera de orden.
En términos de seguridad, la ejecución especulativa requiere ejecutar un programa de formas potencialmente incorrectas. Para mantener la corrección funcional, estas ejecuciones transitorias o especuladas incorrectamente están destinadas a no estar expuestas al programa. No se confirman y se eliminan de la canalización de ejecución, lo que revierte los efectos arquitectónicos que las instrucciones pueden haber tenido.
Si bien los efectos arquitectónicos y los resultados de las instrucciones transitorias se descartan, los efectos secundarios microarquitectónicos permanecen más allá de la ejecución transitoria. Esta es la base de Spectre, Meltdown y Foreshadow. Estos ataques explotan la ejecución transitoria y codifican secretos en los efectos secundarios de la microarquitectura (p. ej., el estado de caché) para transmitirlos (al nivel de la arquitectura) a un atacante.
Funcionamiento de Spectre
Spectre, según los autores originales del artículo de Spectre, induce a una víctima a realizar especulativamente operaciones que no ocurrirían durante el procesamiento en orden estrictamente serializado de las instrucciones del programa, y que filtran información confidencial de la víctima a través de un canal encubierto al adversario.
Los ataques de Spectre se llevan a cabo en tres pasos:
- La fase de configuración, en la que el procesador está mal entrenado para hacer «una predicción especulativa errónea explotable».
- El procesador ejecuta especulativamente instrucciones desde el contexto de destino en un canal encubierto de microarquitectura.
- Los datos confidenciales se recuperan. Esto se puede hacer cronometrando el acceso a las direcciones de memoria en la memoria caché de la CPU.
Funcionamiento de Meltdown
Meltdown explota una condición de carrera entre el acceso a la memoria y la verificación del nivel de privilegio mientras se procesa una instrucción. Junto con un ataque de canal lateral de caché de CPU, se pueden omitir las comprobaciones de nivel de privilegio, lo que permite el acceso a la memoria utilizada por un sistema operativo u otros procesos en ejecución. En determinadas circunstancias, esto se puede utilizar para leer memoria en contenedores de software paravirtualizados.
Los ataques Meltdown se llevan a cabo en tres pasos:
- El contenido de una ubicación de memoria elegida por el atacante, que es inaccesible para el atacante, se carga en un registro.
- Una instrucción transitoria accede a una línea de caché en función del contenido secreto del registro.
- El atacante usa Flush+Reload para determinar la línea de caché a la que se accede y, por lo tanto, el secreto almacenado en la ubicación de memoria elegida.
Diferencia entre Spectre y Meltdown
A pesar de la publicación simultánea de Spectre y Meltdown, los dos explotan diferentes propiedades de las CPU; el único punto en común entre Spectre y Meltdown es la utilización de la ejecución transitoria.
Spectre se basa en eventos de predicción errónea para generar instrucciones transitorias. Spectre solo funciona con datos accesibles arquitectónicamente para una aplicación. Por el contrario, Meltdown se basa en instrucciones transitorias fuera de servicio después de una excepción. Meltdown se basa en instrucciones transitorias inaccesibles desde el punto de vista arquitectónico para una aplicación.
¿Cuántas variantes de Spectre y Meltdown existen?
En el documento de Evaluación sistemática, los investigadores crearon un árbol que ilustra las posibles variantes, definiendo 13 variantes explotables de Spectre y 14 variantes de Meltdown (de las cuales, 6 de las 14 no son explotables).
Variantes de Spectre
Esta nueva clasificación de grupos de Spectre ataca por el elemento microarquitectónico que explotan. Esto crea cuatro tipos de ataques principales: Spectre-PHT, que explota la tabla de historial de patrones; Spectre-BTB, explotando el Branch Target Buffer; Spectre-RSB, explotando el Return Stack Buffer; y Spectre-STL, que explota la predicción de desambiguación de la memoria de las CPU (específicamente, el reenvío de almacenamiento a carga).
Los tres primeros tipos de ataques se basan en el mal entrenamiento del predictor de bifurcación, que puede ocurrir de una de cuatro maneras, según los investigadores:
- Dentro del mismo espacio de direcciones y la misma ubicación de sucursal que luego se explota (entrenamiento incorrecto en el lugar del mismo espacio de direcciones).
- Dentro del mismo espacio de direcciones con una rama diferente (mismo espacio de direcciones fuera de lugar).
- En un espacio de direcciones controlado por el atacante con una sucursal en la misma dirección que la sucursal de la víctima (espacio de direcciones cruzadas en el lugar).
- En un espacio de direcciones controlado por el atacante en una dirección congruente con la rama de la víctima (espacio de direcciones cruzadas fuera de lugar).
Spectre-PHT (Omisión de verificación de límites)
Spectre-PHT abarca la Variante 1 (CVE-2017-5753) y la Variante 1.1 (CVE-2018-3693), así como NetSpectre.
Se ha demostrado que Spectre-PHT es posible en los cuatro tipos de entrenamiento incorrecto (PHT-CA-IP, PHT-CA-OP, PHT-SA-IP y PHT-SA-OP) en Intel, Arm y AMD (microarquitectura Zen) procesadores
Spectre-BTB (inyección de destino de rama)
Spectre-BTB es la variante 2 (CVE-2017-5715).
Los investigadores han demostrado que es posible en los cuatro tipos de desentrenamiento (BTB-CA-IP, BTB-CA-OP, BTB-SA-IP y BTB-SA-OP) en Intel, pero fuera de lugar en el desentrenamiento. no se ha demostrado en AMD (microarquitectura Zen) o Arm, lo que indica que «asumen que son posibles, pero que requieren un conjunto diferente de bits que no pudimos determinar».
Spectre-RSB (predicción errónea del búfer de pila de retorno)
Dos grupos de investigadores han demostrado vulnerabilidades de tipo Spectre utilizando Return Stack Buffer. Estos son SpectreRSB y ret2spec publicados, el último de los cuales se ha demostrado notablemente con código compilado JIT en navegadores web.
Spectre-RSB se ha demostrado en los cuatro tipos de errores de entrenamiento (RSB-CA-IP, RSB-CA-OP, RSB-SA-IP y RSB-SA-OP) en Intel y AMD (microarquitectura Zen). Arm afirma que es posible un error de entrenamiento en el mismo espacio de direcciones, pero no menciona el espacio de direcciones cruzadas. Los investigadores indican que «si bien esperamos que funcionen, no pudimos observar ninguna fuga con ninguna de nuestras pruebas de concepto», y agregaron que «asumimos que es un problema de tiempo».
Spectre-STL (Omisión de almacenamiento especulativo)
Spectre-STL, anteriormente variante 4 (CVE-2018-3639), se reveló por primera vez en mayo de 2018. Se demostró en Intel, AMD y Arm.
Esto es muy diferente de otras variantes de Spectre. Aprovecha el reenvío de tienda a carga, que no implica una predicción basada en el historial; debido a esto, el desentrenamiento (el primer paso) no es posible. Como resultado, Spectre-STL solo puede acceder a la memoria en el mismo nivel de privilegio.
Variantes de Meltdown
La nueva clasificación de las variantes de Meltdown contiene dos niveles. El primer nivel clasifica los ataques por la excepción que provoca una ejecución transitoria. Para los fallos de página, estos se subclasifican mediante los bits de protección de entrada de la tabla de páginas.
Además, para facilitar la comprensión, las variantes de Meltdown se clasifican por el tipo de datos recuperables y la capacidad de cruzar niveles de privilegio.
Se ha observado que las variantes de fusión se basan únicamente en fallas. El análisis de abortos e interrupciones indica que esas funciones no proporcionan una ejecución transitoria para explotar por Meltdown.
Meltdown-US (Omisión solo para supervisores)
Meltdown-US, anteriormente variante 3 (CVE-2017-5754), fue la primera variante de Meltdown divulgada. La mayoría de los procesadores incluyen atributos de tabla de páginas de «usuario» y «supervisor» para designar la propiedad de las páginas de memoria virtual; Meltdown-US demuestra la capacidad de leer la memoria del núcleo desde el espacio del usuario en los procesadores canalizados que no pueden aplicar estos indicadores de forma transitoria.
Los refinamientos de Meltdown-US que utilizan extensiones de sincronización transaccional permiten a los atacantes aumentar la velocidad de acceso a los datos. Además, Meltdown-US es capaz de extraer datos no almacenados en caché de la memoria.
Los investigadores demostraron con éxito Meltdown-US en Intel y Arm Cortex-A75.
Meltdown-P (Omisión de traducción virtual)
Meltdown-P, también conocido como Foreshadow (CVE-2018-3615), aprovecha las fallas en Intel SGX (Software Guard Extensions). Obliga a que ocurra una falla de página durante el acceso no autorizado a la memoria de la tabla de páginas, proporcionando una ruta explotable para leer la memoria protegida.
Cuando los investigadores revelaron Foreshadow a Intel, la empresa identificó variantes llamadas Foreshadow-NG (CVE-2018-3620 y CVE-2018-3646) que permiten a los atacantes leer cualquier dato almacenado en la caché L1, incluido el modo de gestión del sistema, el kernel del sistema operativo host y datos del hipervisor. Estas variantes pueden permitir que los atacantes en plataformas en la nube lean información de otras máquinas virtuales en el mismo hardware físico.
Los investigadores demostraron con éxito que Meltdown-P se demuestra en los procesadores Intel. La documentación de Intel se refiere a Meltdown-P como L1 Terminal Fault (L1TF).
Meltdown-GP (Omisión de registro del sistema)
Meltdown-GP, también conocida como variante 3a (CVE-2018-3640), permite a los atacantes leer registros privilegiados del sistema.
Los investigadores demostraron con éxito Meltdown-GP en Intel y Arm Cortex-A15, A57 y A72.
Meltdown-NM (Omisión de registro FPU)
Meltdown-NM, también conocido como LazyFP (CVE-2018-3665), explota la ejecución especulativa utilizada junto con el cambio de contexto de la unidad de coma flotante. Los investigadores demostraron la capacidad de recuperar claves AES-NI.
Los investigadores demostraron con éxito Meltdown-NM en procesadores Intel.
Meltdown-RW (Omisión de solo lectura)
En relación con los cuatro ataques anteriores, Meltdown-RW es el primero en eludir los «derechos de acceso basados en tablas de páginas dentro del nivel de privilegio actual», según la Evaluación sistemática . Además, Meltdown-RW demuestra que “la ejecución transitoria no respeta el atributo de tabla de página ‘lectura/escritura’. La capacidad de sobrescribir transitoriamente datos de solo lectura dentro del nivel de privilegio actual puede pasar por alto los entornos limitados basados en software que dependen de la aplicación de hardware de la memoria de solo lectura”.
Meltdown-RW inicialmente se etiquetó erróneamente como «Spectre Variant 1.2», aunque debido a que la causa de la ejecución transitoria es una excepción de falla de página, la clasificación correcta de esta vulnerabilidad es Meltdown.
Los investigadores demostraron con éxito Meltdown-RW en procesadores Intel y Arm.
Meltdown-PK (Omisión de clave de protección)
Meltdown-PK aprovecha las «Claves de protección de memoria para el espacio de usuario» (PKU o PKEY) que se introdujeron por primera vez en las CPU Xeon basadas en Skylake de Intel. Esta variante omite el aislamiento de lectura y escritura para PKU dentro del proceso contenedor. Según la Evaluación sistemática, en la que se introdujo esta variante, “en contraste con las variantes de ataque Meltdown de niveles de privilegios cruzados, no existe una solución de software. Intel solo puede reparar Meltdown-PK en hardware nuevo o posiblemente a través de una actualización de microcódigo”, aunque la funcionalidad solo está expuesta en Linux si el kernel se configuró y creó con soporte habilitado.
Meltdown-PK solo se puede explotar en CPU Intel que admitan PKU.
Meltdown-BR (Omisión de verificación de límites)
Meltdown-BR explota la excepción de rango límite excedido presente en los procesadores x86. La variante se puede utilizar para capturar datos fuera de los límites protegidos por el código de operación IA32 «enlazado» en Intel o AMD, o MPX en Intel.
Los investigadores demostraron con éxito Meltdown-BR en las CPU Intel Skylake i5-6200U y AMD Ryzen ThreadRipper 1920X. Esta es la primera, y actualmente la única, variante de Meltdown explotable en AMD.
¿Qué productos se ven afectados?
Spectre y Meltdown son fallas de hardware de gran alcance que afectan a la gran mayoría de los dispositivos actualmente disponibles para la venta, los dispositivos implementados actualmente y los dispositivos heredados que datan de la década de 1990, aunque existen excepciones significativas. Debido a que Spectre y Meltdown representan individualmente una clase de fallas, no una sola vulnerabilidad, las diferencias en el diseño de la microarquitectura en diferentes tipos de procesadores afectan la medida en que los procesadores se ven afectados.
Para productos y sistemas operativos individuales, el sitio web de Spectre and Meltdown mantiene una lista completa de orientación actualizada de proveedores, incluidos Microsoft, Amazon y Google, así como fabricantes de hardware como Apple, Dell, HP y Lenovo.
En términos de las CPU que alimentan computadoras, teléfonos inteligentes y otros dispositivos, se ha demostrado que los productos que utilizan CPU Intel, AMD, Arm o POWER se ven afectados tanto por Spectre como por Meltdown; sin embargo, no todos los productos que usan esas CPU son vulnerables. A pesar de los primeros informes de los medios de comunicación de que la mayoría de las CPU lanzadas desde 1995 son vulnerables, no existe una heurística rápida para determinar si una CPU es vulnerable. Para obtener una mejor comprensión de lo que se ve afectado por Spectre y Meltdown, es necesaria una explicación de la microarquitectura.
Intel
La afirmación «la mayoría de las CPU lanzadas desde 1995» es una referencia a la microarquitectura P6 de Intel, que se introdujo con el Pentium Pro en noviembre de 1995. P6 fue el primer procesador Intel en usar ejecución especulativa y procesamiento fuera de orden. Este diseño se usó para Pentium 2 y 3 (y variantes Celeron y Xeon), y se usaron versiones refinadas en Pentium M (y variante Celeron) y las primeras CPU Intel Core Solo y Duo. Los productos basados en P6 no son compatibles con Intel y son vulnerables a Spectre y Meltdown.
La microarquitectura NetBurst de Intel se introdujo en el Pentium 4 en 2000, como el sucesor previsto del P6. Por una variedad de razones, incluida una tubería de 31 etapas que resultó ser más un estorbo que un beneficio, NetBurst no tuvo éxito y se suspendió en 2008. Intel no admite los productos basados en NetBurst. No hay datos disponibles para demostrar que estos productos son vulnerables a Spectre o Meltdown, pero deben considerarse vulnerables.
Intel Core y las generaciones posteriores de esa microarquitectura, incluidas Nehalem, Sandy Bridge, Haswell y Skylake, trazan su linaje desde P6 y se ven afectados, al igual que las microarquitecturas de bajo consumo Silvermont y Goldmont. Juntas, estas microarquitecturas comprenden efectivamente todos los procesadores Intel Core e Intel Xeon desde 2006, y los procesadores Intel Atom desde 2013, cuya lista completa es proporcionada por Intel.
Por el contrario, la microarquitectura Itanium (IA-64) no se ve afectada por Spectre y Meltdown, que es explícitamente paralelo, en orden, lo que requiere que el compilador defina lo que se puede hacer en paralelo. Sin ejecución especulativa, Spectre y Meltdown no se pueden utilizar. Del mismo modo, la microarquitectura de Bonnell carece de capacidades de ejecución especulativa en aras del ahorro de energía, lo que hace que los procesadores Atom de primera generación sean inmunes.
AMD
Las microarquitecturas AMD desde K8 (Hammer) hasta Zen+ son vulnerables a Spectre. La microarquitectura K8 debutó en septiembre de 2003 con Athlon 64, la primera CPU de AMD capaz de ejecutar Windows de 64 bits.
A diferencia de Intel, las CPU AMD no son vulnerables a Spectre-BTB-SA-OP o Spectre-BTB-CA-OP.
Los primeros informes indicaron que las CPU de AMD no son vulnerables a Meltdown. Las CPU AMD son vulnerables a la variante Meltdown-BR, divulgada públicamente en noviembre de 2018.
Arm
Los SoC como Qualcomm Snapdragon, Apple A-Series, MediaTek Helio y NVIDIA Tegra, así como los SoC de otras compañías, incluida Broadcom, y los procesadores de servidor, incluidos Cavium ThunderX, Qualcomm Centriq y Amazon (AWS) Graviton, utilizan microarquitecturas Arm.
Según Arm, solo los Cortex-R7, R8, A8, A9, A12, A15, A57, A72, A73, A75 y A76 se ven afectados por cualquier variante de Spectre o Meltdown. Estos diseños son utilizados en SoC por los proveedores antes mencionados; los diseños se utilizan en teléfonos inteligentes, tabletas y otros dispositivos.
En particular, la serie Raspberry Pi de computadoras de placa única utiliza diseños ARM1176, Cortex-A7 y A53. Estos diseños carecen de capacidades de ejecución especulativa, lo que los hace inmunes a Spectre y Meltdown.
IBM
Las CPU IBM POWER9, POWER8, POWER7+ y POWER7 son parcialmente vulnerables a Spectre y Meltdown, y han sido parcheadas por IBM. Las CPU de las familias POWER4, 5 y 6 también son parcialmente vulnerables, aunque no se parchearán, ya que esos productos han llegado al final de su vida útil.
¿Cómo puedo protegerme contra Spectre y Meltdown?
Debido a la naturaleza de Spectre y Meltdown, es necesario asegurarse de que estén instalados los últimos parches disponibles para tu sistema. De manera preocupante, los parches iniciales para Spectre y Meltdown se centraron en evitar la explotación de una metodología específica, sin abordar la vulnerabilidad de microarquitectura que permite esos ataques.
A partir de noviembre de 2018, en los sistemas con los últimos parches disponibles, la explotación de algunas variantes de Spectre y Meltdown siguió siendo posible en circunstancias específicas.
Los parches para Spectre y Meltdown deben considerarse un trabajo en progreso, con estrategias de parches iniciales introducidas y revertidas debido a la inestabilidad o los hallazgos que indican que no fueron efectivos contra variantes específicas. No está claro si el par de vulnerabilidades se pueden parchear por completo a través de microcódigos y actualizaciones de software, aunque esta incertidumbre no debería desanimar a los usuarios o administradores de implementar los parches disponibles.
Servidores, equipos de escritorio y portátiles
Las mitigaciones para Spectre y Meltdown se entregan a través de actualizaciones de BIOS y OS. Para actualizaciones de BIOS, consulta con tu fabricante para determinar si hay actualizaciones de BIOS disponibles. Al aplicar las actualizaciones del BIOS, sigue exactamente las instrucciones proporcionadas por el fabricante de tu sistema para evitar causar daños a tu computadora sin darte cuenta.
En términos generales, las actualizaciones del sistema operativo se entregan automáticamente a través de Windows Update, App Store (en Mac OS) o a través del administrador de paquetes en sistemas Linux. Las actualizaciones no estarán disponibles para un sistema operativo que haya llegado al final de su vida útil, como Windows XP.
Dispositivos iOS y Android
Para los usuarios de dispositivos Apple, incluidos los dispositivos iPhone, iPad y Apple TV, se han emitido actualizaciones de software y firmware para abordar Spectre y Meltdown.
Para los usuarios de Android, la primera ronda de parches se entregó en el nivel de parche de seguridad 2018-01-05. Aunque esto no es específico de Spectre y Meltdown, asegúrate de que los dispositivos Android estén actualizados a un mínimo de 7.0 (Nougat), ya que las versiones anteriores no son compatibles.
Servicios de computación en la nube
En general, los usuarios de los servicios de computación en la nube dependen del proveedor de la plataforma para actualizar la infraestructura subyacente. Los usuarios de máquinas virtuales basadas en la nube pueden necesitar actualizar sus máquinas virtuales, aunque esto puede no ser específico de Spectre y Meltdown.
¿Cómo afectará a mi computadora la instalación de parches para proteger contra Spectre y Meltdown?
La creación, el despliegue y el desempeño de las mitigaciones de Spectre y Meltdown están sujetos a luchas políticas internas proporcionales a la gravedad de las vulnerabilidades. Los primeros parches de software para el dúo estaban plagados de problemas de optimización, lo que provocó regresiones en el rendimiento por una variedad de razones, incluidos parches que se aplicaron a sistemas que no eran vulnerables a variantes específicas, parches para microcódigo y núcleos de sistemas operativos en conflicto entre sí, y pruebas previas deficientes. La implementación conduce a la inestabilidad del sistema, particularmente en Windows.
Parches iniciales que causan inestabilidad en el sistema
Los parches iniciales para Windows crearon inestabilidad en el sistema, y el parche inicial de Microsoft se incluyó en la lista negra en sistemas con software antivirus de terceros, ya que el parche provocó incidentes de pantalla azul de la muerte en estos sistemas. Posteriormente, Microsoft detuvo todas las actualizaciones de los sistemas con software antivirus de terceros incompatible. El parche Meltdown de Microsoft provocó que ciertos sistemas AMD que ejecutan Windows 10 se iniciaran en bucle, desafortunado tanto por el hecho de que los sistemas AMD no son vulnerables a esas variantes de Meltdown, como por los usuarios de Windows 10 Home que no tienen una manera fácil de diferir las actualizaciones, lo que llevó a Microsoft a retirar el parche.
La primera actualización del microcódigo de Intel causó reinicios aleatorios, primero se pensó que afectaba solo a las CPU Haswell y Broadwell, y luego se confirmó que afectaba a las CPU Ivy Bridge, Sandy Bridge, Skylake y Kaby Lake. El problema se generalizó lo suficiente como para que Intel ordenara a los fabricantes que dejaran de implementar actualizaciones de microcódigos hasta que se pudiera emitir una nueva actualización.
Los intentos fallidos de Microsoft de parchear Windows 7 y Server 2008 R2 llevaron a un incidente llamado «Total Meltdown», que empeoró dramáticamente la vulnerabilidad. El parche estableció incorrectamente los permisos, lo que provocó que la memoria a la que solo debería acceder el kernel se asignara automáticamente para cada proceso que se ejecuta con privilegios de nivel de usuario; esto permitió que los programas maliciosos leyeran la memoria completa del sistema a velocidades de gigabytes por segundo, en lugar de los 120 KB/s de los que Meltdown es capaz.
En abril de 2018, se descubrió que los parches de Windows 10 para Spectre y Meltdown anteriores a la actualización de abril de 2018 eran completamente inútiles, ya que un programa podía acceder a toda la tabla de páginas del núcleo llamando a NtCallEnclave.
Implicaciones prácticas de rendimiento de la aplicación de parches
La guía original de Microsoft sobre la degradación del rendimiento señaló que Spectre-PHT y Meltdown-US tenían un impacto mínimo en el rendimiento, aunque parchear Spectre-BTB provocó regresiones en el rendimiento.
Se espera que estas regresiones se minimicen en Windows 10 19H1, ya que Microsoft planea adoptar el método Retpoline de Google para parchear Spectre-BTB.
Para Linux, el impacto en el rendimiento depende en gran medida de la configuración. Es probable que las regresiones en el rendimiento sean más notorias en los kernels LTS más antiguos, particularmente en 4.4 y 4.9, aunque son preferibles 4.14 o 4.19. Las regresiones en el uso del escritorio son insignificantes, aunque las llamadas al sistema o las interrupciones continúan incurriendo en gastos generales de cambio de contexto, más visibles en las aplicaciones de bases de datos. Esto se reduce al territorio del margen de error mediante el uso de Retpoline en el hardware existente.
En el kernel 4.20 se introdujo una nueva mitigación, Predictores de bifurcación indirecta de subproceso único (STIBP), para sistemas con microcódigo actualizado, aunque tiene regresiones de rendimiento significativas asociadas. Es poco probable que STIBP permanezca habilitado, al menos en el estado actual. La solución está destinada a abordar Spectre-BTB en todos los subprocesos, aunque la vulnerabilidad de PortSmash anunciada en noviembre de 2018 está instando a los usuarios a desactivar por completo el multiproceso simétrico (SMT), lo que elimina la necesidad de ese parche.
¿La compra de un nuevo procesador ayudará a proteger contra Spectre y Meltdown?
Los nuevos procesadores abordan las vulnerabilidades de Spectre y Meltdown a nivel de hardware, aunque comprar un nuevo procesador solo por ese motivo probablemente no esté justificado. Los parches actualmente disponibles e inmediatamente en el horizonte reducen las penalizaciones de rendimiento por seguridad al ruido de fondo.
Sin embargo, a partir de noviembre de 2018, en los sistemas con los últimos parches disponibles, la explotación de algunas variantes de Spectre y Meltdown siguió siendo posible en circunstancias específicas.
Dicho esto, Intel optó por no proporcionar parches a ciertas CPU lanzadas entre 2007 y 2011, dejándolas vulnerables. Si estás utilizando una computadora con tecnología de CPU Bloomfield, Bloomfield Xeon, Clarksfield, Gulftown, Harpertown Xeon C0 y E0, Jasper Forest, Penryn/QC, SoFIA 3GR, Wolfdale, Wolfdale Xeon, Yorkfield o Yorkfield Xeon, la actualización a un hardware más nuevo es aconsejable, independiente de Spectre o Meltdown.
Intel incluyó correcciones a nivel de hardware para algunas de las variantes como parte de la serie Coffee Lake-S Refresh de CPU para estaciones de trabajo, así como CPU Xeon Cascade Lake para servidores. AMD proporciona soluciones a partir de las CPU Zen 2, y Arm ha proporcionado soluciones a nivel de hardware en los diseños Cortex-A76, A53, A55, A32, A7 y A5.