SLAP: ataques de especulación de datos (data Speculation attacks via Load Address Prediction)
- El ataque SLAP es un nuevo ataque de ejecución especulativa que ocurre en los CPU Apple Silicon M2/A15.
- A través del predictor de direcciones de carga (LAP), mejora el rendimiento al predecir la siguiente dirección de memoria con base en patrones de acceso a memoria.
- Cuando la predicción falla, el CPU procesa mediante ejecución especulativa datos a los que no debería acceder, lo que genera un riesgo de seguridad.
- Como caso real, se demostró un ataque en el navegador web Safari en el que un atacante remoto puede recuperar el contenido de correos electrónicos y el comportamiento de navegación.
FLOP: predicciones falsas de salida de carga (False Load Output Predictions)
- El ataque FLOP es otro ataque de ejecución especulativa que ocurre en los CPU Apple M3/A17 al predecir dependencias de datos.
- A través del predictor de valores de carga (LVP), mejora el rendimiento al predecir el valor de los datos que devolverá el subsistema de memoria.
- Cuando la predicción falla, abre una superficie de ataque que puede omitir verificaciones críticas de la lógica del programa para la seguridad de memoria y filtrar secretos almacenados en memoria.
- Se demostró un ataque en los navegadores Safari y Chrome para recuperar historial de ubicaciones, eventos de calendario, información de tarjetas de crédito y más.
Demo
- Filtración de datos de la bandeja de entrada de Proton Mail: entrena el LVP del CPU M3 con código JavaScript dentro de WebKit para traer el contenido de la bandeja de entrada al espacio de direcciones.
- Leer El gran Gatsby: demostración de prueba de concepto que recupera una cadena secreta usando LAP en un CPU Apple M2.
- Leer Harry Potter: demostración de prueba de concepto que usa LVP en un CPU Apple M3 para predecir un índice de arreglo incorrecto y referenciar caracteres de una cadena.
Equipo de investigación
- Jason Kim, Jalen Chuang, Daniel Genkin (Georgia Institute of Technology)
- Yuval Yarom (Ruhr University Bochum)
Preguntas frecuentes sobre SLAP y FLOP
Is my Apple device affected?
- Laptops Mac: todos los modelos lanzados desde 2022 (MacBook Air, MacBook Pro)
- Escritorios Mac: todos los modelos lanzados desde 2023 (Mac Mini, iMac, Mac Studio, Mac Pro)
- iPad: todos los modelos iPad Pro, Air y Mini lanzados desde septiembre de 2021
- Pro de 6.ª y 7.ª generación, Air de 6.ª generación, Mini de 6.ª generación
- iPhone: todos los modelos lanzados desde septiembre de 2021
- todos los modelos iPhone 13, 14, 15 y 16, además del SE de 3.ª generación
Why are the SLAP and FLOP attacks significant?
- Mecanismo de protección: normalmente, los navegadores web aíslan dos páginas web abiertas entre sí para que una no pueda leer el contenido de la otra
- Vulnerabilidad: SLAP y FLOP anulan estas protecciones, permitiendo que una página atacante lea datos sensibles de la página objetivo
- Datos expuestos: historial de ubicaciones, información de tarjetas de crédito, etc.
How can I defend against SLAP and FLOP?
- FLOP tiene mitigaciones, pero requieren parches de los proveedores de software y el usuario no puede resolverlo por su cuenta
- Apple dijo que corregirá este problema en futuras actualizaciones de seguridad, y es importante mantener activadas las actualizaciones automáticas y usar el sistema operativo y las aplicaciones más recientes
What about other processor vendors?
- Aún no se han encontrado indicios de SLAP o FLOP en productos de Intel, AMD, Qualcomm, Ampere y otros
What about other web browsers?
- No se probaron otros navegadores como Firefox
Can I detect if someone is using SLAP or FLOP on my device?
- SLAP y FLOP son ataques basados en microarquitectura, por lo que no dejan rastros en los registros del sistema
Are any malicious actors abusing SLAP or FLOP in the wild?
- Hasta ahora no hay evidencia de que SLAP o FLOP se hayan usado en ataques reales
When did you notify Apple?
- SLAP: reportado a Apple el 24 de mayo de 2024
- FLOP: reportado a Apple el 3 de septiembre de 2024
Preguntas técnicas
¿Qué es un canal lateral (Side Channel)?
- Un ataque que explota vulnerabilidades en la implementación del hardware de una computadora
- Aprovecha filtraciones de información producidas por el comportamiento del hardware, en lugar de errores de software
- Vías de filtración de datos
- Fenómenos físicos como sonido, ondas electromagnéticas y disipación de calor
- Contención en recursos compartidos del CPU (núcleos, caché, buffers internos, etc.)
- Exposición de información por contención del CPU
- Se infieren patrones de comportamiento del objetivo mediante variables indirectas como mediciones de tiempo y consumo de energía
¿Qué es un ataque de ejecución especulativa (Speculative Execution)?
- Ejecución especulativa: técnica de optimización en la que el CPU predice el flujo de control y ejecuta instrucciones por adelantado
- Si la predicción es incorrecta, revierte el estado, pero quedan rastros sutiles como en la caché
- Ataque Spectre
- Induce una ejecución especulativa basada en un flujo incorrecto
- Si durante esa ejecución se ejecutan instrucciones que usan datos sensibles, el valor de esos datos puede quedar expuesto indirectamente
- Extensión en SLAP y FLOP
- Los CPU de Apple predicen no solo el flujo de control, sino también el flujo de datos
- FLOP provoca la ejecución de instrucciones sobre valores de datos incorrectos
Cómo funciona SLAP
- Análisis de Load Address Prediction (LAP)
- Si se entrena un patrón específico de direcciones de memoria, LAP predice la siguiente dirección y ejecuta operaciones de datos
- A diferencia del prefetching de hardware, ejecuta instrucciones con los datos predichos
- Explotación de una vulnerabilidad en Safari
- Con base en el problema de aislamiento de Safari descubierto por iLeakage, fuerza a que distintas páginas web se procesen dentro del mismo proceso
- La página web atacante accede a datos de cadenas de texto de la página objetivo
Cómo funciona FLOP
- Análisis de Load Value Prediction (LVP)
- Si se devuelve repetidamente el mismo valor de datos, LVP predice el resultado
- Ejecuta instrucciones usando valores incorrectos de memoria
- Ataques contra Safari y Chrome
- Safari: predice información de tipo de estructuras de datos de JavaScript y ejecuta instrucciones con una estructura de datos incorrecta
- Chrome: al llamar funciones de WebAssembly, argumentos incorrectos provocan errores de lectura de memoria
Diferencias entre SLAP y FLOP
- SLAP: usa el Load Address Predictor (LAP) para explotar la proximidad en la asignación de cadenas
- FLOP: usa el Load Value Predictor (LVP) para omitir verificaciones de integridad de datos
- LAP vs LVP
- LAP: predice la siguiente dirección de memoria
- LVP: predice el siguiente valor devuelto desde memoria
- LAP requiere un proceso de entrenamiento largo, pero permite predecir patrones
¿Qué son JavaScript y WebAssembly?
- JavaScript: lenguaje que actualiza dinámicamente el contenido web
- WebAssembly: lenguaje para aplicaciones web de alto rendimiento que interactúa con JavaScript
- Impacto del ataque
- Como ambos lenguajes se ejecutan automáticamente en el navegador, el ataque es posible sin descargar código malicioso
Por qué se eligieron Safari y Chrome como objetivos del ataque
- Safari:
- No tiene aislamiento de sitios (Site Isolation), por lo que páginas web de distintos dominios pueden ejecutarse en el mismo proceso
- Esto amplía la superficie de ataque basada en LAP y LVP
- Chrome:
- Aunque aplica aislamiento de sitios, en algunos casos los subdominios del mismo sitio se procesan en un solo proceso
- Los ataques LAP y LVP siguen siendo posibles
Apoyo a la investigación
- Esta investigación recibió apoyo de AFOSR, Alfred P Sloan Research Fellowship, ARC Discovery Project, DARPA, DFG, Qualcomm, Cisco y Zama.
1 comentarios
Opinión de Hacker News
La demo de SLAP muestra bien cómo la defensa en profundidad puede determinar la viabilidad de explotar una vulnerabilidad. La vulnerabilidad de Safari ocurre porque no logra aislar una nueva ventana como un proceso independiente al llamar a
window.openEs interesante la parte donde hacen ingeniería inversa para confirmar la existencia de LVP en el M3. En cargas de 8 bytes, LVP solo se activa cuando el valor cargado es 0. Esto podría ser una medida para la seguridad de memoria
Vale la pena leer sobre los ataques Spectre y Meltdown y los artículos relacionados para quienes los vean por primera vez
En Safari usan el principio de amplificación de caché basado en compuertas NOT para distinguir entre aciertos y fallos de caché. Es posible distinguir entre cache hit y cache miss incluso en un entorno web
Esto muestra que el aislamiento de sitios de Chrome no es una mitigación perfecta. Existe un caso límite en el que dos subdominios del mismo sitio pueden fusionarse en un solo proceso
La cultura de marketing alrededor de los anuncios de vulnerabilidades de hardware se siente extraña. Me pregunto por qué, en vez de simplemente reportar la vulnerabilidad y publicar el artículo, crean dominios personalizados, logos, FAQ, etc.
El año pasado conocí al profesor Daniel Genkin en una clase de Intro to Cyber Security. Dijo que estaba investigando ataques especulativos contra CPUs de Apple. Hace entender que la seguridad casi nunca está garantizada
Tengo la costumbre de desactivar js por defecto en sitios no confiables. Al final, es el programa de otra persona ejecutándose en nuestra máquina
Apple anunció recientemente actualizaciones menores de versión para macOS e iOS que incluyen correcciones de seguridad. Me pregunto si alguien verificó si solucionan esta vulnerabilidad
Parece que RUB se ha convertido en un centro global para trabajo avanzado de seguridad ofensiva. Me pregunto si hace 10 años simplemente no le prestaba atención o si es un fenómeno nuevo