Several recently-published research articles have demonstrated a new class of timing attacks (Meltdown and Spectre) that work on modern CPUs. Our internal experiments confirm that it is possible to use similar techniques from Web content to read private information between different origins. The full extent of this class of attack is still under investigation and we are working with security researchers and other browser vendors to fully understand the threat and fixes. Since this new class of attacks involves measuring precise time intervals, as a partial, short-term, mitigation we are disabling or reducing the precision of several time sources in Firefox. This includes both explicit sources, like
performance.now(), and implicit sources that allow building high-resolution timers, viz.,
Specifically, in all release channels, starting with 57:
- The resolution of
performance.now()will be reduced to 20µs. (UPDATE: see the MDN documentation for performance.now for up-to-date precision information.)
SharedArrayBufferfeature is being disabled by default.
Furthermore, other timing sources and time-fuzzing techniques are being worked on.
In the longer term, we have started experimenting with techniques to remove the information leak closer to the source, instead of just hiding the leak by disabling timers. This project requires time to understand, implement and test, but might allow us to consider reenabling
SharedArrayBuffer and the other high-resolution timers as these features provide important capabilities to the Web platform.
Update [January 4, 2018]: We have released the two timing-related mitigations described above with Firefox 57.0.4, Beta and Developers Edition 58.0b14, and Nightly 59.0a1 dated “2018-01-04” and later. Firefox 52 ESR does not support
SharedArrayBuffer and is less at risk; the
performance.now() mitigations will be included in the regularly scheduled Firefox 52.6 ESR release on January 23, 2018.