¿Qué es Meltdown/Spectre?

Meltdown y Spectre son nuevas vulnerabilidades de los procesadores que afectan a la mayoría de los PC y teléfonos inteligentes. Existen parches para ello, pero afectan al rendimiento del procesador.

Objetivos de aprendizaje

Después de leer este artículo podrás:

  • Definir Meltdown y Spectre y cómo diferenciarlos
  • Describir cómo funciona la ejecución especulativa
  • Explicar cómo afecta el parche Meltdown a la velocidad del procesador

Contenido relacionado


¿Quieres saber más?

Suscríbase a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar enlace del artículo

¿Qué es Meltdown/Spectre?

Meltdown y Spectre son vulnerabilidades que se descubrieron hace poco en los chips de los procesadores de Intel, AMD, Apple y ARM. Estas vulnerabilidades son el resultado de un grave fallo de diseño en dichos chips, y la aparición de este problema ha provocado que se tuviera que rediseñar el software de los sistemas operativos Windows, Mac y Linux para mitigar la vulnerabilidad y evitar que los atacantes se aprovechen de la misma.

Estas vulnerabilidades las descubrieron los investigadores del Project Zero de Google, un equipo que se dedica a encontrar fallos de seguridad antes de que los atacantes puedan aprovecharse de ellos; en este momento, no se conocen vulnerabilidades de Meltdown o Spectre. Los equipos de seguridad de las principales empresas tecnológicas, como Apple, Intel y Microsoft, así como los desarrolladores de código abierto de Linux, están dedicando ingentes recursos para tratar de garantizar que sus procesadores y sistemas operativos estén protegidos antes de que se produzcan ataques maliciosos.

¿A quiénes afectan las vulnerabilidades Meltdown y Spectre?

Salvo algunas excepciones, todos aquel con un PC o un teléfono inteligente está en riesgo. Según Google, todos los dispositivos con un chip de procesador Intel fabricado después de 1995 están afectados. Es más difícil aprovecharse de los chips AMD y ARM, pero también están en riesgo.

¿Cómo protegerse contra la vulnerabilidad Meltdown/Spectre?

Además de reemplazando el procesador de un PC, la única manera de acabar con la vulnerabilidad es mediante el parcheado del sistema operativo. Apple introdujo de manera discreta un parche para Meltdown en OSX a principios de diciembre, mientras que Microsoft publicó un parche para Windows el 3 de enero, y los desarrolladores de Linux todavía están en proceso de desarrollar un parche.

Un desafortunado efecto secundario de estos parches de Meltdown es que, por su diseño, ralentizan la velocidad de procesamiento de los ordenadores que usan el sistema operativo parcheado. Estas ralentizaciones afectarán al rendimiento en un porcentaje estimado del 5 al 30 %, en función del tipo de chip y de las tareas que se realicen.

¿Cómo funcionan realmente las vulnerabilidades Meltdown y Spectre?

Tanto Meltdown como Spectre son vulnerabilidades que se crean en la ejecución de un código especial de bajo nivel llamado "código del kernel", que se ejecuta específicamente durante un proceso conocido como ejecución especulativa.

¿Qué es la ejecución especulativa?

La ejecución especulativa puede explicarse más fácilmente con una metáfora. Imaginémonos a una senderista perdida en el bosque que se encuentra con una bifurcación en el camino de la que salen dos senderos paralelos; un camino la llevará a casa, el otro no. En vez de perder el tiempo esperando a que otro senderista le dé indicaciones, elige el camino que cree que es más probable que la lleve a casa. En algún momento de la caminata, se encuentra con un marcador de sendero, si ese marcador le indica que va por el camino correcto, entonces ella seguirá por ese camino y llegará a casa. Si el marcador le dice que va por el camino equivocado, dará marcha atrás rápidamente y tomará el sendero alternativo, lo que no la deja en peor situación que si siguiera en la base del sendero esperando indicaciones.

Ejecución especulativa

Muchos procesadores modernos llevan a cabo una técnica similar conocida como ejecución especulativa, en la que la CPU intenta adivinar qué código debe ejecutarse a continuación, y luego ejecuta ese código antes de que se le pida que lo haga. Si resulta que el código ejecutado no era necesario, los cambios se revierten. Con ello se pretende ahorrar tiempo y acelerar el rendimiento.

Los informes sobre la vulnerabilidad Meltdown/Spectre señalan que las CPU de Intel pueden estar realizando una ejecución especulativa de código sin requerir importantes comprobaciones de seguridad. Puede que sea posible escribir software diseñado para comprobar si el procesador ha completado una instrucción que normalmente sería bloqueada por estas comprobaciones de seguridad.

Este mal uso de la ejecución especulativa crea una vulnerabilidad en la CPU que puede aprovechar un atacante para acceder a datos confidenciales en la memoria del kernel, como contraseñas, claves de cifrado, fotografías personales, correos electrónicos, etc.

¿Qué es un kernel?

Un kernel es el programa que constituye el núcleo del sistema operativo de un ordenador. Tiene un control absoluto sobre el sistema operativo y lo administra todo, desde el inicio hasta el reparto de la memoria. El kernel también es responsable de enviar las instrucciones de procesamiento de datos a la CPU (Unidad central de procesamiento). La mayoría de las CPU cambian constantemente entre el modo kernel y el modo usuario.

¿Cuál es la diferencia entre el modo kernel y el modo usuario?

En el modo kernel, la CPU ejecuta un código que tiene acceso ilimitado al hardware y la memoria del ordenador. Este modo suele estar reservado para las operaciones de más bajo nivel y de mayor confianza. Los fallos que se producen mientras la CPU está en modo kernel pueden ser catastróficos; pueden hacer que deje de funcionar todo el sistema operativo.

En el modo usuario, el código que se ejecuta no puede acceder al hardware ni a la memoria de referencia, sino que debe delegar en las API del sistema (las API del sistema pueden ejecutar funciones del modo kernel que el software del modo de usuario puede solicitar con los permisos adecuados). Los fallos en el modo usuario suelen ser aislados y recuperables. La mayor parte del código se ejecuta en modo usuario.

¿Por qué reduce el rendimiento el parche Meltdown?

La solución del parche de Meltdown implica una separación más drástica de la memoria del kernel de los procesos de usuario. Esto se hace mediante un método llamado Aislamiento de tablas de páginas del kernel (KPTI). El KPTI mueve las operaciones del modo kernel a un espacio de direcciones completamente separado de las operaciones del modo usuario. Esto significa que se necesita mucho más tiempo para cambiar entre el modo kernel y el modo usuario.

Para ilustrar esto, imaginemos un puesto de comida ambulante que solo vende dos artículos: perritos calientes y limonada fría. El empleado que está dentro del puesto puede alcanzar con facilidad tanto la olla con los perritos calientes como la nevera que contiene las limonadas frías, y el negocio fluye con bastante rapidez. Ahora, imaginemos que llega el inspector de sanidad y les exige que los alimentos calientes y fríos se guarden en lugares separados. El empleado seguirá pudiendo alcanzar los perritos calientes sin problema, pero tendrá que salir del puesto y cruzar la calle para coger cada limonada. Esto provocará que la cola del puesto avance mucho más lento, sobre todo si la gente pide muchas limonadas. Esto es similar a cómo el KPTI puede ralentizar el rendimiento de un sistema operativo.

¿Cuál es la diferencia entre Meltdown y Spectre?

Tanto Meltdown como Spectre son vulnerabilidades creadas por la forma en la que los procesadores gestionan la ejecución especulativa, pero se diferencian un poco en cómo funcionan y en qué tipos de procesadores se ven afectados.

Meltdown solo afecta a los procesadores de Intel y Apple y puede aprovecharse para filtrar información que quede expuesta como resultado del código que los procesadores ejecutan durante la ejecución especulativa. Meltdown es más fácil de explotar que Spectre y ha sido calificado como el mayor riesgo por los expertos en seguridad. Por suerte, Meltdown también es más fácil y sencillo de parchear.

Spectre afecta a los procesadores de Intel, Apple, ARM y AMD y puede ser explotado para engañar a los procesadores y que ejecuten un código que no deberían poder ejecutar. Según los expertos en seguridad de Google, Spectre es mucho más difícil de explotar que Meltdown, pero también es mucho más difícil de mitigar.

¿Quieres saber más sobre Meltdown y Spectre?

Puedes acceder al documento de Meltdown así como al de Spectre si quieres saber más detalles técnicos sobre los mismos.