AMD confirma que Zen 3 es susceptible al ataque Spectre-STL
Hace poco los voceros de AMD dieron a conocer mediante una publicación un informe en el que se da a conocer información sobre el análisis realizado de 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) a la tecnología PSF, identificado en Mayo de 2018, pero en la práctica, aún no se han encontrado plantillas de código capaces de provocar un ataque, y el peligro general se considera insignificante.
The Record citó al especialista de la Universidad de Tecnología de Graz, Daniel Gruss quien descubrió que AMD PSF puede ser vulnerable a una variedad de ataques de canal lateral, que a lo largo de los años se han desarrollado mucho.
Recordemos que el ataque Spectre-v4 (Speculative Store Bypass) se basa en restaurar datos que se han asentado en la caché del procesador luego de descartar el resultado de la ejecución especulativa de operaciones al procesar operaciones alternas de escritura y lectura usando 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 operaciones similares (las operaciones de lectura se realizan mucho más a menudo y la lectura se puede hacer desde la caché) y el procesador puede leer especulativamente antes de escribir, sin esperar a que se calcule el desplazamiento de la dirección indirecta de escritura.
Esta característica permite que la instrucción de lectura acceda al valor anterior en alguna dirección mientras la operación de guardado aún está pendiente. En el caso de un error de predicción, se descartará una operación especulativa fallida, pero los rastros de su ejecución permanecerán en la caché del procesador y se pueden recuperar mediante uno de los métodos para determinar el contenido de la caché basado en el análisis de cambios en el tiempo de acceso a los datos almacenados en caché y no almacenados en caché.
Añadida a los procesadores AMD Zen 3, la tecnología PSF optimiza el método Store-To-Load-Forwarding (STLF), que realiza operaciones de lectura de forma especulativa basándose en la predicción de la relación entre las operaciones de lectura y escritura. Con el STLF clásico, el procesador realiza una operación de «carga» en los datos directamente redirigidos desde la instrucción «almacenar» anterior, sin esperar la escritura real del resultado en la memoria, pero asegurándose de que las direcciones utilizadas en la «carga» y Las instrucciones de «tienda» coinciden.
La optimización de PSF hace que la verificación de direcciones sea especulativa y realiza una operación de «carga» antes de completar el cálculo de la información de la dirección, si se ejecutó previamente un par de almacenamiento / carga manipulando una dirección. Si el pronóstico falla, el estado se revierte, pero los datos permanecen en la caché.
Un ataque a PSF solo es factible dentro del marco de privilegios del mismo nivel, cubre solo el contexto del proceso actual y está bloqueado por métodos de aislamiento del espacio de direcciones o mecanismos de caja de arena de hardware. Sin embargo, las técnicas de aislamiento de la zona de pruebas de software en los procesos pueden verse potencialmente afectadas 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 del mismo proceso (como resultado del ataque, el código de espacio aislado que no es de confianza puede obtener acceso a otros datos del proceso).
AMD ha proporcionado varios métodos para deshabilitar PSF completa o selectivamente, pero dado el riesgo insignificante para la mayoría de las aplicaciones, recomendó no deshabilitar esta optimización de forma predeterminada.
Para la protección selectiva de procesos que ejecutan código no confiable de forma aislada, se propone inhabilitar PSF estableciendo los bits MSR «SSBD» y «PSFD», incluso para subprocesos individuales. Para el kernel de Linux, se han preparado parches con la implementación de las opciones de línea de comandos «psfd» y «nopsfd» que controlan el encendido y apagado de PSF.
Para quienes esten interesados en poder conocer el informe, pueden consultar el siguiente enlace.