¿Cómo se puede usar SharedArrayBuffer para sincronizar ataques?

16
  

Dado que esta nueva clase de ataques implica medir intervalos de tiempo precisos, como mitigación parcial ya corto plazo, estamos inhabilitando o reduciendo la precisión de varias fuentes de tiempo en Firefox. La precisión de performance.now () se ha reducido de 5 μs a 20 μs y la función SharedArrayBuffer se ha deshabilitado porque se puede usar para construir un temporizador de alta resolución.

     

Aviso de seguridad de la Fundación Mozilla 2018-01

¿Cómo se puede usar SharedArrayBuffer para construir un temporizador de alta resolución? ¿No es solo un búfer con reglas especiales que le permiten ser directamente ¿Pasado a otro contexto en lugar de clonarlo ?

    
pregunta curiousdannii 08.01.2018 - 06:32
fuente

1 respuesta

16

SharedArrayBuffer permite que dos subprocesos compartan el estado, por lo que uno puede operar como un "reloj" (incrementando la señal de temporización) y el otro puede leer el "reloj". Además, la disponibilidad del objeto Atomics permite realizar operaciones en el SharedArrayBuffer de una manera que hace que el incremento sea eficiente y pueda ser visto por el hilo de lectura sin el riesgo de una condición de carrera.

Este temporizador es, por supuesto, solo en unidades de "qué tan rápido aumenta el otro hilo" y no en "segundos", pero para los ataques de temporización, los datos interesantes para un atacante son los tiempos relativos . El hecho de saber que una línea de caché determinada (en el caso de Spectre) se carga más rápido que otras revela que la CPU lo ha prempaquetado. Lo mismo ocurre con los ataques de tiempo en cosas como las comparaciones de contraseñas (los caracteres correctos toman una proporción más larga que los caracteres incorrectos).

Sería posible calibrar un bucle de tiempo rápido contra una referencia de reloj conocida (es decir, desde performance.now ()) para obtener un promedio tiempo por incremento, pero aún habría algunos jitter.

    
respondido por el David 08.01.2018 - 06:42
fuente

Lea otras preguntas en las etiquetas