Dos de las vulnerabilidades más publicitadas en la década de 2010 estaban muy relacionadas entre sí. En lugar de ser vulnerabilidades de seguridad en el software, Spectre y Meltdown son vulnerabilidades en el diseño fundamental de las CPU, lo que hace que el problema sea más difícil de resolver. Los problemas en sí mismos son particularmente graves, lo que permite la divulgación de memoria desde otras aplicaciones y el sistema operativo.
Visión general
Las CPU utilizan diseños increíblemente avanzados para lograr el mayor rendimiento, incluidas técnicas que incluyen la ejecución especulativa y la predicción de ramas. La ejecución especulativa es donde la CPU comienza a ejecutar un proceso antes de saber si es necesario, en un intento de ahorrar tiempo cuando determina que es necesario. La predicción de rama es un subconjunto de ejecución especulativa que intenta predecir el resultado de un proceso y luego comienza a calcular el siguiente paso en función de ese valor predicho, lo que permite que la CPU ejecute una serie de instrucciones fuera de pedido.
La vulnerabilidad de Spectre proviene de la implementación de estas dos características. Permite que una aplicación infrinja las técnicas de aislamiento de memoria integradas en la mayoría del software moderno, lo que permite la divulgación de memoria, incluidos secretos como contraseñas y claves de cifrado. Uno de los problemas con Spectre es que se puede acceder a los datos desde aplicaciones que no tienen ninguna vulnerabilidad de seguridad, ya que solo se requiere un programa malicioso.
La vulnerabilidad Meltdown se basa en algunas técnicas de memoria, así como en el sistema de ejecución especulativa mencionado anteriormente. Utiliza una "condición de carrera" entre la ejecución del proceso y la verificación de privilegios y permite que un programa malicioso acceda a la memoria de otras aplicaciones y al sistema operativo.
Consejo: Una "condición de carrera" es un problema en el que se supone que una tarea depende de otra, pero no se aplica el orden de ejecución correcto. Esto puede resultar en que el "segundo" proceso se ejecute primero y use memoria no inicializada que debería haber contenido el resultado del "primer" proceso, filtrando el contenido anterior de esa memoria. En este caso específico, el proceso no debe ejecutarse hasta que una verificación de permisos haya verificado que está permitido, pero la verificación de permisos puede ocurrir en segundo lugar debido a optimizaciones de rendimiento.
Efectos
A mediados de 2017, varios equipos descubrieron de forma independiente e informaron sobre Meltdown y Spectre de forma privada a los fabricantes de CPU que desarrollaron parches. Debido a los parches que apuntan a la optimización del rendimiento, terminaron reduciendo el rendimiento de las CPU hasta 30% en el peor de los casos, con una disminución del rendimiento del 2 al 14% que es más representativa de las personas experiencias.
Las vulnerabilidades afectaron a muchas CPU x86, CPU IBM POWER y algunas CPU basadas en ARM. Meltdown afecta el hardware que normalmente se encuentra en las computadoras personales, así como en los servidores en la nube. Spectre afecta a computadoras personales, servidores en la nube y dispositivos móviles. Todas las CPU de Intel desde 1995 hasta mediados de 2018 fueron vulnerables a los problemas (con la exclusión de las líneas Itanium y Atom antes de 2013). Las CPU de AMD no se vieron afectadas por Meltdown, pero eran vulnerables a Spectre.
Los parches de mitigación de software se desarrollaron y lanzaron a través de proveedores de sistemas operativos que resuelven la mayoría de los problemas. Desde mediados de 2018, Intel ha actualizado el diseño de su CPU para incluir mitigaciones de hardware para los problemas.
Ambos problemas pueden explotarse a través de páginas web maliciosas con JavaScript diseñado, por lo que es realmente importante asegúrese de que los parches de seguridad estén instalados en todos los sistemas, incluso si la pérdida de rendimiento será grave. Lamentablemente, los problemas no se pueden solucionar con un solo parche, ya que son problemas extremadamente complejos con integración en el hardware, los parches de seguridad continuarán implementándose con el tiempo a medida que se introduzcan nuevas variantes descubierto.