Loophole Timing Attacks on Shared Event Loops in Chrome Pepe Vila - - PowerPoint PPT Presentation

loophole
SMART_READER_LITE
LIVE PREVIEW

Loophole Timing Attacks on Shared Event Loops in Chrome Pepe Vila - - PowerPoint PPT Presentation

Loophole Timing Attacks on Shared Event Loops in Chrome Pepe Vila November 22, 2016 Pepe Vila Loophole November 22, 2016 1 / 22 Introduction Event-driven programming Event loops A timing side-channel on event loops Pepe Vila Loophole


slide-1
SLIDE 1

Loophole

Timing Attacks on Shared Event Loops in Chrome Pepe Vila November 22, 2016

Pepe Vila Loophole November 22, 2016 1 / 22

slide-2
SLIDE 2

Introduction

Event-driven programming Event loops A timing side-channel on event loops

Pepe Vila Loophole November 22, 2016 2 / 22

slide-3
SLIDE 3

Introduction: Event-driven programming

EDP is a programming paradigm for GUI, web clients, networks and server-side

1https://html.spec.whatwg.org/#event-loop Pepe Vila Loophole November 22, 2016 3 / 22

slide-4
SLIDE 4

Introduction: Event-driven programming

EDP is a programming paradigm for GUI, web clients, networks and server-side The flow of the program is determined by events or messages

1https://html.spec.whatwg.org/#event-loop Pepe Vila Loophole November 22, 2016 3 / 22

slide-5
SLIDE 5

Introduction: Event-driven programming

EDP is a programming paradigm for GUI, web clients, networks and server-side The flow of the program is determined by events or messages Examples: Nginx, Node.js or memcached Used for message passing: inter-(thread | process) communication HTML5 standard 1 mandates user agents to use EDP:

1https://html.spec.whatwg.org/#event-loop Pepe Vila Loophole November 22, 2016 3 / 22

slide-6
SLIDE 6

Introduction: Event loops

Event loop, message dispatcher, message loop, or run loop

Pepe Vila Loophole November 22, 2016 4 / 22

slide-7
SLIDE 7

Introduction: Event loops

Event loop, message dispatcher, message loop, or run loop FIFO queue & dispatcher:

Q = []; while (true) { M = Q.shift (); // dequeue process(M); }

Pepe Vila Loophole November 22, 2016 4 / 22

slide-8
SLIDE 8

Introduction: Event loops

Event loop, message dispatcher, message loop, or run loop FIFO queue & dispatcher:

Q = []; while (true) { M = Q.shift (); // dequeue process(M); }

If queue is empty, waits until an event arrives

Pepe Vila Loophole November 22, 2016 4 / 22

slide-9
SLIDE 9

Introduction: Event loops

Event loop, message dispatcher, message loop, or run loop FIFO queue & dispatcher:

Q = []; while (true) { M = Q.shift (); // dequeue process(M); }

If queue is empty, waits until an event arrives Blocking operations (e.g., database and network requests) are dealt with asynchronously

Pepe Vila Loophole November 22, 2016 4 / 22

slide-10
SLIDE 10

Introduction: Event loops

Event loop, message dispatcher, message loop, or run loop FIFO queue & dispatcher:

Q = []; while (true) { M = Q.shift (); // dequeue process(M); }

If queue is empty, waits until an event arrives Blocking operations (e.g., database and network requests) are dealt with asynchronously Simple concurrency model for programmers

Pepe Vila Loophole November 22, 2016 4 / 22

slide-11
SLIDE 11

Introduction: A timing side-channel on event loops

Event loops are susceptible to timing side-channel attacks:

Pepe Vila Loophole November 22, 2016 5 / 22

slide-12
SLIDE 12

Introduction: A timing side-channel on event loops

Event loops are susceptible to timing side-channel attacks: when shared between mutually distrusting programs

Pepe Vila Loophole November 22, 2016 5 / 22

slide-13
SLIDE 13

Our work (in poetry)

“Loophole” Exploit a timing side-channel in the Chrome web browser to break user privacy using machine learning techniques

  • Abraham Lincoln

Pepe Vila Loophole November 22, 2016 6 / 22

slide-14
SLIDE 14

Chrome’s architecture

Same Origin Policy (SOP) Multi-process Shared event loops

Pepe Vila Loophole November 22, 2016 7 / 22

slide-15
SLIDE 15

Chrome’s architecture: Same Origin Policy (SOP)

Central concept in the web security model Script from a site A can not access data from site V if origins differ: Origin := (scheme, domain, port )

Pepe Vila Loophole November 22, 2016 8 / 22

slide-16
SLIDE 16

Chrome’s architecture: Same Origin Policy (SOP)

Central concept in the web security model Script from a site A can not access data from site V if origins differ: Origin := (scheme, domain, port ) Origin 1 Origin 2 http://example.com:8080 http://example.com http://mail.example.com http://app.example.com https://foo.example.com https://foo.example.com https://example.com http://example.com

Pepe Vila Loophole November 22, 2016 8 / 22

slide-17
SLIDE 17

Chrome’s architecture: Multi-process

Multi-process: 1 privileged host — N sandboxed renderers

2Chrome’s implementation of an event loop Pepe Vila Loophole November 22, 2016 9 / 22

slide-18
SLIDE 18

Chrome’s architecture: Multi-process

Multi-process: 1 privileged host — N sandboxed renderers Each process has multiple threads. Each thread one message loop 2

2Chrome’s implementation of an event loop Pepe Vila Loophole November 22, 2016 9 / 22

slide-19
SLIDE 19

Chrome’s architecture: Multi-process

Multi-process: 1 privileged host — N sandboxed renderers Each process has multiple threads. Each thread one message loop 2 DEMO: Chrome’s task manager

2Chrome’s implementation of an event loop Pepe Vila Loophole November 22, 2016 9 / 22

slide-20
SLIDE 20

Chrome’s architecture: Shared event loops

Different policies for mapping applications into renderer processes (default: process-per-site-instance) A Site is a registered domain plus a scheme

Pepe Vila Loophole November 22, 2016 10 / 22

slide-21
SLIDE 21

Chrome’s architecture: Shared event loops

Different policies for mapping applications into renderer processes (default: process-per-site-instance) A Site is a registered domain plus a scheme (different than SOP)

Pepe Vila Loophole November 22, 2016 10 / 22

slide-22
SLIDE 22

Chrome’s architecture: Shared event loops

Different policies for mapping applications into renderer processes (default: process-per-site-instance) A Site is a registered domain plus a scheme (different than SOP) Sharing the renderer

◮ When using iframes, linked nagivation or |processes| > T ◮ T = 32 for 4 GB of RAM, and T = 70 for 8 GB or more Pepe Vila Loophole November 22, 2016 10 / 22

slide-23
SLIDE 23

Chrome’s architecture: Shared event loops

Different policies for mapping applications into renderer processes (default: process-per-site-instance) A Site is a registered domain plus a scheme (different than SOP) Sharing the renderer

◮ When using iframes, linked nagivation or |processes| > T ◮ T = 32 for 4 GB of RAM, and T = 70 for 8 GB or more

Sharing the host process

◮ One for all renderers ◮ IPC through I/O thread Pepe Vila Loophole November 22, 2016 10 / 22

slide-24
SLIDE 24

Spying on shared event loops

Main thread of a renderer I/O thread of the host process

Pepe Vila Loophole November 22, 2016 11 / 22

slide-25
SLIDE 25

Spying on shared event loops

Main thread of renderer processes

Pepe Vila Loophole November 22, 2016 12 / 22

slide-26
SLIDE 26

Spying on shared event loops

Main thread of renderer processes

◮ runs resource parsing, style calculation, layout, painting and Javascript ◮ each task blocks the event loop for a while ◮ when 2 pages share the process, the main thread’s event loop is shared ◮ A can eavesdrop information from V ’s tasks Pepe Vila Loophole November 22, 2016 12 / 22

slide-27
SLIDE 27

Spying on shared event loops

Main thread of renderer processes

◮ runs resource parsing, style calculation, layout, painting and Javascript ◮ each task blocks the event loop for a while ◮ when 2 pages share the process, the main thread’s event loop is shared ◮ A can eavesdrop information from V ’s tasks

I/O thread of the host process

◮ manages IPC with all children renderers ◮ demultiplexes all UI events to each corresponding renderer ◮ multiplexes all network requests from renderers ◮ each task/message/event also blocks the event loop Pepe Vila Loophole November 22, 2016 12 / 22

slide-28
SLIDE 28

Spying on shared event loops

Main thread of renderer processes

◮ runs resource parsing, style calculation, layout, painting and Javascript ◮ each task blocks the event loop for a while ◮ when 2 pages share the process, the main thread’s event loop is shared ◮ A can eavesdrop information from V ’s tasks

I/O thread of the host process

◮ manages IPC with all children renderers ◮ demultiplexes all UI events to each corresponding renderer ◮ multiplexes all network requests from renderers ◮ each task/message/event also blocks the event loop

Some tasks are very fast (<< 0.1 ms). We need high timing resolution.

Pepe Vila Loophole November 22, 2016 12 / 22

slide-29
SLIDE 29

Spying on shared event loops: renderer’s main thread

Monitor the event loop from an arbitrary HTML page running Javascript:

function loop () { save( performance .now ()); // high -resolution timestamp

  • self. postMessage (0,’*’); //

recursive invocation } self.onmessage = loop; // set event handler

  • self. postMessage (0,’*’); // post

first async task

Pepe Vila Loophole November 22, 2016 13 / 22

slide-30
SLIDE 30

Spying on shared event loops: renderer’s main thread

Monitor the event loop from an arbitrary HTML page running Javascript:

function loop () { save( performance .now ()); // high -resolution timestamp

  • self. postMessage (0,’*’); //

recursive invocation } self.onmessage = loop; // set event handler

  • self. postMessage (0,’*’); // post

first async task

1 Generates a trace of timing measurements 2 Resolution ≈ 25 µs Pepe Vila Loophole November 22, 2016 13 / 22

slide-31
SLIDE 31

Spying on shared event loops: host’s I/O thread

Monitor the loop from any HTML page running Javascript:

function loop () { save( performance .now ()); fetch(new Request(’http ://0.0.0.0 ’)).catch(loop); } loop ();

Pepe Vila Loophole November 22, 2016 14 / 22

slide-32
SLIDE 32

Spying on shared event loops: host’s I/O thread

Monitor the loop from any HTML page running Javascript:

function loop () { save( performance .now ()); fetch(new Request(’http ://0.0.0.0 ’)).catch(loop); } loop ();

Performs an invalid network request. Task is posted into the I/O event to be processed asynchronously. Fails quick and triggers our “catch” callback.

1 Resolution ≈ 0.5 ms Pepe Vila Loophole November 22, 2016 14 / 22

slide-33
SLIDE 33

Spying on shared event loops: host’s I/O thread

Monitor the loop from any HTML page running Javascript:

function loop () { save( performance .now ()); fetch(new Request(’http ://0.0.0.0 ’)).catch(loop); } loop ();

Performs an invalid network request. Task is posted into the I/O event to be processed asynchronously. Fails quick and triggers our “catch” callback.

1 Resolution ≈ 0.5 ms 2 NEW METHOD: We obtain a resolution of < 0.1 ms! :D Pepe Vila Loophole November 22, 2016 14 / 22

slide-34
SLIDE 34

Attacks

Covert channel Web page fingerprinting User action detection

Pepe Vila Loophole November 22, 2016 15 / 22

slide-35
SLIDE 35

Attacks: covert channel

Covert-channel using timing differences bandwidth of 200 bit/s on same renderer, and 5 bit/s across processes VIDEO: https://www.youtube.com/watch?v=IlndCZmRDmI

Pepe Vila Loophole November 22, 2016 16 / 22

slide-36
SLIDE 36

Attacks: web page fingerprinting

Pepe Vila Loophole November 22, 2016 17 / 22

slide-37
SLIDE 37

Attacks: web page fingerprinting

Dynamic Time Warping Distance metric for time series: X = (x1, ..., xn) and Y = (y1, ..., ym) Robust to horizontal compressions and streches (warping)

Pepe Vila Loophole November 22, 2016 17 / 22

slide-38
SLIDE 38

Attacks: web page fingerprinting

Dynamic Time Warping Distance metric for time series: X = (x1, ..., xn) and Y = (y1, ..., ym) Robust to horizontal compressions and streches (warping) Computes cross-distance matrix: M(i, j) = f (xi, yj) ≥ 0

Pepe Vila Loophole November 22, 2016 17 / 22

slide-39
SLIDE 39

Attacks: web page fingerprinting

Dynamic Time Warping Distance metric for time series: X = (x1, ..., xn) and Y = (y1, ..., ym) Robust to horizontal compressions and streches (warping) Computes cross-distance matrix: M(i, j) = f (xi, yj) ≥ 0 Find optimal alignment φ such that: DTW (X, Y ) = min

φ dφ(X, Y )

Pepe Vila Loophole November 22, 2016 17 / 22

slide-40
SLIDE 40

Attacks: web page fingerprinting

Dynamic Time Warping Distance metric for time series: X = (x1, ..., xn) and Y = (y1, ..., ym) Robust to horizontal compressions and streches (warping) Computes cross-distance matrix: M(i, j) = f (xi, yj) ≥ 0 Find optimal alignment φ such that: DTW (X, Y ) = min

φ dφ(X, Y )

Cost O(n · m) → We use Lemire’s lower bound.

Pepe Vila Loophole November 22, 2016 17 / 22

slide-41
SLIDE 41

Attacks: web page fingerprinting

Figure: Warping matrix with optimal alignment between two time series

Pepe Vila Loophole November 22, 2016 18 / 22

slide-42
SLIDE 42

Attacks: web page fingerprinting

Experiments 500 main pages from Alexa’s Top sites

Pepe Vila Loophole November 22, 2016 19 / 22

slide-43
SLIDE 43

Attacks: web page fingerprinting

Experiments 500 main pages from Alexa’s Top sites 30 traces × page (monitoring main thread) 6 traces × page (monitoring IO thread)

Pepe Vila Loophole November 22, 2016 19 / 22

slide-44
SLIDE 44

Attacks: web page fingerprinting

Experiments 500 main pages from Alexa’s Top sites 30 traces × page (monitoring main thread) 6 traces × page (monitoring IO thread)

  • nly ONE sample for training

Pepe Vila Loophole November 22, 2016 19 / 22

slide-45
SLIDE 45

Attacks: web page fingerprinting

Experiments 500 main pages from Alexa’s Top sites 30 traces × page (monitoring main thread) 6 traces × page (monitoring IO thread)

  • nly ONE sample for training

testing multiple configuration values

Pepe Vila Loophole November 22, 2016 19 / 22

slide-46
SLIDE 46

Attacks: web page fingerprinting

Experiments 500 main pages from Alexa’s Top sites 30 traces × page (monitoring main thread) 6 traces × page (monitoring IO thread)

  • nly ONE sample for training

testing multiple configuration values k-fold cross-validation

Pepe Vila Loophole November 22, 2016 19 / 22

slide-47
SLIDE 47

Attacks: web page fingerprinting

Renderer results: 65%

Figure: Matching rates with best configuration and multiple tolerance

Host process results: 25%

Figure: Matching rates with multiple configurations and tolerance

Pepe Vila Loophole November 22, 2016 20 / 22

slide-48
SLIDE 48

Attacks: user action detection

LoopScan tool for visualizing event loops in real-time “see” mouse movement, scrolling, clicks or keystrokes in other tabs DEMO: http://vwzq.net/lab/ioloop/monitor.html

Pepe Vila Loophole November 22, 2016 21 / 22

slide-49
SLIDE 49

Conclusions

Resource sharing is dangerous It is possible to spy other tabs/pages in the same browser Machine learning is useful for side-channel attacks

Pepe Vila Loophole November 22, 2016 22 / 22

slide-50
SLIDE 50

Conclusions

Resource sharing is dangerous It is possible to spy other tabs/pages in the same browser Machine learning is useful for side-channel attacks Future work:

  • automatize event recognition (online learning)
  • pattern used by ALL modern browsers
  • lots of tecnologies relying on event loops

Pepe Vila Loophole November 22, 2016 22 / 22

slide-51
SLIDE 51

Thank you. Questions?

Pepe Vila Loophole November 22, 2016 22 / 22