practical keystroke timing attacks in sandboxed javascript · • first javascript-based keystroke...

95
Practical Keystroke Timing Attacks in Sandboxed JavaScript M. Lipp , D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard Sep 11, 2017—ESORICS’17 Graz University of Technology

Upload: others

Post on 28-Jul-2020

41 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Practical Keystroke Timing Attacks in SandboxedJavaScript

M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. MangardSep 11, 2017—ESORICS’17

Graz University of Technology

Page 2: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Motivation www.tugraz.at

• Keystroke timing attacks infer typed words, passphrases or create user fingerprints

• Typically require native code execution

• First JavaScript-based keystroke timing attack• Build classifiers to detect visited websites or to identify users and a covert channel• Runs in the background and can monitor on other tabs and applications

2 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 3: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Motivation www.tugraz.at

• Keystroke timing attacks infer typed words, passphrases or create user fingerprints• Typically require native code execution

• First JavaScript-based keystroke timing attack• Build classifiers to detect visited websites or to identify users and a covert channel• Runs in the background and can monitor on other tabs and applications

2 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 4: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Motivation www.tugraz.at

• Keystroke timing attacks infer typed words, passphrases or create user fingerprints• Typically require native code execution

• First JavaScript-based keystroke timing attack

• Build classifiers to detect visited websites or to identify users and a covert channel• Runs in the background and can monitor on other tabs and applications

2 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 5: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Motivation www.tugraz.at

• Keystroke timing attacks infer typed words, passphrases or create user fingerprints• Typically require native code execution

• First JavaScript-based keystroke timing attack• Build classifiers to detect visited websites or to identify users and a covert channel

• Runs in the background and can monitor on other tabs and applications

2 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 6: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Motivation www.tugraz.at

• Keystroke timing attacks infer typed words, passphrases or create user fingerprints• Typically require native code execution

• First JavaScript-based keystroke timing attack• Build classifiers to detect visited websites or to identify users and a covert channel• Runs in the background and can monitor on other tabs and applications

2 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 7: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Background

Page 8: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Keystroke Timing Attacks www.tugraz.at

• Acquire accurate timestamps of keystrokes for input sequences

• Depend on bigrams, syllables, words, keyboard layout and typing experience• Exploit timing characteristics to learn information about the user or the input

• Infer typed sentences• Recover passphrases

3 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 9: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Keystroke Timing Attacks www.tugraz.at

• Acquire accurate timestamps of keystrokes for input sequences• Depend on bigrams, syllables, words, keyboard layout and typing experience

• Exploit timing characteristics to learn information about the user or the input• Infer typed sentences• Recover passphrases

3 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 10: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Keystroke Timing Attacks www.tugraz.at

• Acquire accurate timestamps of keystrokes for input sequences• Depend on bigrams, syllables, words, keyboard layout and typing experience• Exploit timing characteristics to learn information about the user or the input

• Infer typed sentences• Recover passphrases

3 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 11: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Keystroke Timing Attacks www.tugraz.at

• Many ways to obtain keystroke timings have been presented:• SSH leaks inter-keystroke timings in interactive mode [Son+01]• Network latency with significant traffic [Hog+01]• Instruction and stack pointer, interrupt, network packet statistics [Zha+09]• CPU usage [Jan+12]• Wi-Fi Signals [Ali+15]• /proc/interrupts [Dia+16]• JavaScript Sensor API [Meh+16]

4 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 12: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

• Idea: Continuously acquire a high-resolution timestamp and monitor differencesbetween subsequent timestamps [Sch+17]

• Requires unprivileged code execution and an accurate timing source (e.g., rdtsc)

5 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 13: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

• Idea: Continuously acquire a high-resolution timestamp and monitor differencesbetween subsequent timestamps [Sch+17]

• Requires unprivileged code execution and an accurate timing source (e.g., rdtsc)

5 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 14: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

1 int now = rdtsc();2 while (true) {3 int last = now;4 now = rdtsc();5 if ((now - last) > threshold) {6 reportEvent(now, now - last);7 }8 }

• Look at how much time has passed since the last measurement• Significant differences occur when the process is interrupted• More time the operating system consumes to handle the interrupt

→ higher timing difference

6 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 15: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

1 int now = rdtsc();2 while (true) {3 int last = now;4 now = rdtsc();5 if ((now - last) > threshold) {6 reportEvent(now, now - last);7 }8 }

• Look at how much time has passed since the last measurement

• Significant differences occur when the process is interrupted• More time the operating system consumes to handle the interrupt

→ higher timing difference

6 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 16: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

1 int now = rdtsc();2 while (true) {3 int last = now;4 now = rdtsc();5 if ((now - last) > threshold) {6 reportEvent(now, now - last);7 }8 }

• Look at how much time has passed since the last measurement• Significant differences occur when the process is interrupted

• More time the operating system consumes to handle the interrupt→ higher timing difference

6 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 17: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

1 int now = rdtsc();2 while (true) {3 int last = now;4 now = rdtsc();5 if ((now - last) > threshold) {6 reportEvent(now, now - last);7 }8 }

• Look at how much time has passed since the last measurement• Significant differences occur when the process is interrupted• More time the operating system consumes to handle the interrupt

→ higher timing difference

6 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 18: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attacks www.tugraz.at

0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4

·1010

0

1

2 ·105

p a s s w o r d

Runtime [cycles]

Delt

a[c

ycles

]

7 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 19: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Timing Attacks in Sandboxed JavaScript www.tugraz.at

• High Resolution Time API (performance.now)

• Utilized to mount various attacks:• Page deduplication [Gru+15]• Cache attacks [Ore+15]

• W3C standard now recommends a resolution of 5 µs

8 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 20: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Timing Attacks in Sandboxed JavaScript www.tugraz.at

• High Resolution Time API (performance.now)• Utilized to mount various attacks:

• Page deduplication [Gru+15]• Cache attacks [Ore+15]

• W3C standard now recommends a resolution of 5 µs

8 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 21: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Timing Attacks in Sandboxed JavaScript www.tugraz.at

• High Resolution Time API (performance.now)• Utilized to mount various attacks:

• Page deduplication [Gru+15]• Cache attacks [Ore+15]

• W3C standard now recommends a resolution of 5 µs

8 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 22: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Sandboxed Keystroke TimingAttacks without High-ResolutionTimers

Page 23: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Sandboxed Keystroke Timing Attacks w/o High-Resolution Timers www.tugraz.at

• Two phases:

• Online phase: Acquire timing traces• Offline phase: Post-processing and evaluation

9 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 24: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Sandboxed Keystroke Timing Attacks w/o High-Resolution Timers www.tugraz.at

• Two phases:• Online phase: Acquire timing traces

• Offline phase: Post-processing and evaluation

9 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 25: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Sandboxed Keystroke Timing Attacks w/o High-Resolution Timers www.tugraz.at

• Two phases:• Online phase: Acquire timing traces• Offline phase: Post-processing and evaluation

9 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 26: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• How can we mount the attack in JavaScript?

• Native instruction (rdtsc) not available• performance.now limited resolution

• Implement a monotonic clock• Constantly increment a value• Number of increments is proportional to the time the function is scheduled

• Interrupt → lower increments

10 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 27: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• How can we mount the attack in JavaScript?• Native instruction (rdtsc) not available

• performance.now limited resolution

• Implement a monotonic clock• Constantly increment a value• Number of increments is proportional to the time the function is scheduled

• Interrupt → lower increments

10 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 28: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• How can we mount the attack in JavaScript?• Native instruction (rdtsc) not available• performance.now limited resolution

• Implement a monotonic clock• Constantly increment a value• Number of increments is proportional to the time the function is scheduled

• Interrupt → lower increments

10 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 29: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• How can we mount the attack in JavaScript?• Native instruction (rdtsc) not available• performance.now limited resolution

• Implement a monotonic clock

• Constantly increment a value• Number of increments is proportional to the time the function is scheduled

• Interrupt → lower increments

10 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 30: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• How can we mount the attack in JavaScript?• Native instruction (rdtsc) not available• performance.now limited resolution

• Implement a monotonic clock• Constantly increment a value

• Number of increments is proportional to the time the function is scheduled• Interrupt → lower increments

10 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 31: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• How can we mount the attack in JavaScript?• Native instruction (rdtsc) not available• performance.now limited resolution

• Implement a monotonic clock• Constantly increment a value• Number of increments is proportional to the time the function is scheduled

• Interrupt → lower increments

10 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 32: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• Single-threaded event loop

• Browsers do not allow endless loops and warn the user• setTimeout/setInterval enforce a minimum pause of 4 ms

11 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 33: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• Single-threaded event loop• Browsers do not allow endless loops and warn the user

• setTimeout/setInterval enforce a minimum pause of 4 ms

11 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 34: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Online phase www.tugraz.at

• Single-threaded event loop• Browsers do not allow endless loops and warn the user• setTimeout/setInterval enforce a minimum pause of 4 ms

11 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 35: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops

• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms• The next slice of the loop is executed immediately after the current slice• Higher priority events (user inputs) can still be processed → browser remains

responsive• Minimum timeout is reduced to 1000 ms if the user switches the tab

• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 36: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms• The next slice of the loop is executed immediately after the current slice• Higher priority events (user inputs) can still be processed → browser remains

responsive• Minimum timeout is reduced to 1000 ms if the user switches the tab

• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 37: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms

• The next slice of the loop is executed immediately after the current slice• Higher priority events (user inputs) can still be processed → browser remains

responsive• Minimum timeout is reduced to 1000 ms if the user switches the tab

• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 38: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms• The next slice of the loop is executed immediately after the current slice

• Higher priority events (user inputs) can still be processed → browser remainsresponsive

• Minimum timeout is reduced to 1000 ms if the user switches the tab• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 39: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms• The next slice of the loop is executed immediately after the current slice• Higher priority events (user inputs) can still be processed → browser remains

responsive

• Minimum timeout is reduced to 1000 ms if the user switches the tab• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 40: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms• The next slice of the loop is executed immediately after the current slice• Higher priority events (user inputs) can still be processed → browser remains

responsive• Minimum timeout is reduced to 1000 ms if the user switches the tab

• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 41: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

• Slice endless loop into smaller finite loops• Every loop as an execution time of ∼4 ms

• Before running the loop, we schedule the next loop with a timeout of 4 ms• The next slice of the loop is executed immediately after the current slice• Higher priority events (user inputs) can still be processed → browser remains

responsive• Minimum timeout is reduced to 1000 ms if the user switches the tab

• Utilize Web Worker API to execute code in background

12 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 42: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

1 function measure_time(id) {2 setTimeout(measure_time, 0, id + 1);3 counter = 0;4 begin = window.performance.now();5 while ((window.performance.now() - begin) < 5) {6 counter = counter + 1;7 }8 publish(id, counter);9 }

• Low impact on the system and browser performance• Less than 256 bytes of code• Can be hidden in modern JavaScript frameworks or online advertisements

13 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 43: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

1 function measure_time(id) {2 setTimeout(measure_time, 0, id + 1);3 counter = 0;4 begin = window.performance.now();5 while ((window.performance.now() - begin) < 5) {6 counter = counter + 1;7 }8 publish(id, counter);9 }

• Low impact on the system and browser performance

• Less than 256 bytes of code• Can be hidden in modern JavaScript frameworks or online advertisements

13 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 44: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

1 function measure_time(id) {2 setTimeout(measure_time, 0, id + 1);3 counter = 0;4 begin = window.performance.now();5 while ((window.performance.now() - begin) < 5) {6 counter = counter + 1;7 }8 publish(id, counter);9 }

• Low impact on the system and browser performance• Less than 256 bytes of code

• Can be hidden in modern JavaScript frameworks or online advertisements

13 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 45: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Cooperative endless-loop slicing www.tugraz.at

1 function measure_time(id) {2 setTimeout(measure_time, 0, id + 1);3 counter = 0;4 begin = window.performance.now();5 while ((window.performance.now() - begin) < 5) {6 counter = counter + 1;7 }8 publish(id, counter);9 }

• Low impact on the system and browser performance• Less than 256 bytes of code• Can be hidden in modern JavaScript frameworks or online advertisements

13 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 46: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Interrupt-timing Attack in JavaScript www.tugraz.at

6 ·10−28 ·10−2 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36

1.26

1.28

1.3

·105

y a h o o . c o m

Runtime [s]

Delt

a[c

ount

er]

14 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 47: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Offline phase www.tugraz.at

• Process and analyze traces of the online phase

• Filter the measured trace to reduce noise• Detect threshold for keystroke events

• Features of recorded measurements are strong enough that simple techniques(k-nearest neighbours (KNN)) allow to build an efficient and accurate classifier

15 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 48: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Offline phase www.tugraz.at

• Process and analyze traces of the online phase• Filter the measured trace to reduce noise

• Detect threshold for keystroke events

• Features of recorded measurements are strong enough that simple techniques(k-nearest neighbours (KNN)) allow to build an efficient and accurate classifier

15 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 49: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Offline phase www.tugraz.at

• Process and analyze traces of the online phase• Filter the measured trace to reduce noise• Detect threshold for keystroke events

• Features of recorded measurements are strong enough that simple techniques(k-nearest neighbours (KNN)) allow to build an efficient and accurate classifier

15 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 50: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Offline phase www.tugraz.at

• Process and analyze traces of the online phase• Filter the measured trace to reduce noise• Detect threshold for keystroke events

• Features of recorded measurements are strong enough that simple techniques(k-nearest neighbours (KNN)) allow to build an efficient and accurate classifier

15 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 51: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Practical Attacks and Evaluation

Page 52: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

URL Classification www.tugraz.at

• Infer URLs a user enters into the browsers address bar• Intel i7-6700K and Firefox 52.0

• Train a classifier with the input sequences of the top 10 most visited websites

16 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 53: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

URL Classification www.tugraz.at

• Infer URLs a user enters into the browsers address bar• Intel i7-6700K and Firefox 52.0

• Train a classifier with the input sequences of the top 10 most visited websites

16 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 54: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

URL Classification www.tugraz.at

• Small timing variations when the user starts typing and whenever the user pressesa key

• Compute the correlation for different alignments• Evaluate classifier using k-fold cross-validation

17 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 55: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

URL Classification www.tugraz.at

• Small timing variations when the user starts typing and whenever the user pressesa key

• Compute the correlation for different alignments

• Evaluate classifier using k-fold cross-validation

17 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 56: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

URL Classification www.tugraz.at

• Small timing variations when the user starts typing and whenever the user pressesa key

• Compute the correlation for different alignments• Evaluate classifier using k-fold cross-validation

17 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 57: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

URL Classification www.tugraz.at

amazo

n.com

baidu.

com

facebo

ok.com

google

.co.in

google

.co.jp

google

.comqq.

com

wikipedi

a.org

yahoo.

com

youtub

e.com

youtube.comyahoo.com

wikipedia.orgqq.com

google.comgoogle.co.jpgoogle.co.in

facebook.combaidu.com

amazon.com

0.00 0.03 0.00 0.00 0.02 0.08 0.05 0.00 0.09 0.73

0.00 0.01 0.00 0.00 0.00 0.03 0.01 0.00 0.92 0.03

0.02 0.04 0.10 0.06 0.05 0.02 0.02 0.69 0.00 0.00

0.00 0.00 0.00 0.00 0.00 0.02 0.96 0.00 0.01 0.01

0.00 0.00 0.03 0.00 0.01 0.86 0.06 0.00 0.02 0.02

0.00 0.01 0.00 0.09 0.73 0.08 0.00 0.06 0.02 0.01

0.03 0.04 0.02 0.67 0.06 0.03 0.02 0.07 0.02 0.04

0.04 0.02 0.72 0.02 0.00 0.05 0.01 0.10 0.04 0.00

0.00 0.84 0.03 0.05 0.02 0.00 0.03 0.01 0.00 0.02

0.81 0.04 0.01 0.04 0.02 0.03 0.03 0.02 0.00 0.00

Predicted URL

Actu

alUR

L

Figure 1: Confusion matrix for URL input.

18 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 58: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

User Classification www.tugraz.at

P1 P2 P3 P4

P4P3P2P1

0.30 0.03 0.23 0.43

0.37 0.00 0.53 0.10

0.27 0.47 0.17 0.10

0.47 0.13 0.20 0.20

Predicted User

Actu

alUs

erFigure 2: Confusion matrix for input by different users.

19 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 59: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Touchscreen Interactions www.tugraz.at

• Evaluate attack on mobile devices

20 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 60: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Touchscreen Interactions www.tugraz.at

0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7

2,000

3,000

4,000

tap tap swipe tap

Runtime [s]

Delt

a[c

ount

er]

Figure 3: Keystroke timing attack running in a native app on the Google Nexus 5.

21 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 61: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Touchscreen Interactions www.tugraz.at

0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.50

1,000

2,000

tap tap swipe tap

Runtime [s]

Delt

a[c

ount

er]

Figure 4: Keystroke timing attack running in JavaScript on the Google Nexus 5.

22 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 62: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Touchscreen Interactions www.tugraz.at

0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.93,000

3,500

4,000

4,500

tap tap swipe tap

Runtime [s]

Delt

a[c

ount

er]

Figure 5: Keystroke timing attack running in JavaScript on the Xiaomi Redmi Note 3.

23 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 63: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Spying on other applications and PIN unlock www.tugraz.at

• Attack allows monitoring of every other event triggering interrupts

• Allows to monitor keystrokes in different tabs and other applications

24 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 64: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Spying on other applications and PIN unlock www.tugraz.at

• Attack allows monitoring of every other event triggering interrupts• Allows to monitor keystrokes in different tabs and other applications

24 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 65: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Keystroke timing attack on different tab www.tugraz.at

0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

2,000

4,000

6,000

8,000

10,000tap menu

redraw

new tab

redraw

tap swipe tap switch tab

redraw

select tab

redraw

activate tab

redraw

incognito tab

Runtime [s]

Delt

a[c

ount

er]

Figure 6: Keystroke timing attack running while switching to a different tab in the Chromebrowser on the Xiaomi Redmi Note 3.

25 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 66: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

PIN input www.tugraz.at

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2

0

5,000

10,000

screen off

redraw

slide 1 2 3 4

redraw

tap

Runtime [s]

Delt

a[c

ount

er]

Figure 7: Keystroke timing attack running in the Firefox browser on the Xiaomi Redmi Note3. While the user locked the screen, the application still detects keystrokes as long as it isexecuted on the last used tab.

26 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 67: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Touchscreen Interactions www.tugraz.at

Device SoC Keystrokes Screen lock

Google Nexus 5 Qualcomm MSM8974 Snapdragon 800 3 -Xiaomi Redmi Note 3 Mediatek MT6795 Helio X10 3 3

Homtom HT3 MediaTek MTK6580 3 3

Samsung Galaxy S6 Samsung Exynos 7420 - 3

OnePlus One Qualcomm MSM8974AC Snapdragon 801 3 3

OnePlus 3T Qualcomm MSM8996 Snapdragon 821 - -

Table 1: Mobile test devices.

27 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 68: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Establish a unidirectional covert channel

• Sending a 1: Issue interrupt• Sending a 0: Idle

• Utilize XMLHttpRequest to fetch a network resource from an invalid URL toimplicitly issue an interrupt

28 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 69: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Establish a unidirectional covert channel• Sending a 1: Issue interrupt

• Sending a 0: Idle

• Utilize XMLHttpRequest to fetch a network resource from an invalid URL toimplicitly issue an interrupt

28 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 70: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Establish a unidirectional covert channel• Sending a 1: Issue interrupt• Sending a 0: Idle

• Utilize XMLHttpRequest to fetch a network resource from an invalid URL toimplicitly issue an interrupt

28 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 71: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Establish a unidirectional covert channel• Sending a 1: Issue interrupt• Sending a 0: Idle

• Utilize XMLHttpRequest to fetch a network resource from an invalid URL toimplicitly issue an interrupt

28 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 72: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab

• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 73: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)

• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 74: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 75: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser

• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 76: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy

• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 77: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome

• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 78: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 79: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Covert channel www.tugraz.at

• Cross-tab• Breaks Same-Origin policy (SOP)• Breaks HTTP Strict Transport Security (HSTS) policy

• Cross-browser• Circumvents process-per-site or process-per-tab policy• Transmission from Firefox to Chrome• Established with browsers running in incognito mode

• Transmission rate• Raw transmission rate of 25 bps using a sample interval of 40 ms

29 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 80: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures

Page 81: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures• Inject phantom keystrokes that will be intercepted by malware [Mye17]• Analyze the statistical properties of noise necessary to impede real keystroke

detection [Ort12]• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 82: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures

• Inject phantom keystrokes that will be intercepted by malware [Mye17]• Analyze the statistical properties of noise necessary to impede real keystroke

detection [Ort12]• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 83: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures• Inject phantom keystrokes that will be intercepted by malware [Mye17]

• Analyze the statistical properties of noise necessary to impede real keystrokedetection [Ort12]

• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 84: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures• Inject phantom keystrokes that will be intercepted by malware [Mye17]• Analyze the statistical properties of noise necessary to impede real keystroke

detection [Ort12]

• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 85: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures• Inject phantom keystrokes that will be intercepted by malware [Mye17]• Analyze the statistical properties of noise necessary to impede real keystroke

detection [Ort12]• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 86: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures• Inject phantom keystrokes that will be intercepted by malware [Mye17]• Analyze the statistical properties of noise necessary to impede real keystroke

detection [Ort12]• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript

• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 87: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Countermeasures www.tugraz.at

• Generic Countermeasures• Inject phantom keystrokes that will be intercepted by malware [Mye17]• Analyze the statistical properties of noise necessary to impede real keystroke

detection [Ort12]• Do not prevent interrupt-timing attacks

• Fine-grained Permission Model for JavaScript• Per-page level access control to APIs, e.g., web workers

30 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 88: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion

Page 89: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion www.tugraz.at

• First JavaScript-based keystroke timing attack• independent of browser and operating system

• Infer accurate timestamps of keystrokes as well as taps and swipes• Built classifiers to detect visited websites and identify users and a covert channel• Highly practical, as it runs in background to spy on other tabs and applications

31 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 90: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion www.tugraz.at

• First JavaScript-based keystroke timing attack

• independent of browser and operating system

• Infer accurate timestamps of keystrokes as well as taps and swipes• Built classifiers to detect visited websites and identify users and a covert channel• Highly practical, as it runs in background to spy on other tabs and applications

31 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 91: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion www.tugraz.at

• First JavaScript-based keystroke timing attack• independent of browser and operating system

• Infer accurate timestamps of keystrokes as well as taps and swipes• Built classifiers to detect visited websites and identify users and a covert channel• Highly practical, as it runs in background to spy on other tabs and applications

31 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 92: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion www.tugraz.at

• First JavaScript-based keystroke timing attack• independent of browser and operating system

• Infer accurate timestamps of keystrokes as well as taps and swipes

• Built classifiers to detect visited websites and identify users and a covert channel• Highly practical, as it runs in background to spy on other tabs and applications

31 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 93: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion www.tugraz.at

• First JavaScript-based keystroke timing attack• independent of browser and operating system

• Infer accurate timestamps of keystrokes as well as taps and swipes• Built classifiers to detect visited websites and identify users and a covert channel

• Highly practical, as it runs in background to spy on other tabs and applications

31 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 94: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Conclusion www.tugraz.at

• First JavaScript-based keystroke timing attack• independent of browser and operating system

• Infer accurate timestamps of keystrokes as well as taps and swipes• Built classifiers to detect visited websites and identify users and a covert channel• Highly practical, as it runs in background to spy on other tabs and applications

31 M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. Mangard | Graz University of Technology

Page 95: Practical Keystroke Timing Attacks in Sandboxed JavaScript · • First JavaScript-based keystroke timing attack • Build classifiers to detect visited websites or to identify users

Practical Keystroke Timing Attacks in SandboxedJavaScript

M. Lipp, D. Gruss, M. Schwarz, D. Bidner, C. Maurice, S. MangardSep 11, 2017—ESORICS’17

Graz University of Technology