En primer lugar dejemos claro que se trata del fallo de componentes tecnológicos más grande en la historia, un problema de diseño que afecta a prácticamente cualquier computadora actual, incluyendo dispositivos móviles.

Los problemas se originan por 2 características incluidas en los procesadores desde 1995, nos referimos a la ejecución fuera de orden y la ejecución especulativa.

Estás 2 características forman parte de un mecanismo de los procesadores para reordenar las secuencias de instrucciones que deben llevar a cabo para aumentar la velocidad de ejecución de los programas. Sin embargo, este mecanismo no verifica los derechos de accesos a la memoria donde almacena los resultados de cada ejecución, lo que permite que cualquier aplicación pueda acceder a la memoria de otra.

Meltdown y la ejecución fuera de orden

Está técnica se utiliza desde la década de los 60 pero fue con la salida del Intel Pentium Pro en 1995 cuando se popularizó y se continua utilizando hasta nuestros días.

Partiendo del principio de funcionamiento de un procesador. Una vez cargados datos en los registros de memoria estos son procesados por una operación aritmética o lógica y obtenemos un resultado que luego es devuelto a la memoria del sistema.

Pero los procesadores tienen pausas que son aprovechadas para ejecutar otros procesos saltándose momentáneamente el orden en el que fueron solicitados, esto para dar la sensación de ejecución simultánea o multitarea.

Si bien cada vez que se ejecuta una instrucción se comprueba si se tiene el permiso para acceder a areas de memoria reservadas para el kernel del sistema, antes de esta comprobación es posible, por este fallo, ejecutar otro proceso en desorden lo que es aprovechado para leer parte de la memoria reservada por el kernel antes de que la cache donde se almacena sea borrada.

En pocas palabras, de nada sirve la comprobación de acceso a la memoria por lo que es posible leerla o incluso manipularla lo que deja sumamente vulnerable a sistema.

Spectre y la ejecución especulativa

La ejecución especulativa es una técnica utilizada por los procesadores desde el año 1995 y que consiste en aprovechar las pausas de la CPU en la ejecución de las instrucciones que no se requieren pero que podríamos necesitar en base al flujo de instrucciones recibidas.

Es decir, si se esta llevando a cabo una operación como un IF que tiene 2 posibles caminos en su ejecución en base a una condición lógica, un procesador moderno procesa las 2 posibles salidas aprovechando las pausas en los procesos que tiene la CPU.

De esta forma se acelera el tiempo de respuesta de los programas ya que se tendrán de antemano en la cache los resultados de ambas posibilidades. Una vez concluida la ejecución del IF se eliminan de la memoria cache los resultados.

El problema radica en que con Spectre es posible trucar la ejecución especulativa para colocar instrucciones en la CPU para cualquier programa, es decir, un malware podría inyectar instrucciones que manipulen la memoria de un navegador web sin haber sido originadas por dicho navegador.

Mientras Meltdown permite a cualquier aplicación leer la memoria del kernel de la CPU, Spectre es mucho más peligroso porque permite leer la información de cualquier aplicación que se ejecute en el sistema y con ello acceder a nuestra información personal como datos bancarios y contraseñas de los servicios a los que nos conectamos.

Para poder aprovechar la vulnerabilidad Spectre existen 2 caminos: Tener acceso físico al equipo en cuestión y ejecutar los comandos directos en la consola o bien a través de un javascript que se ejecuta en un navegador web y por lo tanto tener acceso a la información sensible de este como contraseñas, etc.

Soluciones

Para prevenir los problemas derivados de aprovechar la falla de Meltdown es necesario instalar parches de seguridad que los diferentes desarrolladores de sistemas operativos han puesto ya ha disposición del público en forma de actualizaciones.

En el caso de Spectre tanto Microsoft como Apple han desarrollado parches para sus navegadores Edge y Safari respectivamente que se incluyen en las actualizaciones de sus sistemas operativos.

Nuestras recomendaciones para evitar estos y otros problemas de seguridad en sus equipos son:

  1. Instalar las actualizaciones de los sistemas operativos de las computadoras o dispositivos móviles que utilicen de forma periódica, preferentemente cada semana.
  2. No descargar programas de fuentes desconocidas o poco confiables.
  3. No conectarse a redes inalámbricas públicas o visitar sitios web poco confiables.
  4. Mantener actualizado su software de seguridad y/o antivirus.
  5. Mantener actualizado el navegador web que utilicen en caso de que se trate de uno diferente al incluido con su sistema.