AMD ha confirmado la potencial vulnerabilidad de las CPU AMD Zen 3 al ataque Spectre-STL

AMD ha publicado un informe que analiza la seguridad de la tecnología de optimización PSF (Predictive Store Forwarding) implementada en los procesadores de la serie Zen 3. El estudio confirmó teóricamente la aplicabilidad del método de ataque Spectre-STL (Spectre-v4), identificado en mayo de 2018, para tecnología PSF, pero en la práctica aún no se ha encontrado ninguna plantilla de código capaz de provocar un ataque y el peligro general se considera insignificante.

Recordemos que el ataque Spectre-v4 (Speculative Store Bypass) se basa en restaurar datos que se han depositado en la memoria caché del procesador después de descartar el resultado de la ejecución especulativa de operaciones al procesar operaciones alternas de escritura y lectura mediante direccionamiento indirecto. Cuando una operación de lectura sigue a una operación de escritura (por ejemplo, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), es posible que el desplazamiento de la dirección de lectura ya se conozca debido a que se están realizando operaciones similares (las operaciones de lectura son realiza con mucha más frecuencia y las lecturas se pueden realizar desde la memoria caché) y el procesador puede realizar lecturas especulativas antes de escribir sin esperar a que se calcule el desplazamiento de direccionamiento indirecto de la escritura.

Esta característica permite que una instrucción de lectura acceda a un valor antiguo en alguna dirección mientras la operación de almacenamiento aún no se ha completado. Si hay un error de predicción, la operación especulativa fallida se descartará, pero los rastros de su ejecución permanecerán en la memoria caché del procesador y podrán recuperarse mediante uno de los métodos para determinar el contenido de la memoria caché basándose en un análisis de los cambios en el acceso. tiempo para datos almacenados en caché y no almacenados en caché.

Agregado a los procesadores AMD Zen 3, PSF optimiza STLF (Store-To-Load-Forwarding), que realiza operaciones de lectura de forma especulativa al predecir la relación entre las operaciones de lectura y escritura. Cuando se utiliza STLF clásico, el procesador realiza una operación de "carga" en los datos reenviados directamente desde el comando "almacenar" anterior, sin esperar a que el resultado se escriba realmente en la memoria, pero asegurándose de que las direcciones utilizadas en la "carga" y los comandos "almacenar" coinciden. La optimización PSF hace que la verificación de direcciones sea especulativa y realiza una operación de "carga" antes de que se haya calculado la información de la dirección si previamente se ha ejecutado un par de almacenamiento/carga que manipula una sola dirección. Si la predicción falla, el estado se revierte, pero los datos permanecen en la memoria caché.

Un ataque a PSF solo es posible dentro del marco de un nivel de privilegios, cubre solo el contexto del proceso actual y está bloqueado mediante métodos de aislamiento del espacio de direcciones o mecanismos de espacio aislado de hardware. En este caso, los métodos de espacio aislado del software en los procesos pueden verse potencialmente afectados por el problema. El ataque representa una amenaza para sistemas como navegadores, máquinas virtuales de ejecución de código y JIT que ejecutan código de terceros dentro de un solo proceso (el ataque podría permitir que código de espacio aislado que no sea de confianza obtenga acceso a otros datos de proceso).

AMD ha proporcionado varios métodos para deshabilitar total o selectivamente PSF, pero dado el riesgo insignificante para la mayoría de las aplicaciones, ha recomendado que esta optimización no se deshabilite de forma predeterminada. Para proteger selectivamente los procesos que aíslan a quienes ejecutan código no confiable, se propone deshabilitar PSF configurando los bits MSR “SSBD” y “PSFD”, incluso para subprocesos individuales. Se han preparado parches para el kernel de Linux con la implementación de las opciones de línea de comando “psfd” y “nopsfd” que controlan cómo se activa y desactiva PSF.

Fuente: opennet.ru

Añadir un comentario