SLIDE 1 Loophole: Timing Attacks on Shared Event Loops in Chrome
Pepe Vila and Boris Köpf
vwzq.net @cgvwzq github.com/cgvwzq
SLIDE 2
DISCLAIMER:
CRYPTACUS
SLIDE 3
DISCLAIMER:
CRYPTACUS
SLIDE 4
DISCLAIMER:
CRYPTACUS
(it’s funny because it’s very ubiquitous…)
SLIDE 5
DISCLAIMER:
CRYPTACUS
(it’s funny because it’s very ubiquitous…)
SLIDE 6
Event-driven programming
SLIDE 7 Source: http://berb.github.io/diploma-thesis/original/042_serverarch.html
SLIDE 8 FIFO queue Dispatcher
time
Shared Event Loop
SLIDE 9 FIFO queue Dispatcher
time
e0
Shared Event Loop
SLIDE 10 FIFO queue Dispatcher
time
e0
Shared Event Loop
SLIDE 11 FIFO queue Dispatcher
time
e1 e0
Shared Event Loop
SLIDE 12 FIFO queue Dispatcher
time
e1 e0
Shared Event Loop
SLIDE 13 FIFO queue Dispatcher
time
e0 e1
Shared Event Loop
SLIDE 14 FIFO queue Dispatcher
time
e0 e1 e2
Shared Event Loop
SLIDE 15 FIFO queue Dispatcher
time
e0 e1 e2
Shared Event Loop
SLIDE 16 FIFO queue Dispatcher
time
e0 e2 e1
Shared Event Loop
SLIDE 17 FIFO queue Dispatcher
time
e0 e1 e2
Shared Event Loop
SLIDE 18 FIFO queue Dispatcher
time
e0 e1 e2
Shared Event Loop
SLIDE 19 FIFO queue Dispatcher
time
e0 e1 e2 e3
Shared Event Loop
SLIDE 20 FIFO queue Dispatcher
time
e0 e1 e2 e3
Shared Event Loop
SLIDE 21 FIFO queue Dispatcher
time
e0 e1 e3 e2
Shared Event Loop
SLIDE 22 FIFO queue Dispatcher
time
e0 e1 e2 e3
Shared Event Loop
SLIDE 23 FIFO queue Dispatcher
time
e0 e1 e2 e3
Shared Event Loop
SLIDE 24 FIFO queue Dispatcher
time
e0 e1 e2 e3 e4
Shared Event Loop
SLIDE 25 FIFO queue Dispatcher
time
e0 e1 e2 e4 e3
Shared Event Loop
SLIDE 26 FIFO queue Dispatcher
time
e0 e1 e2 e3 e4
Shared Event Loop
SLIDE 27 FIFO queue Dispatcher
time
e0 e1 e2 e3 e4
Shared Event Loop
SLIDE 28 FIFO queue Dispatcher
time
d0 d1 d2 d3
e0 e1 e2 e3 e4
Shared Event Loop
SLIDE 29 FIFO queue Dispatcher
time
Event-delay trace
d0 d1 d2 d3
e0 e1 e2 e3 e4
Shared Event Loop
SLIDE 30
We exploit 2 different shared Event Loops in Chrome:
SLIDE 31
We exploit 2 different shared Event Loops in Chrome:
I/O’s of the Host Process Main thread’s of Renderers
SLIDE 32
We exploit 2 different shared Event Loops in Chrome:
I/O’s of the Host Process Main thread’s of Renderers
And implement 3 different attacks:
SLIDE 33
Page Identification
And implement 3 different attacks: We exploit 2 different shared Event Loops in Chrome:
I/O’s of the Host Process Main thread’s of Renderers
SLIDE 34
And implement 3 different attacks:
19780.000 19785.000 19790.000 19795.000 19800.000 0.02 0.04 0.06 0.10 0.20 0.40 1.00 2.00 4.00 10.00
Inter-keystroke Timing Page Identification
We exploit 2 different shared Event Loops in Chrome:
I/O’s of the Host Process Main thread’s of Renderers
SLIDE 35
We exploit 2 different shared Event Loops in Chrome:
I/O’s of the Host Process Main thread’s of Renderers
And implement 3 different attacks:
Page Identification Covert Channel
19780.000 19785.000 19790.000 19795.000 19800.000 0.02 0.04 0.06 0.10 0.20 0.40 1.00 2.00 4.00 10.00
Inter-keystroke Timing
SLIDE 36
SYSTEM/INTERNET
SLIDE 37
HOST PROCESS SYSTEM/INTERNET
SLIDE 38 HOST PROCESS SYSTEM/INTERNET
- NETWORK REQUESTS
- IPC COMMUNICATION
- DISPATCHES USER
ACTIONS
SLIDE 39 HOST PROCESS SYSTEM/INTERNET
RENDERER 1 RENDERER 2 tab1 | trusted.com tab 2 | SHARED BETWEEN ALL RENDERERS
SLIDE 40 HOST PROCESS SYSTEM/INTERNET
RENDERER 1 RENDERER 2 tab1 | trusted.com tab 2 |
SLIDE 41 HOST PROCESS SYSTEM/INTERNET
RENDERER 1 RENDERER 2 tab1 | trusted.com tab 2 | evil.com
SLIDE 42 <script>
function loop () { save(performance.now()); fetch(new Request("http://0/")) .catch(loop); } loop(); </script>
Timing resolution of ~500 μs
Spying on the Host
SLIDE 43 Timing resolution of ~500 μs With SharedWorkers we obtain <100 μs
<script>
function loop () { save(performance.now()); fetch(new Request("http://0/")) .catch(loop); } loop(); </script>
Spying on the Host
SLIDE 44 HOST PROCESS SYSTEM/INTERNET
RENDERER 1 tab1 | trusted.com
SLIDE 45 HOST PROCESS SYSTEM/INTERNET
RENDERER 1
- JAVASCRIPT EXECUTION
- RESOURCE PARSING
- LAYOUT & RENDERING
tab1 | trusted.com
SLIDE 46 HOST PROCESS SYSTEM/INTERNET
RENDERER 1 iframe |
SHARED BETWEEN IFRAMES, POPUPS, MAX #RENDERER EXCEEDED…
tab1 | trusted.com
SLIDE 47 HOST PROCESS SYSTEM/INTERNET
RENDERER 1 iframe | evil.co tab1 | trusted.com
SLIDE 48 <script>
function loop() { save(performance.now()); self.postMessage(0, "*"); } self.onmessage = loop; loop(); </script>
Timing resolution of <25 μs
Spying on the Renderer
SLIDE 49
LoopScan Tool
https://github.com/cgvwzq/loopscan
SLIDE 50
Web Page Identification & Inter-keystroke Timing
SLIDE 51
Web Page Identification
Monitor the EventLoop while page loading
SLIDE 52
Dynamic Time Warping
DTW is resistant to delays in the occurrence of events
SLIDE 53
Dynamic Time Warping
DTW is resistant to delays in the occurrence of events
2-4 seconds of measuring
SLIDE 54
Dynamic Time Warping
DTW is resistant to delays in the occurrence of events
2-4 seconds of measuring One trace for training
SLIDE 55 Web Page Identification
500 pages x 30 traces x 3 machines x 2 event loops
Renderer’s main thread: Host’s I/O thread:
75%
23%
(Linux desktop) (Macbook Pro)
(recognition rates below 5% across machines) R-library and datasets:
https://github.com/cgvwzq/rlang-loophole
SLIDE 56 Inter-keystroke Timing
19780.000 19785.000 19790.000 19795.000 19800.000 19805.000 0.02 0.04 0.06 0.10 0.20 0.40 1.00 2.00 4.00 10.00
We obtain the password length and
time between consecutive pressed keys
SLIDE 57
Inter-keystroke Timing
10.000 passwords 90% accuracy precision: σ = 6.1 ms
SLIDE 58
Inter-keystroke Timing
More precision than network based attacks. Less noise than in micro-architectural attacks. No privileges. No training. 10.000 passwords 90% accuracy precision: σ = 6.1 ms
SLIDE 59 Countermeasures
- Reduce clock resolution
- Site Isolation Project
- CPU throttling
- Rate limiting
SLIDE 60 Countermeasures
- Reduce clock resolution
- Site Isolation Project
- CPU throttling
- Rate limiting
SLIDE 61 Conclusions
- Shared event loops in Chrome are vulnerable to
timing side-channels
- We systematically study how this channel can be
used for different attacks
- Fundamental design issues that need to be
addressed
SLIDE 62 62
Thank you! :)
Questions?