Over the Edge: Silently Owning Windows 10's Secure Browser
Erik Bosman, Kaveh Razavi, Herbert Bos and Cristiano Giuffrida
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)
Erik Bosman, Kaveh Razavi, Herbert Bos and Cristiano Giuffrida
1
1
1
D e d u p e s t M a c h i n a
1
+3.141592 +0.0 42. 1 NaN
JavaScript Array
2
+3.141592 +0.0 42. 1 NaN
JavaScript Array chakra.dll
2
2
2
2
3
physical memory process A process B
4
physical memory process A process B
4
physical memory process A process B
4
physical memory process A process B
4
physical memory process A process B
4
physical memory process A process B * * * * * * * * * * * * * * * * * * * * * * * * * * *
4
5
normal write
6
normal write write
6
normal write copy on write (due to deduplication) write
6
normal write copy on write (due to deduplication) write trap to kernel
6
normal write copy on write (due to deduplication) write trap to kernel copy whole page
6
normal write copy on write (due to deduplication) write trap to kernel copy whole page update page tables
6
normal write copy on write (due to deduplication) write trap to kernel copy whole page update page tables return from kernel
6
normal write copy on write (due to deduplication) write trap to kernel copy whole page update page tables return from kernel write
6
7
8
9
10
10
11
11
12
13
13
14
14
15
16
17
18
18
19
20
20
21
21
chakra.dll
22
mov RCX,0x1c20 mov RAX, [code address] jmp RAX trap trap trap trap trap trap trap ... trap trap trap trap trap trap trap trap
secret
23
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
page
24
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
page
24
chakra.dll
25
+3.141592 +0.0 42. 1 NaN
JavaScript Array chakra.dll
25
25
26
26
26
26
26
* redundancy * redundancy
26
array
27
array
array data
27
array
array data Allocated together
27
array
(almost) arbirary data Allocated together
27
16K slab
28
1M VirtualAlloc() ...
28
1M VirtualAlloc() ...
1st after VirtualAlloc() call
28
29
potential 1M aligned objects
29
potential 1M aligned objects
29
potential 1M aligned objects
29
* redundancy * redundancy
30
* redundancy
30
* redundancy * redundancy
30
31
31
31
31
31
31
31
31
31
31
31
31
31
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory victim memory
32
physical memory attacker memory * victim memory *
32
1M Aligned
...
33
1M Aligned
... array data
33
1M Aligned
... page page page page
33
1M Aligned
... page page page page
33
1M Aligned
... page secret A secret B secret C
33
typed array data
34
guessed aligned addresses, 128M apart ... typed array data
??? ??? ??? ??? ??? ???
34
guessed aligned addresses, 128M apart ... guess X guess Y guess Z guess Q
??? ??? ??? ??? ??? ???
34
+1M, +1M, +1M, ... +128M, +128M, +128M, ...
35
+1M, +1M, +1M, ... +128M, +128M, +128M, ...
secret pages (allocated addresses)
35
+1M, +1M, +1M, ... +128M, +128M, +128M, ...
secret pages (allocated addresses) probe pages (guessed addresses)
35
+1M, +1M, +1M, ... +128M, +128M, +128M, ...
secret pages (allocated addresses) probe pages (guessed addresses)
35
36
37
array data
38
array data array header JavaScript Array
38
array data array header array header array data JavaScript Array JavaScript Array
38
array data array header array header array data JavaScript Array JavaScript Array
38
array data array header array header array data JavaScript Array JavaScript Array
38
39
39
39
39
array data array header array header array data JavaScript Array JavaScript Array
40
array data array header array header array data JavaScript Array JavaScript Array
40
41
> Disable-MMAgent -PageCombining
41
weird machine, and a more powerful side-channel than previously thought.
in software come at a price.
in JavaScript is possible, using dedup+rowhammer. https://www.vusec.net/projects/dedup-est-machina
42