4 ene 2018

#Meltdown y #Spectre: pesadilla en la seguridad de las CPUs de Intel, AMD y ARM (actualizado)

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 y Spectre tienen ya sus propios logos, diseñados por Natascha Eibl.

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 "cotillear" 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 (Spectre: CVE-2017-5715 y CVE-2017-5753 / Meltdown: CVE-2017-5754 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 el problema del que hablábamos ayer y que afecta, que se sepa, a procesadores de Intel). 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. El video de Meltdown asusta un poco:
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 atacante 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 atacante 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 atacantes superar la seguridad impuesta por el KASLR (Kernel Address Space Layout Randomization) del que hablábamos ayer. 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 (Spectre).

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 hicimos eco ayer, 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.

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: "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."

Pruebas de Concepto (PoC) y chequeos

Se han publicado las siguientes pruebas de concepto y herramientas para verificar si el sistema es vulnerable:

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.

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, como decíamos ayer. 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.

Actualizaciones (desde el 03/01 en adelante)

Las soluciones vienen en camino y durante las últimas semanas Microsoft y diferentes programadores de Linux han buscado cerrar el fallo Meltdown, separando la memoria del kernel de los procesos del usuario en lo que se denomina como "Aislamiento de la tabla de páginas del Kernel". Para Spectre de momento no hay solución pública.

A través del aislamiento, el sistema evita que cualquier atacante que consiga llegar hasta el 'chip' pueda hacerse con datos sensibles del sistema. Pero, para conseguir corregir totalmente esta grave vulnerabilidad no solo se tendrán que poner las pilas los sistemas operativos sino que los desarrolladores de antivirus también deberán actualizarse a toda prisa para poder funcionar correctamente en este nuevo escenario.

Los desarrolladores del kernel de Linux han realizado cambios significativos en el subsistema de memoria virtual del kernel en las últimas semanas y Microsoft ayer lanzó la actualización oficial KB4056892 y una guía con información sobre los errores y las actualizaciones. Aunque se lanzó principalmente para actualizar automáticamente Windows 10, también estará (el próximo martes) disponible para versiones anteriores del sistema, ya que el error afecta a los procesadores fabricados en la última década.

Como ya se mencionó ARM ya ha publicado un boletín oficial y Google ha publicado la actualización oficial para Android.

Para mitigar Meltdown que Chrome, se puede activar el flag "enable-site-per-process" para el aislamiento de sitios. Esto no resuelve el problema, solo lo mitiga en este navegador.

VMware ya ha publicado el boletín VMSA-2018-000, con la actualización de todos sus productos.

Mozilla Firefox acaba de publicar la versión 57.0.4 con correcciones para Meltdown y Spectre.

En el caso de Apple, la empresa ha confirmado en las últimas horas que las deficiencias de seguridad detectadas recientemente en microchips también le afectan. En concreto, a través de un comunicado, los de Cupertino indican que todos los sistemas Mac y dispositivos con iOS están expuestos a estos fallos de seguridad, "aunque no hay ataques conocidos que estén afectando a nuestros clientes en estos momentos". También aclara que iOS 11.2, macOS 10.13.2, y tvOS 11.2 ya cuentan con protecciones disponibles, al tiempo que señalan que en los próximos días continuarán facilitando parches para cubrir toda su gama de productos.

Resumen de parches publicados

Más información: Meltdown and Spectre | Meltdown (PDF) | Spectre (PDF)

Suscríbete a nuestro Boletín

3 comentarios:

  1. Algunas preguntas que creo le serviran a otros:
    1. Si actualizamos Windows 10 y Chrome ya solucionamos Meltdown?
    2. Aun actualizando seguimos siendo vulnerables a Spectrum?
    3. Cual es la solucion a Spectrum?
    4. Como podríamos ser victimas de estos ataques? con solo visitar una web? o se necesita instalar un software malicioso?

    ResponderBorrar
    Respuestas
    1. 1. No se puede decir que estará completamente solucionado pero en esos entornos (win+chrome) no se podrá explotar meltdown
      2. Sí
      3. Por ahora no la hay y el problema aún se está analizando. Quizás el 09/01 se sepa algo más.
      4. De cualquier forma posible que se ejecute algo en el sistema y a través de cualquier canal posible.

      Borrar
  2. cual seria el diagnostico ante este salida del specucheck , ami me resulta ambigua en algunos puntos

    Mitigations for CVE-2017-5754 [rogue data cache load]
    -----------------------------------------------------
    Kernel VA Shadowing Enabled: yes
    Kernel VA Shadowing with User Pages Marked Global: yes
    Kernel VA Shadowing with PCID Support: no
    Kernel VA Shadowing with INVPCID Support: no

    Mitigations for CVE-2017-5715 [branch target injection]
    -------------------------------------------------------
    Branch Prediction Mitigations Enabled: no
    Branch Prediction Mitigations Disabled due to System Policy: no
    Branch Prediction Mitigations Disabled due to No Hardware Support: yes
    CPU Supports Speculation Controls: no
    CPU Supports Speculation Commands: no
    IBRS Speculation Control Present: no
    STIBP Speculation Command Present: no
    Supervisor Mode Execution Prevention Present: no

    ResponderBorrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!