Comunidad Funcionalidades Geek

Un fantasma acecha nuestros equipos ¡Conoce a Spectre y Meltdown, dos vulnerabilidades para las CPU’s!

abril 30, 2018

Un fantasma acecha nuestros equipos ¡Conoce a Spectre y Meltdown, dos vulnerabilidades para las CPU’s!

El post está disponible también en : Inglés

La importancia de la monitorización de los CPU’s: Spectre y Meltdow

Introducción

A final del siglo veinte nos tocó presenciar algo maravilloso, desde 1977 el Sr. Dieter Seitzer y su equipo en la Universidad Erlangen-Nuremberg imaginaron digitalizar el sonido, pero tenían un pequeño problema. El inconveniente era que simplemente no existía hardware que lo codificara, a excepción de los superordenadores de la época, que estaban fuera del alcance para gran parte de la población. Diez años después se les unió el Sr. Karlheinz Brandenburg, de la compañía Fraunhofer-Gesellshaft quien junto con un grupo de talentosos desarrolladores pudieron programar el algoritmo LC-ATC (“Low Complexity Adaptive Transform Coding”), pero debido a la enorme cantidad de tiempo requerido, sólo podía ser probado en un material de audio muy limitado.

¿Qué diantres tiene esto que ver con la monitorización de CPU’s, Spectre y Meltdown? Calma, ya os explicamos. Los ordenadores fueron creciendo en poder de cálculo en todos sus componentes, no solo en las Unidades Centrales de Procesamiento (CPU). En 1981 se inventaron los Discos Compactos CD y la innovación estaba en todos los ambientes. En 1989 se patenta en Alemania el MP3 y en 1996 se masifica Internet. 1980 fue una década maravillosa para la informática, de la cual somos testigos presenciales, pero los años 90 nos iban a dejar con la boca abierta. Los procesadores en 1997 eran capaces de reproducir la música en MP3 que tanto habíamos soñado y pronto el software se fue quedando rezagado con los nuevos procesadores y los fabricantes advirtieron tal detalle: los equipos desperdiciaban ciclos de reloj (potencia de cálculo por segundo) incluso cuando escuchábamos a Britney Spears y a Mecano desde nuestros discos duros de 700 megabytes. En 1999 los reproductores portátiles de MP3 fueron inventados, la potencia y miniaturización comenzaron a ser parte de nuestras vidas.

Otra adición bienvenida fue la inclusión de manera integrada en los CPU de los coprocesadores matemáticos, unos chip que venían con un zócalo aparte en las placas madres y que se encargaban (y aún lo hacen) de realizar cálculos -no toman decisiones ni comparaciones- de una manera más rápida para luego entregarlos al CPU. Esto se tradujo en ordenadores con mayor rapidez y eficiencia pero debemos reseñar que Intel en 1994 tuvo problemas con dichos coprocesadores al devolver errores a partir del rango de las diezmilésimas en adelante. El caso fue excesivamente publicitado por los medios, llegando incluso a que la empresa Intel se ofreciera a cambiar los CPU’s defectuosos sin ningún coste. Esto sirve como precedente para el caso que nos ocupa, tanto para usuarios especializados como para el resto.

spectre y meltdown

La llegada del siglo XXI

Superado el supuesto caos informático del año 2000, dos empresas dominaban la producción de CPU’s: AMD® (anteriormente conocidos como Cyrix) e Intel®.

spectre y meltdown

Ambos fabricantes llevaban tiempo manufacturando procesadores que eran más rápidos que el software existente para la época. Para aprovechar los ciclos de CPU desperdiciados se atrevieron a venderlos con las siguientes características integradas:

  • Ejecución especulativa: esencialmente el procesador ante un condicional se apresura a calcular ambos resultados antes de evaluar el condicional, después devuelve el resultado que es correcto y descarta el incorrecto.
  • Niveles de privilegio: esto no tiene nada que ver con velocidad de procesador, sino con la reserva de zonas de memorias para que sean utilizadas única y exclusivamente por los kernels de los sistemas operativos actuales. Esto va de seguridad, un “enjaulado” de las aplicaciones de usuario supervisadas de cerca por el sistema operativo.
  • Ejecución fuera de orden: aunque fue un hito para la época, no supone mayor relevancia en este caso.
  • Caché de CPU: con la aparición de chips de memoria rápidos pero costosos, los fabricantes de CPU modificaron la arquitectura de tal manera que pequeñas cantidades en diversas capas entre el CPU y la memoria RAM servían -y sirven- para almacenar datos y programas que son frecuentemente utilizados. Esto redunda en rapidez en detrimento de la seguridad.
  • Paralelización de los procesos: Tener dos o más procesadores y/o núcleos en un ordenador, potencia los renglones anteriores con apenas un relativo costo monetario de los ordenadores. A partir de la aparición modelo Pentium Pro en 1995 se hacen realidad todas estas condiciones y comienza el camino hacia el año 2018.

La monitorización de los CPU’s

Pandora FMS surge en 2004 y uno de sus primeras preocupaciones fue la carga de trabajo a que estaban expuestos los CPU’s, entre otras métricas que también son de importancia. La monitorización de la temperatura de los CPU’s siempre ha sido una métrica importante, especialmente en estos días donde cualquier página web se ve “infectada” por JavaScripts que minan criptomonedas sin nuestro consentimiento, llevando los CPU’s hasta casi un 100% de uso. Esto produce un recalentamiento que incluso apaga las computadoras por alarmas especificadas en las tarjetas madres (antes que esto suceda ya Pandora FMS nos habrá informado oportunamente y con antelación). Como vemos, la monitorización de los CPU’s es de armas tomar desde hace muchos años y a futuro de seguro que también.

La segunda década del siglo XXI

En 2016 fue descubierto otro problema con los procesadores Intel, esta vez en la búsqueda de números primos tipo Mersenne (el estudio de los números primos es importante para la criptografía y nuestra privacidad). Esto se pudo corroborar incluso con la ejecución de un legendario software diseñado para “estresar” servidores llamado Prime95: los ordenadores se “congelaban” al llegar al exponente 14 942 209. Afortunadamente Intel pudo distribuir una actualización del BIOS. Pero nada nos prepararía para enero de 2018 cuando Spectre y Meltdown se presentaron uno detrás de otro.

4 de enero de 2018

Este fue el día en que oficialmente la empresa Intel reconoció el fallo Spectre y Meltdown hallados por el Google Project Zero, así comenzó a ser divulgado por los medios de comunicación. En este vuestro blog publicamos un artículo que sirve como guía ante este tipo de crisis de las tecnologías de la información, modestia aparte, a los responsables de esa empresa les hubiera sido muy útil leerlo.

¿Cómo trabaja Meltdown?

Meltdown significa derretir y en este caso trata de tumbar las barreras que dividen a la memoria RAM y la memoria caché de los procesadores de una manera muy simplificada, diremos que su mecanismo de acción es el siguiente:

  • El programa ataca y solicita acceso a un área de la memoria que tiene prohibida por defecto (1ª consulta).
  • Inmediatamente hace una segunda solicitud condicionada al valor que espera obtener de la primera consulta.
  • Aquí entra en acción la ejecución especulativa que describimos al inicio del artículo: el CPU resuelve ambas consultas de manera inmediata.
  • De manera correcta el procesador detecta que ambas consultas no proceden (la 1ª consulta es una lectura de un valor fuera del área permitida para el programa y la 2ª consulta procesa según el valor leído de la 1ª) y niega ambos resultados.
  • A pesar de que ambos resultados están vetados al programa, las dos consultas quedan en espera en la memoria caché del procesador, pues las había calculado antes de verificar los privilegios. Como os dijimos, los CPU’s modernos son tan rápidos que aprovechan todo el tiempo disponible a fin de ganar rapidez. Los procesadores AMD no son afectados por Meltdown ya que verifican los privilegios antes de la ejecución especulativa. Los procesadores Itanium®(todos) y Atom®(anteriores a 2013) son los únicos de Intel® no afectados.
  • Ahora el programa atacante hace una tercera solicitud con el mismo esquema de la primera pero esta vez en una área de memoria válida donde sí tiene privilegio de lectura: si es devuelta inmediatamente quiere decir que las dos primeras consultas se ejecutaron y están en memoria caché. De manera redundante decimos: la tercera consulta es similar a la primera y el CPU “ya se la sabe” pues la tiene en memoria caché y ya está “resuelta” con anterioridad.
  • Atacando una y otra vez al programa atacante va realizando de manera metódica y sistemática un mapa de la memoria RAM contra la memoria caché: así sabiendo qué áreas de la memoria RAM pertenece a cada uno de los programas en ejecución (que le son siempre negadas) consigue una correlación con la memoria caché.
  • Una vez armado el mapa comenzará la etapa de recolección de datos: puede que se fije en un programa en particular y su “basurero” para comenzar a husmear y ver qué puede aprovechar.
  • El término “basurero” lo utilizamos para ilustrar las operaciones que van quedando en la memoria caché: cuando esos datos son entregado al programa que legalmente las solicitó el procesador simplemente las deja allí.

spectre y meltdown

¿Cómo trabaja Spectre?

Trabaja de una manera muy parecida pero en dos variantes, una más difícil de ejecutar que la otra. Se aprovecha de la predicción de saltos, un caso especial de la ejecución especulativa. Por ser tan elaboradas afectan a los procesadores AMD ya que se basan en romper el aislamiento entre las aplicaciones que siguen las buenas prácticas de programación, lo que de manera irónica las hace más vulnerables aún a Espectro.

spectre y meltdown

Spectre y Meltdown: su impacto en la industria

Imaginad un centro de datos con mil ordenadores a los cuales les restringimos estas características, tendríamos en realidad, 700 ordenadores con la misma carga de trabajo y para volver al anterior nivel de productividad deberíamos comprar 300 ordenadores más. Aunque quedan años hasta encontrar la solución en la propia arquitectura CPU, hay muchas ideas para poder salir de este atolladero.

¿Cómo protegernos?

Podemos protegernos del Meltdown actualizando el kernel de nuestros sistemas operativos, en el caso de Ubuntu se pueden actualizar sin necesidad de reiniciar, para otros sistemas operativos el reinicio es inevitable. Para un usuario normal esto no es un problema, pero para las grandes empresas reiniciar sus servidores, además de monitorizar la carga del trabajo después del “parchado“, puede significar un gran desembolse de tiempo y dinero.

Lamentablemente para Spectre, todavía queda tiempo hasta que consigamos una buena protección, no obstante cuando encontremos solución a este problema procederemos a escribir un artículo. ¡Muchas gracias por su atención, preguntas y comentarios son muy bienvenidos, animaos y escribidnos!


    Written by:



    5 comments
    1. Jimmy Olano

      Con la publicación de la nueva versión 9.5 de Debian (julio de 2018) se mitiga, al menos, la vulnerabilidad "Spectre" desde el propio kernel debidamente modificado.

      • maria

        Hola Jimmy, Muchas gracias por tu aportación. Un saludo,

    2. Jimmy Olano

      Hoy 14 de agosto de 2018, de manera oficial, la empresa Intel anuncia una nueva vulnerabilidad llamada "L1 Terminal Fault" (L1TF), basada en ejecución especulativa. Esta vez afecta particularmente a los hipervisores, software que corre ordenadores virtuales. En Youtube está publicado (en inglés) de manera muy didáctica: n_pa2AisRUs

      • maria

        ¡Gracias Jimmy y enhorabuena por tu artículo!

    3. […] los superordenadores, así como la gran amenaza, sin suficiente cobertura mediática, sobre las vulnerabilidades de Spectre y Meltdown. Ampliaremos ambos artículos en esta entrada. Con abundantes enlaces web os hablaremos sobre […]

    Leave a comment

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.