¿Qué es Hertzbleed y en qué se caracteriza?

Uno de los estudios de seguridad de la información más complejos de los últimos tiempos, pero fáciles de entender.

En junio, los investigadores de tres universidades estadounidenses publicaron un artículo que describe un ataque real que aprovecha que los cambios de frecuencia de la CPU dependen de la carga (un comportamiento estándar de las CPU modernas). La frecuencia de la CPU se mide en hercios, de ahí viene el nombre de Hertzbleed que sugiere que un cambio en esta frecuencia conduce a la fuga de datos.

Este método se puede clasificar como un ataque de hardware, ya que explota vulnerabilidades u otros puntos débiles específicos en el hardware. Hay muchos ataques de este tipo, pero casi todos requieren acceso directo al ordenador de destino o solo a un chip específico, ¡pero Hertzbleed puede operar de forma remota!

El estudio es muy interesante y, a pesar de su complejidad, se puede resumir en términos más sencillos. Pero, para comprender al menos de forma básica sus puntos clave, se requiere un poco de conocimiento previo. Así que decidimos hacer ambas cosas: publicar una explicación simple de Hertzbleed y otra un poco más compleja (aunque también sin hacer uso de elaborados gráficos o cálculos ininteligibles).

Como ya es habitual, Hertzbleed tiene su propia web y logotipo. El logotipo captura la esencia básica de la vulnerabilidad: la alteración de la frecuencia de la CPU provoca filtraciones.

Como ya es habitual, Hertzbleed tiene su propia web y logotipo. El logotipo captura la esencia básica de la vulnerabilidad: la alteración de la frecuencia de la CPU provoca filtraciones. Fuente

La explicación sencilla

Para ahorrar energía, las CPU modernas no mantienen la misma frecuencia en todo momento. En cambio, la frecuencia (así como el voltaje de la CPU) se ajusta automáticamente según su carga. Cuando hay pocas tareas, la frecuencia puede ser muy baja, por ejemplo, de 900 MHz en lugar de los 3,2 GHz nominales. Si hay muchas tareas, la frecuencia de uno o todos los núcleos de la CPU se puede elevar por encima de la frecuencia estándar. En la práctica, la carga (el número y la complejidad de las tareas) no es el único criterio para cambiar la frecuencia, esta puede ser menor, por ejemplo, si la CPU se sobrecalienta.

Los investigadores lograron aprovechar esta funcionalidad nativa para medir el estado de la CPU en el momento de ejecutar un programa de cifrado de datos y conseguir robar información sensible. Encontraron una característica de un algoritmo de cifrado moderno que “obliga” a la CPU a aumentar la frecuencia al procesar ciertos datos. A medida que aumenta la frecuencia, los datos se procesan más rápidamente y el ordenador atacado responde a las solicitudes con mayor rapidez. Al medir el tiempo de respuesta, los investigadores pudieron reconstruir la clave secreta de cifrado. Con esta clave en su poder, en teoría pueden interceptar y descifrar los datos intercambiados entre el sistema objeto del ataque, por ejemplo, y otros ordenadores en una red privada virtual. Y todo ello sin ninguna posibilidad de registrar el “robo” de la clave.

Hertzbleed desarrolla la idea de los ataques de hardware a través de los llamados canales laterales. Además, también introduce de forma teórica la posibilidad de robar datos en remoto, enviando solicitudes a las víctimas potenciales a través de la red. De momento esto sigue siendo un ejercicio puramente teórico que se encuentra en la búsqueda de vulnerabilidades complejas en las CPU modernas. Sin embargo, es muy posible que en el futuro estos ataques sean “simplificados”.

Una explicación algo más compleja

Los ataques de canal lateral se realizan observando indirectamente el funcionamiento de un solo chip o de un ordenador completo. El método clásico de ataque de canal lateral implica observar variaciones en la corriente eléctrica consumida por el chip. Si el chip está ocupado cifrando datos mediante una clave secreta, por ejemplo, los cambios en el consumo de energía en algunos casos pueden usarse para reconstruir la clave.

Los canales laterales pueden basarse ​​tanto en software como en hardware. El conocido estudio de Spectre utiliza un canal lateral de este tipo directamente en la CPU, explotando funciones de ejecución especulativa para robar información confidencial. Además, a veces no es necesario conectar un voltímetro en el ordenador para monitorizar el consumo de energía de la CPU, ya que suele tener uno incorporado. Ya se ha desarrollado un ataque relacionado con Hertzbleed usando un sistema para monitorizar el consumo de energía promedio de los procesadores Intel.

Ahora echemos un vistazo al ajuste dinámico de la frecuencia de la CPU. Esto es posible gracias a la técnica de escalado dinámico de voltaje y frecuencia (DVFS). De hecho, junto con la frecuencia, el voltaje de la CPU también varía para garantizar condiciones óptimas de funcionamiento (un bajo consumo de energía con poca carga y un funcionamiento estable a máxima capacidad). Los investigadores describen con cierto detalle cómo llevaron a cabo numerosos experimentos DVFS en procesadores Intel (una tecnología que la propia Intel llama Turbo Boost). Cargaron la CPU con una carga insignificante (cálculos aritméticos básicos) y observaron cómo cambiaba la frecuencia. Surgieron varios patrones: simplificándolo mucho, con un conjunto de datos de cálculo, la frecuencia de la CPU tendía a aumentar, pero no con otro. Además, una mayor frecuencia supuso cálculos más rápidos y, por lo tanto, un resultado más rápido.

Veamos un tercer término técnico que también es relevante en todo esto: la programación en tiempo constante. Esto es importante cuando se trata de implementar en un programa un algoritmo de cifrado. Supongamos que tenemos un programa que recibe un mensaje determinado y genera el mismo mensaje, pero cifrado. Podemos introducir datos, pero no conocemos la clave secreta de cifrado, que, mientras, estamos tratando de establecer observando el tiempo de ejecución, ya que el tiempo de ejecución de la función depende de los datos de entrada. Esto podría ser como intentar abrir una caja fuerte cerrada con un código digital secreto que se comporta de manera ligeramente diferente si las secuencias de números que se han introducido son casi correctas, dándonos pistas de “calientes” y “frías”. La mayoría de los programas que implementan algoritmos de cifrado cuentan con un mecanismo de protección para evitar intentos de determinar la clave de esta forma, lo que es el mismo principio de la programación en tiempo constante.

El resultado más importante del estudio de Hertzbleed es que el ajuste dinámico de la frecuencia de la CPU rompe el principio de la programación en tiempo constante, es decir, la no variación en el tiempo de cifrado. Los autores mostraron cómo aprovechar este hecho cogiendo un sistema con un software de cifrado de datos real e introduciendo una secuencia de caracteres que el programa trató de descifrar. Los mensajes se eligieron para crear condiciones que permitieran a un atacante reconstruir la clave de cifrado. Además, la clave se extrae a través de un canal lateral, es decir, la fuga de datos se produce debido a un cambio en la frecuencia de la CPU y, por lo tanto, en el tiempo de ejecución del programa y el tiempo de respuesta a la solicitud del atacante.

Faltan consecuencias

En nuestra “explicación algo más compleja” de Hertzbleed, hemos cubierto aproximadamente… un 0,05 % de la información real presentada por los investigadores. Hay innumerables matices que también son relevantes para comprender cómo funciona. En particular, los investigadores utilizaron una característica del algoritmo de encapsulación de claves SIKE para crear las condiciones en las que fueran posibles las fugas de datos mediante el tiempo de respuesta o el cambio de frecuencia. Esto es similar al ataque Spectre mencionado anteriormente, que requiere crear condiciones especiales en el software atacado para permitir el robo de datos importantes. Estrictamente hablando, según los resultados del estudio, es imposible decir de manera inequívoca dónde se encuentra la vulnerabilidad, si en la CPU o en el programa.

Y debemos mencionar un aspecto evidente de la implementación: aunque los investigadores demostraron un ataque real, práctico (no teórico), lo llevaron a cabo en condiciones controladas. La variación en el tiempo de respuesta según los inputs era siempre constante. Pero ¿qué pasa si la CPU está ejecutando otras tareas simultáneas que afectan también al tiempo de respuesta y hacen que los datos sean más escandalosos? Por último, incluso en circunstancias tan idóneas, la reconstrucción de la clave de cifrado (en dos experimentos diferentes) tardó 36 y 89 horas. Durante este tiempo, se enviaron miles de solicitudes por segundo al programa de cifrado, siendo la única forma de garantizar que todas las funciones necesarias para el funcionamiento del software y el hardware estuvieran alineadas para producir la fuga de datos. ¡Eso es muchísimo tiempo!

Todo ello hizo que la reacción al estudio fuera ambigua. Por un lado, a las vulnerabilidades se les asignaron los identificadores habituales: CVE-2022-23823 para Intel y CVE-2022-24436 para AMD. Parecería que el problema estaba finalmente en las CPU. Pero Intel y AMD han informado de que no tienen planes de lanzar ninguna actualización para los sistemas afectados (para Intel, las CPU de 8ª a 11ª generación). De hecho, el cambio en el algoritmo SIKE hizo imposible el ataque demostrado. Microsoft y Cloudflare, que utilizan SIKE como uno de los elementos de sus sistemas de cifrado, actualizaron su propio software.

Sin embargo, este estudio tiene una gran importancia. Como ocurrió con Spectre en 2018, este no será el último de esta nueva clase de ataques. Si se puede mostrar un ejemplo de fuga de datos a través del ajuste dinámico de la frecuencia de la CPU, seguramente vendrán otros. También es un importante campo de trabajo para los criptógrafos. SIKE es un algoritmo bastante reciente, candidato al título de “solución de cifrado poscuántica”. De hecho, se analizó su robustez contra cualquier ataque de canal lateral y demostró ser bastante resistente. Pero el estudio de Hertzbleed muestra que han aparecido nuevas opciones.

En general, como suele suceder con este tipo de estudios, este ataque fue “descubierto” pero realmente no pudo implementarse de forma completa y exitosa. Los desarrolladores de CPU y de programas que son particularmente sensibles a los hackeos sacarán sus propias conclusiones y realizarán cambios antes de que sea posible efectuar un robo. Pero existe una pequeña posibilidad de que la próxima vez estos u otros investigadores encuentren algo que permita a los atacantes, por ejemplo, interceptar el tráfico de red cifrado o descifrar el cifrado permaneciendo en el anonimato. Con un poco de imaginación es posible llevar el esquema representado en este estudio a tales proporciones. Pero esto está por demostrar, y el estudio de Hertzbleed (y nuestro intento por describirlo de forma sencilla) muestra que no se trata de una tarea fácil. Para las vulnerabilidades de la clase Spectre, no se ha demostrado este avance en un periodo de más de cuatro años. Aquí, también, lo más probable es que las cosas sigan igual: dentro de un año más o menos, se publicará otro informe con ligeros avances y que aclare el anterior. Y esa es una conclusión positiva ya que realmente ¡ya tenemos suficientes problemas con la seguridad de la información!

Consejos