Manuel Wiesinger in Bucharest, Romania on November 8-9th 2018 at DefCamp #9.
The videos and other presentations can be found on https://def.camp/archive
4. What happened so far?
2018
Spectre
V1,V2,V3
(M
eltdow
n)
Jan.
Firstreportsofexperim
entalexploitation
Feb.
5. What happened so far?
2018
Spectre
V1,V2,V3
(M
eltdow
n)
Jan.
Firstreportsofexperim
entalexploitation
Feb.
BranchScope
M
ar.
Spectre
V3a,Spectre
V4
M
ay
LazyFP,SGX
Spectre
Jun.
Spectre1.1,Spectre1.2,NetSpectre,ret2spec,SpectreRSB
Jul.
L1TFSGX,L1TFOS/SM
M
,L1TFVM
M
,Labeled
Aug.
6. What happened so far?
2018
Spectre
V1,V2,V3
(M
eltdow
n)
Jan.
Firstreportsofexperim
entalexploitation
Feb.
BranchScope
M
ar.
Spectre
V3a,Spectre
V4
M
ay
LazyFP,SGX
Spectre
Jun.
Spectre1.1,Spectre1.2,NetSpectre,ret2spec,SpectreRSB
Jul.
L1TFSGX,L1TFOS/SM
M
,L1TFVM
M
,Labeled
Aug.
Yetanotherone!
Oct.
2
8. Impact
• Allows data extraction from arbitrary local memory (!)
• Exploitable from JavaScript environments (websites!!)
3
9. Impact
• Allows data extraction from arbitrary local memory (!)
• Exploitable from JavaScript environments (websites!!)
• Via the network (!!!)
3
10. Impact
• Allows data extraction from arbitrary local memory (!)
• Exploitable from JavaScript environments (websites!!)
• Via the network (!!!)
3
11. Who can feel safe?
• Nobody using computers built after 1995.
◦ Any CPU manufacturer
◦ Any operating system
◦ Any Device type
• Don’t trust the memory!
4
16. Attack Limitations
• Difficult — conventional attacks typically easier
• Via the network
◦ Works only under laboratory conditions
◦ Slow (15 bit / hour)
7
17. Attack Limitations
• Difficult — conventional attacks typically easier
• Via the network
◦ Works only under laboratory conditions
◦ Slow (15 bit / hour) — Still: extract a 256 bit key in ∼ 17 hours
7
18. Attack Limitations
• Difficult — conventional attacks typically easier
• Via the network
◦ Works only under laboratory conditions
◦ Slow (15 bit / hour) — Still: extract a 256 bit key in ∼ 17 hours
• Mitigations on the way
◦ Partly already deployed via microcode and OS upgrades
7
40. Hands on! — Meltdown
1. Access data D at an illegal address — get’s executed
speculatively
2. Make an address A of the data D — just a shl
3. Load data at address A
4. Program crashes
5. Do some tricks (e.g. fork)
6. Probe access time to A to learn if it is cached
7. Now we know that an address based on D is cached
8. Revert step 2 to get the data
14
42. How can you protect yourself?
• As always: Apply Security-Updates!
15
43. How can you protect yourself?
• As always: Apply Security-Updates!
• Don’t trust the memory!
15
44. How can you protect yourself?
• As always: Apply Security-Updates!
• Don’t trust the memory!
◦ Overwrite critical data!
15
45. How can you protect yourself?
• As always: Apply Security-Updates!
• Don’t trust the memory!
◦ Overwrite critical data!
◦ C: explicit_bzero()
15
46. How can you protect yourself?
• As always: Apply Security-Updates!
• Don’t trust the memory!
◦ Overwrite critical data!
◦ C: explicit_bzero()
◦ Java: char[]
15
47. How can you protect yourself?
• As always: Apply Security-Updates!
• Don’t trust the memory!
◦ Overwrite critical data!
◦ C: explicit_bzero()
◦ Java: char[]
◦ Python, Go, and co. (essentially all garbage collecting languages
with immutable strings): No guaranteed solution.
15