¿Qué "ataques de tiempo" podrían realizar los sitios web con las fechas de los archivos modificados por última vez?

5

enlace describe la propiedad .lastModified de un objeto File en JavaScript (generalmente creado cuando un usuario selecciona un archivo a través de un elemento HTML <input type="file"> ; ¡el JavaScript en el navegador servido desde una página web, por supuesto, no tiene acceso ilimitado al sistema de archivos del usuario!)

Los documentos contienen el siguiente comentario de seguridad críptico:

  

Para ofrecer protección contra ataques de tiempo y huellas digitales, la precisión de someFile.lastModified podría redondearse según la configuración del navegador.   En Firefox, la preferencia privacy.reduceTimerPrecision está habilitada de forma predeterminada y por defecto es 20us en Firefox 59; en 60 será 2ms.

En un tramo real puedo ver cómo, hipotéticamente, se podrían usar las fechas de modificación de archivos para huellas digitales : si puede hacer que un usuario seleccione el mismo archivo en un cuadro de diálogo <input type="file"> en varios sitios, y almacena la fecha de modificación del archivo de precisión para el microsegundo, luego puede hacer una referencia cruzada entre ellos y darse cuenta de que, voila, es el mismo usuario (aunque esto parece ser un escenario muy inverosímil). Pero estoy totalmente perdido para imaginar contra qué "ataques de temporización" podría proteger este redondeo.

¿Cuáles son los ataques que esta característica realmente debe evitar?

    
pregunta Mark Amery 16.04.2018 - 16:25
fuente

2 respuestas

2

No creo que haya un ataque de tiempo específicamente contra File.lastModified . Creo que la precisión reducida del campo lastModified es un efecto de mitigación para todo tipo de ataques de tiempo.

Specter / Meltdown fueron explotable desde JavaScript , según el calendario declaraciones Para esto, necesitarías una sincronización de alta precisión. Para resolver este problema, Mozilla redujo la precisión del temporizador con privacy.reduceTimerPrecision . Esto debe afectar a todos los temporizadores: si someFile.lastModified es más preciso que new Date() o algún otro temporizador, puede crear un temporizador preciso cambiando un archivo y luego mirando el lastModified .

    
respondido por el Sjoerd 16.04.2018 - 16:51
fuente
0

Tienes razón: es una protección contra las huellas dactilares.

Esto no necesitaría ninguna interacción del usuario, ya que puede crear archivos ficticios a través de JavaScript:

const file = new File([], 'foo.bar');
console.log(file.lastModified);

Si no especifica la última fecha de modificación, el valor predeterminado será Date.now() .

Debido a que Date.now tuvo que acelerarse para evitar ataques de huellas digitales (consulte error # 1217238 ), los documentos deben reflejar ese comportamiento ante los desarrolladores.

    
respondido por el Benoit Esnard 16.04.2018 - 17:21
fuente

Lea otras preguntas en las etiquetas