
discussions in this area and motivate further research.
To ensure the repeatability of our findings, all developed
code and data artifacts are available on https://github.com/
thomasrokicki/in-search-of-lost-time. This includes all the
tests that we ran for this study, the different patches for
Chrome and Firefox along with the complete data that
form the basis of our results.
Acknowledgments
We thank the reviewers and our shepherd for their
helpful feedback. This work benefited from the support of
the ANR-19-CE39-0007 MIAOUS project and from the
ASCOT project of the Hauts-de-France STaRS framework.
References
[1] Noscript. https://noscript.net/.
[2]
time clamper.cpp. https://source.chromium.org/chromium/
chromium/src/+/master:third party/blink/renderer/core/timing/
time clamper.cc. Accessed: 2020-10-12.
[3]
Issue 611420: WebAccessibleResources take too long to make a
decision about loading if the extension is installed. https://bugs.
chromium.org/p/chromium/issues/detail?id=611420, 2017.
[4]
Issue 709464: Detecting the presence of extensions through timing
attacks (including Incognito) - Chromium bug tracker. https://bugs.
chromium.org/p/chromium/issues/detail?id=709464, 2017.
[5]
Always restyle / repaint when a visited query finishes
– Mozilla Central. https://hg.mozilla.org/mozilla-central/rev/
89fad029456188f03a670ef5f08a5d0856a728b1, 2019.
[6]
Bug 884270: Link Visitedness can be detected by redraw timing
– Bugzilla. https://bugzilla.mozilla.org/show bug.cgi?id=884270,
2020.
[7]
nsrfpservice.cpp, firefox sourcecode. https://hg.mozilla.org/
mozilla-central/file/tip/toolkit/components/resistfingerprinting/
nsRFPService.cpp, October 2020.
[8]
SeleniumHQ browser automation. https://www.selenium.dev/, oct
2020.
[9]
Marc Andrysco, David Kohlbrenner, Keaton Mowery, Ranjit Jhala,
Sorin Lerner, and Hovav Shacham. On subnormal floating point
and abnormal timing. In S&P, 2015.
[10]
Anne van Kesteren Artur Janc, Charlie Reis. Coop and
coep explained. https://docs.google.com/document/d/1zDlfvfTJ
9e8Jdc8ehuV4zMEu9ySMCiTGMS9y0GU92k/edit. Accessed:
2020-10-05.
[11]
Bugzilla. Reduce timer resolution to 2ms. https://bugzilla.mozilla.
org/show bug.cgi?id=1435296, feb 2018.
[12]
Bugzilla. Set timer resolution to 1ms with jitter. https://bugzilla.
mozilla.org/show bug.cgi?id=1451790, apr 2018.
[13]
Bugzilla. Unanticipated security/usability degradation from
precision-lowering of performance.now() to 2ms. https://bugzilla.
mozilla.org/show bug.cgi?id=1440863, feb 2018.
[14]
Bugzilla. Check crossoriginisolated for all nsrfpser-
vice::reducetimeprecision* callers. https://bugzilla.mozilla.
org/show bug.cgi?id=1586761, apr 2020.
[15]
Claudio Canella, Daniel Genkin, Lukas Giner, Daniel Gruss, Moritz
Lipp, Marina Minkin, Daniel Moghimi, Frank Piessens, Michael
Schwarz, Berk Sunar, Jo Van Bulck, and Yuval Yarom. Fallout:
Leaking Data on Meltdown-resistant CPUs. In CCS, 2019.
[16]
Claudio Canella, Jo Van Bulck, Michael Schwarz, Moritz Lipp,
Benjamin Von Berg, Philipp Ortner, Frank Piessens, Dmitry Ev-
tyushkin, and Daniel Gruss. A systematic evaluation of transient
execution attacks and defenses. In USENIX Security Symposium,
2019.
[17]
Yinzhi Cao, Zhanhao Chen, Song Li, and Shujiang Wu. Determin-
istic browser. In CCS, 2017.
[18]
MDN contributors. Cross-origin-embedder-policy.
https://developer.mozilla.org/en- US/docs/Web/HTTP/Headers/
Cross-Origin- Embedder-Policy.
[19]
MDN contributors. Cross-origin-opener-policy. https:
//developer.mozilla.org/en- US/docs/Web/HTTP/Headers/
Cross-Origin- Opener-Policy.
[20]
MDN contributors. Cross-origin resource policy.
https://developer.mozilla.org/en- US/docs/Web/HTTP/
Cross-Origin Resource Policy (CORP).
[21]
MDN Contributors. Same-origin-policy. https://developer.mozilla.
org/en-US/docs/Web/Security/Same-origin policy. Accessed: 2020-
10-06.
[22]
MDN contributors. Subresource integrity. https://developer.mozilla.
org/en-US/docs/Web/Security/Subresource Integrity.
[23]
MDN Contributors. Date.now() api. https://developer.mozilla.org/
en-US/docs/Web/JavaScript/Reference/Global Objects/Date/now,
Sept 2020.
[24]
MDN contributors. Performance api. https://developer.mozilla.org/
en-US/docs/Web/API/Performance API, October 2020.
[25]
MDN Contributors. Performance.now() api. https://developer.
mozilla.org/fr/docs/Web/API/Performance/now, Sept 2020.
[26]
MDN Contributors. Window.requestanimationframe() api.
https://developer.mozilla.org/en- US/docs/Web/API/window/
requestAnimationFrame, Sept 2020.
[27]
MDN Contributors. Window.settimeout() api. https://developer.
mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/
setTimeout, Sept 2020.
[28]
ECMA. Atomics.add - standard. https://www.ecma-international.
org/ecma-262/#sec-atomics.add. Accessed: 2020-09-30.
[29]
ECMA. Sharedarraybuffer objects. https://tc39.es/ecma262/
#sec-sharedarraybuffer-objects. Accessed: 2020-09-30.
[30]
ECMA. Standard ecma-262. https://www.ecma-international.org/
publications/standards/Ecma-262.htm. Accessed: 2019-09-02.
[31]
Ben Gras, Kaveh Razavi, Erik Bosman, Herbert Bos, and Cristiano
Giuffrida. Aslr on the line: Practical cache attacks on the mmu. In
NDSS, volume 17, page 26, 2017.
[32]
Ilya Grigorik. High resolution time level 2. https://www.w3.org/
TR/hr-time-2/, Nov 2019.
[33]
Daniel Gruss, David Bidner, and Stefan Mangard. Practical memory
deduplication attacks in sandboxed javascript. In ESORICS, 2015.
[34]
Daniel Gruss, Cl
´
ementine Maurice, and Stefan Mangard. Rowham-
mer. js: A remote software-induced fault attack in javascript. In
DIMVA, 2016.
[35]
David Gullasch, Endre Bangerter, and Stephan Krenn. Cache games
- bringing access-based cache attacks on AES to practice. In S&P,
2011.
[36]
Sakamoto K. Reduce resolution of performance.now to prevent
timing attacks. https://bugs.chromium.org/p/chromium/issues/detail?
id=506723, Jul 2015.
[37]
Yoongu Kim, Ross Daly, Jeremie Kim, Chris Fallin, Ji Hye Lee,
Donghyuk Lee, Chris Wilkerson, Konrad Lai, and Onur Mutlu.
Flipping bits in memory without accessing them: An experimental
study of dram disturbance errors. ACM SIGARCH Computer
Architecture News, 42(3):361–372, 2014.
[38]
Paul Kocher, Jann Horn, Anders Fogh, Daniel Genkin, Daniel
Gruss, Werner Haas, Mike Hamburg, Moritz Lipp, Stefan Mangard,
Thomas Prescher, et al. Spectre attacks: Exploiting speculative
execution. In S&P, 2019.
[39]
David Kohlbrenner and Hovav Shacham. Trusted browsers for
uncertain times. In USENIX Security Symposium, 2016.
[40]
Sami Ky
¨
ostil
¨
a. Clamp performance.now() to 100us. https://
chromium-review.googlesource.com/c/chromium/src/+/849993, Jan
2018.
[41]
Moritz Lipp, Daniel Gruss, Michael Schwarz, David Bidner,
Cl
´
ementine Maurice, and Stefan Mangard. Practical keystroke
timing attacks in sandboxed javascript. In ESORICS, 2017.