trusted browsers for uncertain times
play

Trusted Browsers for Uncertain Times David Kohlbrenner and Hovav - PowerPoint PPT Presentation

Trusted Browsers for Uncertain Times David Kohlbrenner and Hovav Shacham UC San Diego Building a browser that can provably mitigate timing attacks Trusted Browsers Time and web browsers Mitigating attacks for A trusted browser


  1. Trusted Browsers for Uncertain Times David Kohlbrenner and Hovav Shacham UC San Diego

  2. Building a browser that can provably mitigate timing attacks

  3. Trusted Browsers Time and web browsers ● Mitigating attacks ● for A trusted browser ● Uncertain Times A (less) trusted browser ●

  4. Time and web browsers ● Mitigating attacks ● Timing attacks A trusted browser ● A (less) trusted browser ●

  5. Browsers and timing attacks Browser has multiple privilege levels ● User secrets ○ ○ System secrets Origin secrets ○ ● Browsers expose detailed information performance.now() ○ getAnimationFrame() ○ Browsers compute and communicate between levels ●

  6. Timing attacks in web browsers SVG Filter cross-origin pixel stealing ● ● JavaScript cache timing attacks Fingerprinting ● ● History Sniffing

  7. What is being done about it? - SVG attack

  8. What is being done about it? - Cache attack

  9. What is being done about it? - Cache attack

  10. Unfortunately, this doesn’t work.

  11. Better clocks Time and web browsers ● Mitigating attacks ● with edges A trusted browser ● A (less) trusted browser ●

  12. Rounding down the clock

  13. Clock-edge technique

  14. Clock-edge technique - performance.now()

  15. Clock-edge technique - performance.now()

  16. Implicit clocks Time and web browsers ● Mitigating attacks ● in the browser A trusted browser ● A (less) trusted browser ●

  17. Implicit clocks - Techniques <video> frames ● Web Speech ● ● <video> played ● setTimeout() CSS Animations ● WebVTT API ● ● XHRs with cooperating server

  18. Implicit clocks - Techniques <video> frames ● Web Speech ● ● <video> played ● setTimeout() CSS Animations ● WebVTT API ● ● XHRs with cooperating server Probably many many more!

  19. Implicit clocks - WebVTT Subtitles for <video> elements ● ● Specified in a .vtt file WEBVTT ○ 00:00:00.000 --> 00:00:00.001 A very short duration subtitle Specifies arbitrary subtitles with 1ms granularity ● track.activeCues returns all displayed subtitles ●

  20. Implicit clocks - WebVTT

  21. Implicit clocks - WebVTT and clock-edge

  22. How to mitigate Time and web browsers ● Mitigating attacks ● timing attacks A trusted browser ● A (less) trusted browser ●

  23. Degrade all clocks available to the attacker.

  24. Fuzzy time for the VAX security kernel “[ A ] collection of techniques that reduces the bandwidths of covert timing ● channels by making all clocks available to a process noisy.” “Reducing Timing Channels with Fuzzy Time” ● ○ Hu at Oakland 1991!

  25. Covert channels Two clocks ● ● Modulated The channel ○ Reference ● Wall clock, etc ○

  26. Fuzzy time for the VAX security kernel VAX VMM ● ○ Single thread per VM Clean VM interface ○ All I/O is asynchronous ●

  27. Fuzzy time - Problem Ineffective countermeasures to disk covert channel ● ○ Cannot be closed Not auditable ○ Added noise impractical ○ No hardware solution ○ ● Plenty of other potential ‘shared buses’

  28. Fuzzy time - Solution “reduce the accuracy and precision of system clocks” ● ● “randomly alter the timings of I/O operations”

  29. Fuzzy time - Solution Explicit clocks ● ○ “make the interval-timer interrupt random”

  30. Fuzzy time - Solution Explicit clocks ● ○ “make the interval-timer interrupt random”

  31. Fuzzy time - Solution Explicit clocks ● ○ “make the interval-timer interrupt random” Implicit clocks ● “[use] random clock ticks … to make fuzzy the clocks derived ○ from I/O operations” “Add new buffers … for all I/O operations” ○

  32. Fuzzy time - Solution guarantees Degraded clocks ● Limit the bandwidth ○ Time granularity ● g ○ Bounded channel bandwidth ● For any timing covert channel ○ ~ ○

  33. Fuzzy time - I/O queuing Response queue Currently queued Active Active Active Next queue Todo

  34. Fuzzy time - I/O queuing Response queue Currently queued Active Active Active Next queue Todo Todo

  35. Fuzzy time - I/O queuing Response queue Currently queued Active Active Active Next queue Todo Todo

  36. Fuzzy time - I/O queuing Response queue Currently queued Done Active Active Todo Next queue Todo Todo

  37. Fuzzy time - I/O queuing Response queue Currently queued Done Done Active Todo Todo Next queue Todo Todo

  38. Fuzzy time - I/O queuing Response queue Currently queued Done Done Active Active Active Todo Todo Next queue Todo Todo

  39. Fuzzy time - I/O queuing Response queue Currently queued Done Done Active Active Active Todo Todo Next queue

  40. Fuzzy time - I/O queuing Response queue Currently queued Done Done Active Active Active Todo Todo Next queue

  41. Fuzzy time - I/O queuing Response queue Currently queued Done Done Active Active Active Next queue

  42. Time and web browsers ● Mitigating attacks ● Fermata A trusted browser ● A (less) trusted browser ●

  43. Fermata - Why adapt fuzzy time? Degrade clocks ● Slow down attacks ○ Verifiability ● ● Browsers are uniquely well suited

  44. Fermata - Fuzzy time for browsers Adapt the VAX fuzzy time model to JS etc! ● ● Put all I/O operations into queues Make all the explicit clocks fuzzy ● h t i w ! ● Prove everything falls into a fuzzy time defense t p t i u r c B S a v a J

  45. Fermata - Fuzzy time for browsers Adapt the VAX fuzzy time model to JS etc! ● ● Put all I/O operations into queues Make all the explicit clocks fuzzy ● h t i w ! ● Prove everything falls into a fuzzy time defense t p t i u r c B S a v Change all DOM accesses to be asynchronous! ● a J

  46. Time and web browsers ● Mitigating attacks ● Fuzzyfox A trusted browser ● Rationale and design A (less) trusted browser ●

  47. Why we didn’t build Fermata 1. We didn’t know if it would work 2. We didn’t know what to start with 3. We want to push mitigations to real browsers

  48. Fuzzyfox Patch set on trunk Mozilla Firefox ● ● Supports multiple clock granularities Tested 0.5ms to 100ms ○ Fully fuzzes explicit clocks ● Breaks main thread into ‘ticks’ ● Delays outgoing HTTP request start ●

  49. Fuzzyfox - Main thread queuing Current queue Next queue

  50. Fuzzyfox - Main thread queuing Current queue Done Done Active Todo Todo Next queue Todo Todo

  51. Fuzzyfox - Main thread queuing Current queue Done Done Active Todo Todo Next queue Todo Todo Todo

  52. Fuzzyfox - Main thread queuing Current queue Done Done Active Todo Todo Next queue Todo Todo Todo

  53. Fuzzyfox - Main thread queuing Current queue Done Done Active Todo Todo Pause Next queue Todo Todo Todo

  54. Fuzzyfox - Main thread queuing Current queue Next queue Done Done Active Todo Todo Pause Todo Todo Todo

  55. Fuzzyfox - Main thread queuing Current queue Done Done Active Todo Todo Pause Todo Todo Todo

  56. Fuzzyfox - Main thread queuing Current queue Done Done Done Active Todo Pause Todo Todo Todo

  57. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Active Pause Todo Todo Todo Todo

  58. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Done Pause Todo Todo Todo Todo

  59. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Done Pause Todo Todo Todo Todo Pause

  60. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Done Pause Active Todo Todo Todo Pause

  61. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Done Pause Done Active Todo Todo Pause Todo

  62. Fuzzyfox - Main thread queuing Queue 1 Done Done Done Done Done Pause Queue 2 Done Active Todo Todo Pause Queue 3 Todo

  63. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Done Pause Done Active Todo Todo Pause Todo Epoch Epoch Epoch

  64. Fuzzyfox - Main thread queuing Current queue Done Done Done Done Done Pause Done Active Todo Todo Pause Todo Epoch Epoch Epoch

  65. Fuzzyfox - Main thread queuing ● Sleep Update clocks ● ● Flush queues Schedule next pause ● Current queue Done Done Done Done Done Pause Done Active Todo Todo Pause Todo Epoch Epoch Epoch

  66. Time and web browsers ● Mitigating attacks ● Fuzzyfox A trusted browser ● Effectiveness A (less) trusted browser ●

  67. Fuzzyfox - Effectiveness - Explicit - performance.now() Firefox Fuzzyfox

  68. Fuzzyfox - Effectiveness - Implicit - WebVTT clock Firefox Fuzzyfox

  69. Time and web browsers ● Mitigating attacks ● Fuzzyfox A trusted browser ● Performance A (less) trusted browser ●

  70. Fuzzyfox - Performance “Micro” performance ● Synthetic microbenchmark page load times ○ ● “Macro” performance Real website load times ○ Interactivity ● User study ○

Recommend


More recommend