Medusa:
Microarchitectural Data Leakage via Automated Attack Synthesis
- Daniel Moghimi
- Moritz Lipp
- Berk Sunar
- Michael Schwarz
Medusa: Microarchitectural Data Leakage via Automated Attack - - PowerPoint PPT Presentation
Medusa: Microarchitectural Data Leakage via Automated Attack Synthesis Daniel Moghimi Moritz Lipp Berk Sunar Michael Schwarz 2018: Meltdown Attack? 2 2018: Meltdown Attack? Virtual Address Space User Space CPU Registers
2
3
0xf…81a0123
P A S S W O R D
Virtual Address Space
User Space Kernel Space 256 different CPU Cache Line CPU Registers
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers
4
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers
5
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers
P 6
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers
P 7
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers
Fault Fault
8
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers F+R
9
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers F+R
10
0xf…81a0123 P A S S W O R D Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers F+R
11
P A S S W O R D
Virtual Address Space
User Space Kernel Space
Oracle
256 different CPU Cache Line CPU Registers
‘P’ = 0x50
12
13 whatever
14 14 14
VFN PFN VFN PFN VFN PFN … …. Offset Offset Offset … DATA DATA DATA …
Load Buffer
VFN PFN [8:0] VFN PFN [8:0] VFN PFN [8:0] … …. Offset Offset Offset … DATA DATA DATA …
Store Buffer
L1
Fill Buffer DTLB
DRAM L3 L2 Memory Subsystem
15
Memory Access
Canonical #GP
Offset VFN
Virtual Address
16
Memory Access
Canonical #GP TLB
Y
PMH Perm.
Y
P
RW US A …
Physical Page Number
… …
PTE
Offset VFN
Virtual Address
17
Memory Access
Canonical #GP TLB
Y
PMH Perm.
Y
Present
Y
#PF
P RW US A …
Physical Page Number
… …
PTE
Offset VFN
Virtual Address
18
Memory Access
Canonical #GP TLB
Y
PMH Perm.
Y
Present
Y
#PF Accessed
Y
Set A Bit
P RW US A …
Physical Page Number
… …
PTE
Offset VFN
Virtual Address
19
Memory Access
Canonical #GP TLB
Y
PMH Perm.
Y
Present
Y
#PF Accessed
Y
Set A Bit Aligned Vector
Y
P RW US A …
Physical Page Number
… …
PTE
Offset VFN
Virtual Address
#GP
20
Memory Access
Canonical #GP TLB
Y
PMH Perm.
Y
Present
Y
#PF Accessed
Y
Set A Bit Aligned Vector
Y
P RW US A …
Physical Page Number
… …
PTE
Offset VFN
Virtual Address
#GP Cache Aligned Split Cache
Y
Cached
Y
Cache Miss Handler False Store Dep.
Y
Hazard Recovery TSX Failure
Y #RTM
21
22
23
24
25
256 different CPU Cache Line
‘P’ = 0x50
26
Canonical TLB Perm. Present Accessed Aligned Vector Cache Aligned Cached False Store Dep. TSX Failure
256 different CPU Cache Line
‘P’ = 0x50
27
Canonical TLB Perm. Present Accessed Aligned Vector Cache Aligned Cached False Store Dep. TSX Failure
256 different CPU Cache Line
‘P’ = 0x50
Stores Same Thread: 0x41424344 Stores Hyper Thread: 0x61626364 Loads Same Thread: 0x51525354 Loads Hyper thread Thread: 0x71727374
28
Canonical TLB Perm. Present Accessed Aligned Vector Cache Aligned Cached False Store Dep. TSX Failure
256 different CPU Cache Line
‘P’ = 0x50
Stores Same Thread: 0x41424344 Stores Hyper Thread: 0x61626364 Loads Same Thread: 0x51525354 Loads Hyper thread Thread: 0x71727374
29
30
31
32
33
34
35
36
37 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
An invalid (Non-canon) address: 0x5550000000000008-20 Faulty Load
38 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
An invalid (Non-canon) address: 0x5550000000000008-20 Faulty Load
39 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
An invalid (Non-canon) address: 0x5550000000000008-20 Faulty Load
40 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index Common Data Bus?!
41 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Faulty Load
42 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Faulty Load
YMMx
REPMOV on the Hyper thread: ABCDEFGH IJKLMNOP QRSTUVWX YZ…
43 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Faulty Load
YMMx
8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Store REPMOV on the Hyper thread: ABCDEFGH IJKLMNOP QRSTUVWX YZ…
44 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Faulty Load
YMMx
8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Store REPMOV on the Hyper thread: ABCDEFGH IJKLMNOP QRSTUVWX YZ…
45 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Faulty Load
YMMx
8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte 8-byte
Cache Line Index
Store REPMOV on the Hyper thread: ABCDEFGH IJKLMNOP QRSTUVWX YZ…
46
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
HT 1: REP MOV Valid Store, Faulty Load
ABCDEFGHIJKLMNOP AAAAAAAAAAAAAAAA
HT 1: REP MOV Valid Store, Faulty Load
47
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
HT 1: REP MOV Valid Store, Faulty Load
ABCDEFGHIJKLMNOP AAAAAAAAAAAAAAAA
HT 1: REP MOV Valid Store, Faulty Load
AAAAAAAAAAAIIAAAIAIAAAIAIAIIIAAAAAA…
48
49
MIICXQIBAAKBgQDmTvQjjtGtnIqMwmmaLW+YjbYTsNR8PGKXr78iYwrMV5Ye4VGy BwS6qLD4s/EzCzGIDwkWCVx+gVHvh2wGW15Ddof0gVAtAMkR6gRABy4TkK+6YFSK AyjmHvKCfFHvc9loeFGDyjmwFFkfdwzppXnH1Wwt0OlnyCU1GbQ1w7AHuwIDAQAB AoGBAMyDri7pQ29NBIfMmGQuFtw8c0R3EamlIdQbX7qUguFEoe2YHqjdrKho5oZj nDu8o+Zzm5jzBSzdf7oZ4qaeekv0fO+ZSz6CKYLbuzG2IXUB8nHJ7NuH3lacfivD V4Cfg0yFnTK+MDG/xTVqywrCTsslkTCYC/XZOXU5Xt5z32FZAkEA/nLWQhMC4YPM 0LqMtgKzfgQdJ7vbr43WVVNpC/dN/ibUASI/3YwY0uUtqSjilIghIY7pRohrPJ6W ntSJw0UAhQJBAOe2b9cfiOTFKXxyU4j315VkulFfTyL6GwXi/7mvpcDCixDLNRyk uRigmdKjtIUrAX0pwjgXa6niqJ691jExez8CQQCcMZZAvTbZhHSn9LwHxqS0SIY1 K+ZxX5ogirFDPS5NQzyE7adSsntSioh6/LQKBX6BAR9FwtxBPACtwz5F9geZAkA8 a3z0SlvG04aC1cjkgUPsx6wxxbl79F2RhmSKRbvh7JiYk3RQ+L7vJgmWPGu5AcLM
/1pAy9rjeVJYhb8acTRnt+dU+uZ74CTtfuzUTZLOIuVe
50
MIICXQIBAAKBgQDmTvQjjtGtnIqMwmmaLW+YjbYTsNR8PGKXr78iYwrMV5Ye4VGy BwS6qLD4s/EzCzGIDwkWCVx+gVHvh2wGW15Ddof0gVAtAMkR6gRABy4TkK+6YFSK AyjmHvKCfFHvc9loeFGDyjmwFFkfdwzppXnH1Wwt0OlnyCU1GbQ1w7AHuwIDAQAB AoGBAMyDri7pQ29NBIfMmGQuFtw8c0R3EamlIdQbX7qUguFEoe2YHqjdrKho5oZj nDu8o+Zzm5jzBSzdf7oZ4qaeekv0fO+ZSz6CKYLbuzG2IXUB8nHJ7NuH3lacfivD V4Cfg0yFnTK+MDG/xTVqywrCTsslkTCYC/XZOXU5Xt5z32FZAkEA/nLWQhMC4YPM 0LqMtgKzfgQdJ7vbr43WVVNpC/dN/ibUASI/3YwY0uUtqSjilIghIY7pRohrPJ6W ntSJw0UAhQJBAOe2b9cfiOTFKXxyU4j315VkulFfTyL6GwXi/7mvpcDCixDLNRyk uRigmdKjtIUrAX0pwjgXa6niqJ691jExez8CQQCcMZZAvTbZhHSn9LwHxqS0SIY1 K+ZxX5ogirFDPS5NQzyE7adSsntSioh6/LQKBX6BAR9FwtxBPACtwz5F9geZAkA8 a3z0SlvG04aC1cjkgUPsx6wxxbl79F2RhmSKRbvh7JiYk3RQ+L7vJgmWPGu5AcLM
/1pAy9rjeVJYhb8acTRnt+dU+uZ74CTtfuzUTZLOIuVe
51
P Q d mod (p-1) d mod (q-1) Q^(-1) mod p N (Modulus) d (Private Key)
52
1 3 of P+Q
P Q
53
1 3 of P+Q.
P Q Coppersmith P
54
attacks better.
55
attacks better.
56
attacks better.
57
58
59
60
61
62
63 https://github.com/ VernamLab/Medusa https://github.com/ danielmgmi/IceBreak