over the edge silently owning windows 10 s secure browser
play

Over the Edge: Silently Owning Windows 10's Secure Browser Erik - PowerPoint PPT Presentation

Over the Edge: Silently Owning Windows 10's Secure Browser Erik Bosman , Kaveh Razavi, Herbert Bos and Cristiano Giu ff rida This presentation: Deduplication (software side-channel) 1 This presentation: Deduplication (software side-channel)


  1. Over the Edge: Silently Owning Windows 10's Secure Browser Erik Bosman , Kaveh Razavi, Herbert Bos and Cristiano Giu ff rida

  2. This presentation: Deduplication (software side-channel) 1

  3. This presentation: Deduplication (software side-channel) + Rowhammer (hardware bug) 1

  4. This presentation: Deduplication (software side-channel) + Rowhammer (hardware bug) Exploit MS Edge without software bugs (from JavaScript) 1

  5. This presentation: Deduplication (software side-channel) + Rowhammer a n i h c (hardware bug) a M t s e p u d e D Exploit MS Edge without software bugs (from JavaScript) 1

  6. Outline: Deduplication - leak heap & code addresses JavaScript Array +0.0 +3.141592 42. 1 NaN 2

  7. Outline: Deduplication - leak heap & code addresses chakra.dll JavaScript Array +0.0 +3.141592 42. 1 NaN 2

  8. Outline: Deduplication - leak heap & code addresses - create a fake object 2

  9. Outline: Deduplication - leak heap & code addresses - create a fake object Rowhammer - create reference to our fake object 2

  10. Outline: Deduplication - leak heap & code addresses - create a fake object Rowhammer - create reference to our fake object 2

  11. memory deduplication A method of reducing memory usage. Used in virtualisation environments, (was) also enabled by default on Windows 8.1 and 10. 3

  12. memory deduplication physical memory process A process B 4

  13. memory deduplication physical memory process A process B 4

  14. memory deduplication physical memory process A process B 4

  15. memory deduplication physical memory process A process B 4

  16. memory deduplication physical memory process A process B 4

  17. memory deduplication physical memory process A * * * * * * * * * * * * * * process B * * * * * * * * * * * * * 4

  18. memory deduplication: The Problem Deduplicated memory does not need to have the same origin. (unlike fork(), file-backed memory) An attacker can use deduplication as a side-channel 5

  19. deduplication side-channel attack normal write 6

  20. deduplication side-channel attack normal write write 6

  21. deduplication side-channel attack normal write write copy on write (due to deduplication) * 6

  22. deduplication side-channel attack normal write write copy on write (due to deduplication) * trap to kernel 6

  23. deduplication side-channel attack normal write write copy on write (due to deduplication) * trap copy to whole kernel page 6

  24. deduplication side-channel attack normal write write copy on write (due to deduplication) * trap copy update to whole page kernel page tables 6

  25. deduplication side-channel attack normal write write copy on write (due to deduplication) * trap copy update return to whole page from kernel page tables kernel 6

  26. deduplication side-channel attack normal write write copy on write (due to deduplication) * trap copy update return to whole page from write kernel page tables kernel 6

  27. deduplication side-channel attack A 1-bit side channel which is able to leak data across security boundaries - cross VM - cross-process - leak process data from javascript code 7

  28. having fun with deduplication - covert channel 8

  29. having fun with deduplication - covert channel - detect running software 9

  30. Wordpad memory dump wordpad not running 10

  31. Wordpad memory dump wordpad not running 10

  32. Wordpad memory dump wordpad running 11

  33. Wordpad memory dump wordpad running 11

  34. Signal not as clear as expected, Reason: file backed memory not deduplicated the same way on Windows. 12

  35. Skype memory dump skype not running 13

  36. Skype memory dump skype not running 13

  37. Skype memory dump skype running 14

  38. Skype memory dump skype running 14

  39. For our Edge exploit, a single-bit, page-granularity info leak isn't enough 15

  40. Can we generalize this to leaking arbitrary data, like an ASLR pointer or a password? 16

  41. Challenge 1: The secret we want to leak does not span an entire page. 17

  42. turning a secret into a page secret 18

  43. turning a secret into a page known data secret secret page 18

  44. Challenge 2: The secret we want to leak has too much entropy to leak all at once. 19

  45. primitive #1: alignment probing known data secret secret page 20

  46. primitive #1: alignment probing known data secret secret page 20

  47. primitive #2: partial reuse known data secret secret page 21

  48. primitive #2: partial reuse known data secret secret page 21

  49. Outline: Deduplication - leak heap & code addresses chakra.dll 22

  50. JIT function epilogue (MS Edge) secret mov RCX,0x1c20 mov RAX, [code address] jmp RAX trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap ... known data 23

  51. JIT function epilogue (MS Edge) page mov RCX,0x1c20 mov RAX, [code address] jmp RAX trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap 24

  52. JIT function epilogue (MS Edge) page mov RCX,0x1c20 mov RAX, [code address] jmp RAX trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap trap 24

  53. Outline: Deduplication - leak heap & code addresses chakra.dll 25

  54. Outline: Deduplication - leak heap & code addresses chakra.dll JavaScript Array +0.0 +3.141592 42. 1 NaN 25

  55. We were not able to create pages leaking only part of our heap pointer. 25

  56. Heap pointer entropy in Edge 0x5F48143540 26

  57. Heap pointer entropy in Edge advertised ASLR (24 bit) 0x5F48143540 26

  58. Heap pointer entropy in Edge advertised ASLR (24 bit) 0x5F48143540 non-deterministic bits (+/- 36 bit) 26

  59. Heap pointer entropy in Edge 64G advertised ASLR (24 bit) 0x5F48143540 non-deterministic bits (+/- 36 bit) 26

  60. Heap pointer entropy in Edge 64G advertised ASLR (24 bit) 0x5F48143540 256T non-deterministic bits (+/- 36 bit) 26

  61. Heap pointer entropy in Edge 64G * redundancy advertised ASLR (24 bit) 0x5F48143540 256T non-deterministic bits * redundancy (+/- 36 bit) 26

  62. Slab allocator for JavaScript objects array object 27

  63. Slab allocator for JavaScript objects array array object data 27

  64. Slab allocator for JavaScript objects array array object data Allocated together 27

  65. Slab allocator for JavaScript objects array (almost) object arbirary data Allocated together 27

  66. Slab allocator for JavaScript objects 16K slab 28

  67. Slab allocator for JavaScript objects ... 1M VirtualAlloc() 28

  68. Slab allocator for JavaScript objects 1st after VirtualAlloc() call ... 1M VirtualAlloc() 28

  69. Slab allocator for JavaScript objects 29

  70. Slab allocator for JavaScript objects potential 1M aligned objects 29

  71. Slab allocator for JavaScript objects potential 1M aligned objects 29

  72. Slab allocator for JavaScript objects potential 1M aligned objects 29

  73. Heap pointer entropy in Edge 64G * redundancy advertised ASLR (24 bit) 0x5F48143540 256T non-deterministic bits * redundancy (+/- 36 bit) 30

  74. Heap pointer entropy in Edge 64G * redundancy advertised ASLR (24 bit) 0x5F48100000 entropy after 1MB alignment (20 bit) 30

  75. Heap pointer entropy in Edge 64G * redundancy advertised ASLR (24 bit) 0x5F48100000 4G entropy after 1MB alignment * redundancy (20 bit) 30

  76. birthday problem 31

  77. birthday problem 31

  78. birthday problem 31

  79. birthday problem 31

  80. birthday problem 31

  81. birthday problem 31

  82. birthday problem 31

  83. birthday problem 31

  84. birthday problem 31

  85. birthday problem 31

  86. birthday problem 31

  87. birthday problem 31

  88. birthday problem 31

  89. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  90. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  91. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  92. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  93. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  94. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  95. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  96. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  97. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

  98. primitive #3: birthday heapspray physical memory attacker memory victim memory 32

Recommend


More recommend