El rendimiento y la seguridad chocan una vez más en el ataque
HogarHogar > Noticias > El rendimiento y la seguridad chocan una vez más en el ataque "Collide+Power"

El rendimiento y la seguridad chocan una vez más en el ataque "Collide+Power"

Oct 05, 2023

¡Otra semana, otro BWAIN!

Como sabrás si escuchaste el podcast de la semana pasada (¡pista, pista!), BWAIN es la abreviatura de Bug With An Impresionante Name:

T3 Ep145: ¡Errores con nombres impresionantes!

Es un apodo que aplicamos cuando quienes descubren un nuevo ataque de ciberseguridad se entusiasman tanto con su descubrimiento que le dan un apodo amigable para las relaciones públicas, registran un nombre de dominio personalizado, le crean un sitio web personalizado y le diseñan un logotipo especial.

Esta vez, el nombre Collide+Power incluye un molesto carácter de puntuación, lo cual es una ventaja a la hora de nombrar errores, pero un inconveniente a la hora de registrar un dominio de Internet. (Irónicamente, los nombres de dominio pueden usar -, pero no +).

Por lo tanto, el nombre de dominio tuvo que abreviarse ligeramente a https://collidepower.com, pero el sitio web le dará una descripción general del problema de todos modos, incluso con el signo de suma restado.

Los investigadores detrás de este nuevo artículo son Andreas Kogler, Jonas Juffinger, Lukas Giner, Martin Schwarzl, Daniel Gruss y Stefan Mangard de la Universidad de Graz en Austria, y Lukas Gerlach y Michael Schwarz del Centro CISPA Helmholtz para la Seguridad de la Información en Alemania.

No vamos a intentar explicar en profundidad las diversas formas de este ataque, porque los detalles técnicos de cómo tomar las medidas y el modelo matemático utilizado para hacer inferencias a partir de esas medidas son complejos.

Pero el núcleo del problema, si me permiten el juego de palabras parcial, es que la memoria caché que está enterrada dentro de los chips de procesador modernos, pretende proporcionar un aumento de rendimiento invisible y automático...

…no siempre es tan invisible como podría pensar y, en ocasiones, puede filtrar parte o la totalidad de su contenido, incluso a procesos que no deberían poder verlo.

Como sugiere el nombre, la memoria caché (se pronuncia cash, como en dólares y centavos, no cachet, como en respeto y prestigio, si alguna vez te lo has preguntado), mantiene copias especiales de los valores de datos de la RAM convencional en ubicaciones ocultas dentro de la CPU. chip en sí.

Si la CPU realiza un seguimiento de las direcciones RAM (ubicaciones de memoria) que ha utilizado recientemente y puede adivinar cuáles es probable que vuelva a utilizar pronto, puede mantenerlas temporalmente en su memoria caché y, por lo tanto, acelerar considerablemente. su segundo acceso a esos valores, y el tercer acceso, el cuarto, y así sucesivamente.

Por ejemplo, si está buscando una serie de valores de datos en una tabla para convertir píxeles de una imagen de un formato de color a otro, es posible que la mayor parte del tiempo la tabla de búsqueda le indique que visite la dirección RAM 0x06ABCC00 (que podría ser donde se almacena el código especial para "píxel negro") o la dirección 0x3E00A040 (que podría ser la ubicación del código de "píxel transparente").

Al mantener automáticamente los valores de esas dos direcciones de memoria comúnmente necesarias en su caché, la CPU puede cortocircuitar (¡en sentido figurado, no literalmente!) intentos futuros de acceder a esas direcciones, de modo que no hay necesidad de enviar señales eléctricas fuera del procesador. a través de la placa base y en los chips de RAM reales para leer la copia maestra de los datos que están almacenados allí.

Por lo tanto, suele ser mucho más rápido acceder a los datos almacenados en caché que a los datos en la RAM de la placa base.

Sin embargo, en términos generales, no puede elegir qué registros de caché se utilizan para almacenar qué direcciones de RAM, y no puede elegir cuándo la CPU decide dejar de almacenar en caché su valor de "código de píxel transparente" y comenzar a almacenar en caché el de otro programa. En su lugar, “clave criptográfica súper secreta”.

De hecho, la caché puede contener una combinación liberal de valores, desde una combinación liberal de direcciones RAM, hasta una combinación liberal de diferentes cuentas de usuario y niveles de privilegios, todo al mismo tiempo.

Por esta razón, además de razones de eficiencia y rendimiento, incluso los programas de nivel de administrador no pueden echar un vistazo directamente a la lista de direcciones que se están almacenando en caché actualmente, o acceder a sus valores, para proteger los datos almacenados en caché contra el espionaje externo.

Como programador, usted todavía usa la instrucción del código de máquina "leer el código de píxel transparente de la dirección 0x3E00A040", y el sistema operativo aún decide si se supone que debe tener acceso a esos datos basándose en la dirección numérica 0x3E00A040, incluso si el En última instancia, los datos provienen directamente del caché en lugar de desde la verdadera dirección RAM 0x3E00A040.

Lo que los investigadores de Collide+Power descubrieron, muy simplificado, es que aunque no se pueden ver directamente los datos temporales en el almacenamiento caché y, por lo tanto, no se puede eludir la protección de la memoria que se aplicaría si se pasara por su dirección RAM oficial …

…puedes adivinar cuándo están a punto de escribirse valores de datos específicos en registros de almacenamiento de caché específicos.

Y cuando un número ya almacenado en caché es reemplazado por otro,Puedes hacer inferencias sobre ambos valores midiendo cuánta energía usa la CPU.en el proceso.

(Los procesadores modernos generalmente incluyen registros internos especiales que le brindan lecturas de uso de energía, por lo que no es necesario abrir la carcasa de la computadora y conectar un cable de sonda física en algún lugar de la placa base).

Curiosamente, el consumo de energía de la propia CPU, cuando sobrescribe un valor de caché con uno nuevo, depende de cuántos bits cambiaron entre los números.

Si simplificamos las cosas a bytes individuales, entonces sobrescribir el valor binario 0b00000000 con 0b11111111 (cambiando el decimal 0 al decimal 255) requiere invertir todos los bits del byte, lo que consumiría la mayor cantidad de energía.

Sobrescribir el carácter ASCII A (65 en decimal) con Z (90 en decimal) significa cambiar 0b01000001 a 0b01011010, donde se invierten cuatro posiciones de bits, consumiendo así una cantidad mediana de energía.

Y si los números son iguales, no es necesario invertir bits, lo que consumiría la menor cantidad de energía.

En general, si XOR los dos números juntos y cuenta el número de bits 1 en la respuesta, encontrará el número de lanzamientos, porque 0 XOR 0 = 0 y 1 XOR 1 = 0 (por lo que cero denota que no hay lanzamiento), mientras que 0 XOR 1 = 1 y 1 XOR 0 = 1 (que denota un giro).

En otras palabras, si puede acceder a un conjunto de direcciones elegidas por usted mismo de una manera que prepare un conjunto específico de registros de caché dentro de la CPU, y luego monitorear el consumo de energía con suficiente precisión cuando el código de otra persona asigna sus datos a esos cachés. ubicaciones en su lugar…

…entoncesPuedes hacer inferencias sobre cuántos bits se voltearon.entre el contenido de la caché anterior y el nuevo.

Por supuesto, puedes elegir los valores almacenados en las direcciones con las que preparaste los registros de caché, por lo que no solo sabes cuántos bits probablemente se voltearon, sino que también sabes cuáles eran los valores iniciales de esos bits antes de que se realizaran los volteos. lugar.

Esto le proporciona aún más datos estadísticos con los que predecir los nuevos valores probables en la caché, dado que sabe lo que había antes y el número probable de bits que ahora son diferentes.

Es posible que no pueda determinar exactamente qué datos estaba utilizando el proceso de su víctima, pero incluso si puede eliminar algunos patrones de bits, acaba de aprender algo que se supone que no debe saber.

Y si esos datos fueran, digamos, una clave de cifrado de algún tipo, es posible que se pueda convertir un ataque de fuerza bruta inviable en un ataque en el que se podría tener éxito.

Por ejemplo, si puede predecir 70 bits en una clave de cifrado de 128 bits, entonces, en lugar de probar todas las combinaciones de 128 bits, lo cual sería una tarea imposible, necesitaría probar 258 claves diferentes (128 – 70 = 58), lo que bien podría ser factible.

Afortunadamente, esta “vulnerabilidad” (ahora denominadaCVE-2023-20583) es poco probable que se utilice en su contra en el corto plazo.

Es más una cuestión teórica que los fabricantes de chips deben tener en cuenta, sobre la base de la perogrullada de que los ataques a la ciberseguridad “sólo son mejores y más rápidos”, que un agujero explotable que podría usarse hoy.

De hecho, los investigadores admiten, casi tímidamente, que “ustedesno necesitas preocuparte.”

Realmente te escribieron en cursiva y la imprecaciónno es para preocuparseen negrita:

En la conclusión del artículo, los investigadores señalan con pesar que algunos de sus mejores resultados en el mundo real con este ataque, en condiciones ideales de laboratorio, se filtraron sólo 5 bits por hora.

De hecho, para uno de sus escenarios de ataque, admitieron que encontraron “limitaciones prácticas que conducen a tasas de fuga de más de [un] año por bit”.

Sí, lo leíste correctamente: lo revisamos varias veces en el periódico solo para asegurarnos de que no lo estábamos imaginando.

Y eso, por supuesto, plantea la pregunta: "¿Cuánto tiempo hay que dejar en ejecución una colección de pruebas de transferencia de datos antes de poder medir de manera confiable velocidades de transmisión tan bajas?"

Según nuestros cálculos, un bit por año equivale a unos 125 bytes por milenio. A ese ritmo, descargar la exitosa película de tres horas Oppenheimer recientemente estrenada en calidad IMAX, que aparentemente ocupa alrededor de medio terabyte, llevaría aproximadamente 4 mil millones de años. Para poner en perspectiva este extraño hecho, la Tierra misma tiene sólo unos 4.540 millones de años, unos cientos de millones de meses más o menos.

La forma más sencilla de lidiar con CVE-2023-20538 en este momento es no hacer nada, dado que los propios investigadores le han aconsejado que no se preocupe.

Si siente la necesidad de hacer algo, tanto los procesadores Intel como AMD tienen formas de reducir intencionalmente la precisión de sus herramientas de medición de energía, agregando ruido aleatorio a las lecturas de energía.

Esto deja los promedios correctos, pero varía las lecturas individuales lo suficiente como para hacer que este ataque, que ya no es realmente factible, sea aún más difícil de realizar.

La mitigación de la medición de energía de Intel se conoce como filtrado del límite de potencia promedio en ejecución (RAPL); El de AMD se conoce como modo de determinismo de rendimiento.

Seguir@NakedSecurity en Twitterpara conocer las últimas noticias sobre seguridad informática.

Seguir@NakedSecurity en Instagram¡Para fotografías, gifs, vídeos y LOL exclusivos!

Puedes hacer inferencias sobre ambos valores midiendo cuánta energía usa la CPU.Puedes hacer inferencias sobre cuántos bits se voltearon.CVE-2023-20583no necesitas preocuparteno es para preocuparse@NakedSecurity en Twitter@NakedSecurity en Instagram