Meltdown y Spectre

Meltdown y Spectre: así es la pesadilla en la seguridad de las CPUs de Intel, AMD y ARM

El año no podía empezar mucho peor en el ámbito de la seguridad. Si ayer hablábamos del error de diseño en los microprocesadores de Intel y sus graves consecuencias, ahora se han conocido nuevos datos que indican que ese primer problema de seguridad (bautizado como 'Meltdown') que sí se puede solucionar con parches tiene una variante aún más peligrosa.
Se trata de Spectre, un fallo de diseño similar al de Intel pero que es aún más grave porque afecta no solo a los procesadores de este fabricante, sino también a los diseños de AMD y ARM. Los datos que se tienen en estos momentos revelan algo aún más preocupante: no hay solución para atajar un potencial ataque que explote la vulnerabilidad que presenta Spectre.

Lamentamos presentaros a Meltdown y Spectre

Cuando hablábamos del problema de diseño de los procesadores de Intel explicábamos ese primer problema: procesos con privilegios bajos (aquellos que lanzan las aplicaciones de usuario convencionales) podían acceder a la memoria del kernel del sistema operativo, el 'sancta sanctorum' de estas plataformas.
Meltdown Spectre  
Meltdown y Spectre tienen ya sus propios logos, diseñados por Natascha Eibl. Fuente: Meltdownattack
 
Un ataque que explotase dicho problema permitiría a un software malicioso espiar lo que están haciendo otros procesos y también espiar los datos que están en esa memoria en el ordenador (o dispositivo móvil basado en micros Intel) atacado. En máquinas y servidores multi-usuario, un proceso en una máquina virtual podría "husmear" en los datos de la procesos de otros procesos en ese servidor compartido.
Ese primer problema, como decíamos, es en realidad solo parte del desastre. Los datos actuales provienen especialmente de un grupo de investigadores de seguridad formados por expertos del llamado Project Zero de Google, de la Universidad de Tecnología de Graz, de la Universidad de Pennsylvania, de la Universidad de Adelaida en Australia y de las empresas de seguridad informática Cyberus y Rambus.
Todos ellos han publicado los detalles de dos ataques basados en estos fallos de diseño. Los nombres de esos ataques son Spectre y Meltdown, y en un sitio web dedicado a describir estas vulnerabilidades destacaban que "aunque los programas normalmente no tienen permiso para leer datos de otros programas, un programa malicioso podría explotar Metldwon y Spectre y apropiarse de secretos almacenados en la memoria de otros programas". Como revelan en su estudio, la diferencia fundamental entre ambos es que Meltdown permite aceder a la memoria del sistema, mientras que Spectre permite acceder a la memoria de otras aplicaciones para robar esos datos.
Estos ataques se presentan en tres variantes distintas ( CVE-2017-5715 / CVE-2017-5753 / CVE-2017-5754, dos de ellas de Spectre, otra de Meltdown, como explican en Project Zero) y están presentes en diversos sistemas: ordenadores personales, dispositivos móviles, y la nube, y como advertían en esa descripción "dependiendo de la infraestructura del proveedor en la nube, podría ser posible robar datos de otros clientes". Las diferencias entre uno y otro son importantes:
  1. Meltdown: como revela ese estudio, este ataque permite a un programa acceder a la memoria (y secretos) de otros programas y del sistema operativo. "Meltdown rompe el aislamiento fundamental que existe entre las aplicaciones de usuario y el sistema operativo". El problema afecta a ordenadores personales y a la infraestructura cloud. Es importante destacar que hay parches software para atajar los ataques Meltdown.
  2. Spectre: este problema va más allá y "rompe el aislamiento entre distintas aplicaciones". Un atacante podría usarlo para vulnerar la seguridad de aplicaciones que han sido programadas perfectamente y "siguiendo las mejores prácticas", y de hecho seguir esas prácticas acaba siendo irónicamente contraproducente, ya que hace estos programas más vulnerables a Spectre. A diferencia de Meltdown, no hay parches software para Spectre, que eso sí, es más difícil de explotar que Meltdown, pero también "más difícil de mitigar". Algunos parches software pueden evitar ataques Spectre con exploits conocidos que traten de aprovechar esta vulnerabilidad.
Meltdown afecta a todos los procesadores Intel que hagan uso de la tradicional Out-of-Order Execution, y eso incluye básicamente a todos los que están funcionando a día de hoy en nuestros equipos, ya que estos procesadores llevan produciéndose desde 1995. Solo los Itanium y los Intel Atom desarrollados antes de 2013 están fuera de peligro. Los investigadores no han podido comprobar de momento si el problema afecta también a los procesadores de ARM y de AMD, y solo indican que "no está claro" si también podrían estar expuestos.
Firefox  
Esta imagen, extraída del paper académico dedicado a Meltdown, muestra cómo el gestor de contraseñas de Firefox 56 "cae" en la trampa de Meltdown y muestra las contraseñas cuando no debería hacerlo.
En el caso de Spectre, "prácticamente todos los sistemas" están afectados por esta vulnerabilidad. Así pues, los riesgos son mayores y plantean una amenaza para nuestros ordendores de sobremesa, portátiles, tabletas, móviles, smartphones y cualquier otro dispositivo que cuente con un diseño de Intel, AMD o ARM.
Los responsables de estas revelaciones explicaban que la respuesta a la pregunta "¿estoy yo afectado por el problema?" es un contundente "con toda probabilidad, sí", pero es que de momento no hay forma de saber si alguien ha logrado efectuar un ataque con estas técnicas, ya que que se sepa dichos ataques no dejan huella en los ficheros de registro del sistema. Los antivirus podrían ayudar a mitigar el problema, pero lo más probable es que no puedan servir de mucho ya que esos ataques pueden disfrazarse como aplicaciones aparentemente inocuas.

La ejecución especulativa, la raíz de un problema que sacrifica seguridad a cambio de velocidad

Erik Bosman, un investigador del grupo de seguridad VUSEC de la Universidad de Amsterdam, lograba hace unas horas reproducir un ataque aprovechando la vulnerabilidad de los procesadores de Intel.
El problema tiene como raíz la llamada "ejecución especulativa". Cuando un procesador Intel ejecuta código y llega un punto en un algoritmo en el que las instrucciones se bifurcan en dos direcciones distintas dependiendo de los datos de entrada, esas instrucciones ahorran tiempo "especulando" con el camino por el que se seguirá ejecutando el proceso.
Básicamente lo que hacen es tratar de adivinar lo que va a pasar, por dónde va a seguir ejecutándose el programa, y adelantarse para ganar terreno y ventaja. Si el procesador se da cuenta de que esa apuesta especulativa era errónea, retrocede en el hilo de ejecución y tira a la basura ese trabajo.
El problema es, como explicaba Bosman, que los procesadores Intel no separan de forma completa los procesos con privilegios bajos y de baja confianza de aquellos que pueden acceder a la memoria restringida del kernel del sistema operativo. O lo que es lo mismo: un hacker puede engañar al procesador y hacer que ese proceso "normal" eche un vistazo a la memoria del núcleo gracias a la ejecución especulativa.
Daniel Gruss, uno de los investigadores que descubrió estos ataques, explicaba cómo "básicamente lo que ocurre es que el procesador va demasiado lejos, ejecutando instrucciones que no debería". El problema es que si al final esa predicción especulativa no era válida, el procesador vuelve atrás y se deshace de esos datos con los que especulaba, pero atención, porque no lo hace de forma efectiva.
Antes de hacerlo los almacena en su caché, una memoria especialmente rápida que da acceso a datos frecuentes. Un hacker podría ser capaz de diseñar peticiones al procesador para lograr aprovechar esos fallos especulativos y componer un puzzle muy peligroso: acceder a esa memoria privilegiada y a datos como contraseñas que quedaron guardadas en esa caché unos instantes antes de ser borrados. Instantes suficientes para que un código malicioso los recupere.
Como explican en Wired, algunos investigadores de seguridad creyeron que este problema de seguridad en las CPUs de Intel permitía a los hackers superar la seguridad impuesta por el KASLR (Kernel Address Space Layout Randomization). Esa aleatoriedad con la que se almacena el código del núcleo hacía muy difícil poder acceder a dicha memoria, pero esta vulnerabilidad hacía que ese mecanismo de seguridad fallase.
Lo que ocurre ahora es que con el descubrimiento de Bosman el error se vuelve más peligroso: no solo es posible localizar las zonas de memoria con el código del kernel: también se puede echar un vistazo a esas zonas y robar los datos que contienen.

Intel echa balones fuera, AMD y ARM reconocen estar afectados pero minimizan el impacto

En el comunicado que Intel lanzaba hace unas horas la empresa no parecía dar demasiada relevancia a la amenaza planteada por Meltdown, el fallo que solo les afectaba a ellos, y en lugar de eso hablaba de cómo los problemas afectaban también tanto a AMD como a ARM.

En ese mensaje Intel mencionaba que según sus análisis el problema puede afectar "a muchos tipos de dispositivos informáticos, con todo tipo de procesadores y sistemas operativos de diferentes proveedores". Aquí Intel probablemente no hablaba de Meltdown, el error del que muchos medios nos hicieron eco, sino de Spectre, el otro problema —aún más grave— que ha salido a la luz en las últimas horas.
Ina Fried, de Axios, mencionaba hace unas horas que efectivamente había dos problemas distintos. El primero, el que afectaba solo a Intel, quedaba ensombrecido por el segundo, que afectaba a todo tipo de procesadores, incluidos los diseños de AMD y ARM.
Eso plantea una amenaza aún mayor a la seguridad, puesto que además de nuestros ordenadores personales o portátiles también habría potenciales riesgos de seguridad para nuestros dispositivos móviles, la inmensa mayoría de los cuales están basados en procesadores ARM. Esta última confirmó que algunas de sus arquitecturas para dispositivos móviles están afectadas, como por ejemplo las usadas en los procesadores Cortex-A que son prácticamente la norma en el mundo de la movilidad.
Cortex
En ARM, que ha publicado un documento con detalles específicos de sus procesadores, explicaron que para aprovechar una vulnerabilidad de este tipo "el malware debe ejecutarse de forma local y podría resultar en que se accediera a datos de la memoria privilegiada". AMD también confirmó estar afectada por el problema, aunque de forma mucho más leve que Intel:
Para aclarar las cosas, el equipo de investigación en seguridad identificó tres variantes que se orientaban a atacar la ejecución especulativa. La amenaza y la respuesta a esas tres variantes es distinta según cada empresa de microprocesadores, y AMD no es susceptible a las tres. Debido a las diferencias en la arquitectura de AMD, creemos que hay un riesgo prácticamente nulo para los procesadores de AMD en estos momentos.

Parches en camino

Las diversas empresas tecnológicas ya se han pronunciado y como comentábamos, los parches que tratan de dar solución a estos problemas o que tratan al menos de mitigarlos están en pleno desarrollo. Los desarrolladores del kernel Linux fueron los primeros en plantear los llamados parches KAISER, y hay ya nuevas versiones del kernel con esos parches aplicados que irán llegando a las distintas distribuciones Linux a través de los gestores de paquetes.
Nexus 
El estudio de los investigadores del Project Zero en Google demostró que los procesadores ARM presentes en móviles como el Google Nexus 5X (en este caso concreto, los Cortex-A57) estaban afectados por Spectre. En Google indican, eso sí, que gracias a la última actualización de seguridad el problema que plantea Spectre se ha atajado, algo imposible de confirmar al 100% sobre todo cuando otros investigadores hablan de lo difícil que es mitigar esa vulnerabilidad.
Microsoft por su parte ha publicado un parche de emergencia para todos los dispositivos basados en Windows 10 —podéis aplicarlo revisando las actualizaciones en la Configuración de Windows—, pero habrá más actualizaciones pronto. En Apple, que se ha mantenido al margen del debate por el momento, sí han publicado un parche parcial con la versión 10.13.2 de macOS.
Los investigadores de Google daban muchos más detalles técnicos sobre el funcionamiento de estos ataques en el blog oficial de Project Zero, y allí explicaban cómo el problema afecta tanto a dispositivos Android y Chrome OS, aunque según esos expertos explotar la vulnerabilidad "es difícil y limitado en la mayoría de dispositivos Android".
Según ese estudio, la próxima versión de Chrome que se publicará el 23 de enero se modificará para mitigar el ataque y se habilitará la opción "aislamiento de sitios" (podéis activarla manualmente como explican aquí) para ampliar la protección en este ámbito. La Plataforma Cloud de Google (GCP) y las aplicaciones de la G Suite también están siendo parcheadas, y como indican en Google los usuarios de la suite G no tienen que hacer nada para estar protegidos.
El blog de seguridad de Google tienen más información al respecto, y en él se puede comprobar qué acciones hay que realizar en distintas plataformas de Google (Android, Google Apps, Google Chrome/OS) o productos que como los Chromecast o Google Home no están afectados por el problema.
En el ámbito de la infraestructura cloud, donde los riesgos son igualmente enormes (imprevisibles, pero aparentemente son incluso más preocupantes) las empresas también están actuando. En Azure han decidido adelantar sus mantenimientos programados, que se efectuarán durante esta madrugada (3:30 PM PST, 3 de enero de 2018). Amazon también ha publicado un comunicado en el que avisa de que la mayoría de las instancias de Amazon EC2 están protegidas (suponemos que hablan de Meltdown) y habrá más actualizaciones en el futuro.
El impacto final tras aplicar esos parches y actualizaciones es imprevisible: en Intel indicaban que ese impacto será probablemente despreciable y dependerá de la carga de trabajo, pero otros estudios preliminares a los que aludíamos en nuestros artículos de ayer apuntaban a bajadas de rendimiento de entre el 5 y el 30%. Las incógnitas en este ámbito también son notables, y habrá que esperar a tener más datos para poder confirmar ese impacto en el rendimiento, si es que realmente existe.