En el Chaos Communications Congress 35, casi un año después de la primera publicación sobre las vulnerabilidades del hardware del CPU conocidas como Meltdown y Spectre, un grupo de investigadores de la Universidad Tecnológica de Graz, Austria, habló del estado actual de las vulnerabilidades de hardware del CPU. Spoiler: El año pasado sacó alguna más a la luz.
La esencia de Meltdown y Spectre
Primero, vamos a recordar qué son Meltdown y Spectre y en qué se diferencia.
La vulnerabilidad Meltdown surgió a raíz de que los CPU actuales pudieran ejecutar instrucciones fuera de orden. Se trata de una función muy cómoda que acelera el procesamiento de código, pero en algunos casos el CPU puede procesar código que es propenso a error, un código que no debería ejecutarse. Eso es, primero el CPU ejecuta el código y solo entonces se hace evidente que no se puede completar la acción, este tipo de situaciones suceden precisamente porque las instrucciones se han ejecutado fuera de orden.
Evidentemente, los resultados de estas operaciones no llegarán a ninguna parte, aunque dejarán rastros a nivel de microarquitectura, en la memoria caché del CPU, desde donde se podrían extraer. Como resultado, el caché se puede utilizar para recopilar datos que de otra forma serían inaccesibles: por ejemplo, una contraseña. Te contamos cómo funciona: un programa puede solicitar acceso a datos almacenados; el sistema, lógicamente, negará este acceso por falta de autorización. Pero, debido a la ejecución de operaciones fuera de orden, la contraseña acabará en el caché, desde donde es muy fácil de recopilar. En resumen, Meltdown podría tener lugar al intentar ejecutar una acción injustificada.
La vulnerabilidad Spectre es similar a Meltdown, pero, aunque también está relacionada con la aceleración informática de la CPU, surge de la función de predicción de saltos de los CPU. Básicamente, un CPU es capaz de predecir estos saltos con cierto nivel de precisión, ya que la acción B suele ir precedida de la A. Por tanto, puede ejecutar la acción B antes de que se hayan esclarecido los resultados de A. Si la predicción ha sido correcta y la acción B sigue a la A, todo bien, y, si los resultados de A indican que el CPU debería de haber completado la acción con C, en lugar de B, el CPU abandonará el salto B y cambiará a otro en el que tenga que completar la acción C.
Como el predictor de saltos es inteligente, la mayoría de las veces recuerda el patrón de la acción, por lo que mejora el rendimiento del CPU (si B suele seguir a A, el CPU dará por hecho que en determinada situación tendrá que hacer B después de A). Pero se puede equivocar (a veces llega C en vez de B, aunque el predictor de saltos recuerda perfectamente que normalmente A va seguida de B).
Si acostumbras al sistema a que cierto salto es el correcto y siempre se ejecuta y luego cambias un parámetro para que se equivoque, el CPU lo ejecutará primero y luego lo revocará, después de descubrir que debería de haber ejecutado otro. Pero, al igual que con Meltdown, el resultado de la acción puede permanecer, por ejemplo, en el caché, desde donde se podría volver a extraer.
Las consecuencias son casi las mismas: Spectre abre una trampilla para el acceso no autorizado de datos. Este acceso podría tener lugar solo en el caso de que la predicción de saltos saliera mal y, según la teoría de la probabilidad, pasaré tarde o temprano.
Un año después: surgen nuevas variedades de Spectre y Meltdown
Después del descubrimiento de las primeras vulnerabilidades de Meltdown y Spectre, los investigadores comenzaron a indagar en el asunto y pronto descubrieron problemas similares que solo se diferenciaban en detalles insignificantes. Descubrieron que los desarrolladores del CPU también utilizaban otras optimizaciones resultantes de vulnerabilidades de hardware similares a Meltdown o Spectre. El equipo de la Universidad de Graz menciona 14 vulnerabilidades similares a Meltdown y 13 a Spectre, un total de 27 vulnerabilidades en el hardware del CPU frente a los dos de principios del 2018.
Además, incluso aunque AMD había declarado que sus CPU no estaban expuestas a vulnerabilidades del tipo Meltdown, los investigadores descubrieron una variación de esta (llamada Meltdown-BR) que se ejecutaba en los CPU de AMD. Así que, en este punto, los CPU de tres de los proveedores más importantes (AMD, ARM e Intel) son susceptibles a Meltdown y Spectre. Bueno, al menos a algunas de las variaciones de estas dos familias.
Afortunadamente, una buena parte de todas estas versiones de vulnerabilidades no funcionan con ninguno de estos proveedores (ARM, AMD o Intel) o, al menos, los evaluadores fueron incapaces de ejecutarlas. Sin embargo, la mayoría de ellas se ejecutan en algún dispositivo.
Con el objetivo de poner fin a estas vulnerabilidades, en enero del 2018, las empresas comenzaron a lanzar parches para microcódigos de CPU, sistemas operativos y programas individuales. Por desgracia, Spectre y Meltdown son vulnerabilidades de hardware, es decir, existen a nivel de hardware, por lo que es imposible remediarlas por completo con parches de software.
Por consiguiente, se implementó uno de los parches en el núcleo del sistema operativo de Linux, pero ralentizaba mucho el sistema, por lo que un tiempo después se eliminó del código.
Spectre es conflictivo porque tiene como objetivo diferentes componentes de microarquitectura, por lo que se ha tenido que diseñar un parche aparte. Y cada uno de los parches requerirá que ciertas funciones estén desactivadas o que se realicen acciones adicionales, lo que disminuirá el nivel de rendimiento.
De hecho, los parches afectan tanto al rendimiento en muchos casos que un sistema parcheado funciona más lento que uno en el que los componentes vulnerables del CPU estén desactivados.
El futuro de Spectre y Meltdown
En octubre del 2018, Intel anunció que sus nuevos CPU (es decir, las que surgirán a partir del 2019) incluirán protección de hardware contra Spectre y Meltdown. Pero solamente se refiere a las dos versiones “básicas” y, como ya hemos mencionado, hay muchas más. Por su parte, AMD tiene pensado parchear una de las variaciones de Spectre en su nueva generación de procesadores de arquitectura Zen 2 que saldrán en el 2019. Por último, ARM promete actualizaciones de hardware y afirma que “todos sus CPU futuras serán resistentes a los ataques similares a Spectre”.
Sí, son buenas noticias para todos aquellos que quieran adquirir nuevos dispositivos en el futuro. Y aquellos que hayamos adquirido un ordenador, smartphone u otro dispositivo con CPU de Intel, AMD o ARM en el 2018 o antes tendremos que instalar parches para casi todo, por lo que el rendimiento se verá reducido. Así que lo más probable es que algunos usuarios no consigan el objetivo deseado.
Los fabricantes de CPU han ignorado las vulnerabilidades a nivel de hardware durante mucho tiempo, optimizando únicamente sus CPU por el bien del rendimiento. Pero todas estas optimizaciones tienen un coste: efectivamente, algunas cosas han mejorado, pero otras han acabado con más problemas. Ahora será todo un desafío deshacerse de estas vulnerabilidades. Aunque, cabe recalcar que no es tan fácil explotarlas y eso es un motivo de esperanza, al menos hasta que salgan las CPU de nueva generación.