Vulnerabilidad de CPU de ejecución transitoria - Transient execution CPU vulnerability
Las vulnerabilidades de CPU de ejecución transitoria son vulnerabilidades en un sistema informático en el que se explota una optimización de ejecución especulativa implementada en un microprocesador para filtrar datos secretos a una parte no autorizada. El ejemplo clásico es Spectre que dio nombre a este tipo de ataque de canal lateral , pero desde enero de 2018 se han identificado muchas vulnerabilidades diferentes.
Visión general
Las computadoras modernas son dispositivos altamente paralelos, compuestos por componentes con características de desempeño muy diferentes. Si una operación (como una bifurcación) aún no se puede realizar porque alguna operación lenta anterior (como una lectura de memoria) aún no se ha completado, un microprocesador puede intentar predecir el resultado de la operación anterior y ejecutar la operación posterior de forma especulativa , actuando como si la predicción fuera correcta. La predicción puede basarse en el comportamiento reciente del sistema. Cuando se completa la operación anterior y más lenta, el microprocesador determina si la predicción fue correcta o incorrecta. Si fue correcto, la ejecución continúa sin interrupciones; si era incorrecta, el microprocesador revierte las operaciones ejecutadas especulativamente y repite la instrucción original con el resultado real de la operación lenta. Específicamente, una instrucción transitoria se refiere a una instrucción procesada por error por el procesador (incriminando el predictor de rama en el caso de Spectre ) que puede afectar el estado de la microarquitectura del procesador, dejando el estado de la arquitectura sin rastro de su ejecución.
En términos del comportamiento directamente visible de la computadora, es como si el código ejecutado especulativamente "nunca hubiera sucedido". Sin embargo, esta ejecución especulativa puede afectar el estado de ciertos componentes del microprocesador, como la memoria caché , y este efecto puede descubrirse mediante la supervisión cuidadosa de la sincronización de las operaciones posteriores.
Si un atacante puede hacer que el código ejecutado especulativamente (que puede ser escrito directamente por el atacante, o puede ser un dispositivo adecuado que haya encontrado en el sistema de destino) opere con datos secretos a los que no está autorizado a acceder, y tiene una diferente efecto sobre la caché para diferentes valores de los datos secretos, es posible que puedan descubrir el valor de los datos secretos.
A partir de 2017, se identificaron múltiples ejemplos de tales vulnerabilidades, y la publicación comenzó a principios de 2018.
En marzo de 2021, los investigadores de seguridad de AMD descubrieron que el algoritmo Predictive Store Forwarding en las CPU Zen 3 podría ser utilizado por aplicaciones maliciosas para acceder a datos a los que no deberían acceder. Según Phoronix, la desactivación de la función tiene poco impacto.
En junio de 2021, se descubrieron dos nuevas vulnerabilidades, Speculative Code Store Bypass (SCSB, CVE-2021-0086 ) y Floating Point Value Injection (FPVI, CVE-2021-0089 ), que afectan a todas las CPU x86-64 modernas de Intel y AMD. . Para mitigarlos, el software debe reescribirse y recompilarse. Las CPU ARM no se ven afectadas por SCSB, pero algunas arquitecturas ARM se ven afectadas por FPVI.
En agosto de 2021, no se reveló una vulnerabilidad llamada "Ejecución transitoria de accesos no canónicos" que afectaba a ciertas CPU de AMD. Requiere las mismas mitigaciones que la vulnerabilidad de MDS que afecta a ciertas CPU de Intel. Se le asignó CVE-2020-12965 . Dado que la mayoría del software de software x86 ya está parcheado contra MDS y esta vulnerabilidad tiene exactamente las mismas mitigaciones, los proveedores de software no tienen que abordar esta vulnerabilidad.
En octubre de 2021, por primera vez, se reveló que una vulnerabilidad similar a Meltdown afectaba a todas las CPU de AMD; sin embargo, la compañía no cree que sea necesario aplicar nuevas mitigaciones y las existentes ya son suficientes.
Resumen de vulnerabilidades y mitigaciones
Tipo de mitigación | Exhaustividad | Eficacia | Impacto en el rendimiento |
---|---|---|---|
Hardware | Lleno | Lleno | Ninguno ... Pequeño |
Actualización del microcódigo de firmware | Parcial | Parcial ... Completo | Ninguno ... Grande |
OS / VMM | Parcial | Parcial ... Completo | Pequeño grande |
Recompilación de software | Pobre | Parcial ... Completo | Mediano grande |
Las mitigaciones de hardware requieren un cambio en el diseño de la CPU y, por lo tanto, una nueva iteración del hardware, pero imponen una pérdida de rendimiento cercana a cero. Las actualizaciones de microcódigo alteran el software en el que se ejecuta la CPU, lo que requiere que se publiquen e integren parches en cada sistema operativo y para cada CPU. Las mitigaciones de OS / VMM se aplican a nivel del sistema operativo o de la máquina virtual y (según la carga de trabajo) a menudo incurren en una pérdida de rendimiento bastante significativa. La recompilación de software requiere volver a compilar cada pieza de software y, por lo general, implica un impacto severo en el rendimiento.
Nombre de la vulnerabilidad
(alias) |
CVE | Arquitecturas y mitigaciones de CPU afectadas | ||||||
---|---|---|---|---|---|---|---|---|
Intel | AMD | |||||||
Lago de hielo |
Lago Cascade , Lago Comet |
Lago Whisky , Lago Amber |
Coffee Lake (novena generación) |
Coffee Lake (8.a generación) * |
Zen 1 / Zen 1+ | Zen 2 | ||
Spectre v1 Bounds Check Bypass |
2017-5753 | Recompilación de software | Recompilación de software | |||||
Inyección de destino de rama de Spectre v2 |
2017-5715 | Hardware + SO | Microcódigo + SO | Microcódigo + SO | Microcódigo + OS / VMM | Hardware + SO / VMM | ||
Error de predicción de retorno de SpectreRSB / ret2spec | 2018-15572 | SO | ||||||
Carga de caché de datos de Meltdown Rogue |
2017-5754 | No afectado | Microcódigo | No afectado | ||||
Spectre-NG v3a | 2018-3640 | No afectado | Microcódigo | |||||
Omisión de almacenamiento especulativo de Spectre-NG v4 |
2018-3639 | Hardware + SO / VMM | Microcódigo + SO | OS / VMM | Hardware + SO / VMM | |||
Presagio L1 Terminal Fallo , L1TF |
2018-3615 | No afectado | Microcódigo | No afectado | ||||
Restauración de estado de FP perezoso de Spectre-NG |
2018-3665 | OS / VMM | ||||||
Spectre-NG v1.1 Tienda de derivación de verificación de límites |
2018-3693 | OS / VMM | ||||||
Derivación de protección de solo lectura (RPB) de Spectre-NG v1.2 |
Sin CVE y nunca ha sido confirmado por Intel | No afectado | ||||||
Foreshadow-OS L1 Terminal Fault (L1TF) |
2018-3620 | No afectado | Microcódigo + SO | No afectado | ||||
Foreshadow-VMM L1 Terminal Fault (L1TF) |
2018-3646 | |||||||
Muestreo de datos de búfer de relleno de microarquitectura RIDL / ZombieLoad (MFBDS) |
2018-12130 | |||||||
Muestreo de datos del puerto de carga de microarquitectura RIDL (MLPDS) |
2018-12127 | No afectado | No afectado | No afectado | Microcódigo + SO | |||
RIDL la microarquitectura de muestreo de datos de memoria no almacenable en caché (MDSUM) |
2019-11091 | No afectado | Microcódigo + SO | |||||
Muestreo de datos de búfer de almacenamiento de microarquitectura de Fallout (MSBDS) |
2018-12126 | Microcódigo | No afectado | No afectado | Microcódigo + SO | |||
Spectre SWAPGS | 2019-1125 | Igual que Spectre 1 | ||||||
RIDL / ZombieLoad v2 Transactional Asynchronous Abort (TAA) |
2019-11135 | No afectado | Microcódigo + SO | |||||
Muestreo de desalojo de RIDL / CacheOut L1D (L1DES) |
2020-0549 | No afectado | ||||||
Muestreo de registros vectoriales RIDL (VRS) |
2020-0548 | |||||||
Inyección de valor de carga (LVI) | 2020-0551 | Recopilación de software | ||||||
Quitar | No afectado | Aún no arreglado (disputado) | ||||||
Muestreo de datos de búfer de registro especial CROSSTalk (SRBDS) |
2020-0543 | No afectado | Microcódigo | No afectado | ||||
Lado siego | Sin CVE, se basa en sistemas sin parches. |
La arquitectura Coffee Lake de octava generación en esta tabla también se aplica a una amplia gama de CPU Intel lanzadas anteriormente, sin limitarse a las arquitecturas basadas en Intel Core , Pentium 4 e Intel Atom a partir de Silvermont . Varias microarquitecturas de CPU no incluidas anteriormente también se ven afectadas, entre ellas IBM Power , ARM , MIPS y otras.
Futuro
Las vulnerabilidades de la clase Spectre permanecerán sin corregir porque, de lo contrario, los diseñadores de CPU tendrán que deshabilitar OoOE, lo que implicará una pérdida masiva de rendimiento.
Las CPU Intel más allá de Ice Lake, por ejemplo, Rocket Lake y Tiger Lake , no se ven afectadas por Fallout / MSBDS.
Notas
- 1. ^ El paso 5 de los procesadores escalables Intel® Xeon® de segunda generación basados en la microarquitectura Cascade Lake se ve afectado tanto por MSBDS como por MLPDS.
Referencias
enlaces externos
- Vulnerabilidades asociadas con la ejecución especulativa de la CPU
- Una evaluación sistemática de los ataques de ejecución transitoria y las defensas.
- Un árbol dinámico de vulnerabilidades de ejecución transitoria para CPU Intel, AMD y ARM
- Ataques de ejecución transitorios por Daniel Gruss, 20 de junio de 2019
- Errores de CPU
- Intel: Terminología refinada de ejecución especulativa