Похожие презентации:
Confidential Burgers Inc
1. Confidential Burgers Inc.
1EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC.
Confidential Burgers inc. sells burgers, pizza, and
coffee.
Pizza oven
Burger grill
Customer
Waiter
Coffee machine
The waiter (CPU) will
1. take an order from a customer (CPU instruction)
2. break the order (instruction) down into micro operations (µOPs - grilling a
burger, baking a pizza, …)
3. schedule and execute the µOPs
4. complete the order (retire the instruction)
Grand Opening Toda
2. Confidential Burgers Inc. : serial, in order execution
2EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC. : SERIAL, IN ORDER
EXECUTION
ORDER?
DONE
Pizza oven
Burger grill
Waiter
Customer
1 after another (in order)
‣
One
customer
‣ Decode instruction
into µOPs
2
‣ Each part of the order executed serially
Coffee machine
(“Burger”, “Coffee”)
‣ Schedule µOPs
run
µOP
the burger)
I.e. ‣
first
the1st
burger,
then (grill
the coffee
‣ ‣
PRO:
implement
and understand
runEasy
2ndto µOP
(brew
coffee, serial execution)
3
‣ CON: Slow because resources not utilised fully
‣ Retire instruction (customer)
1
customer == CPU instruction
2
part == µOP - micro operation
3
oven, grill, coffee machine
3. Confidential Burgers Inc. : Parallel, in order execution
3EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC. : PARALLEL, IN ORDER
EXECUTION
ORDER?
DONE
Pizza oven
Burger grill
Customer
Waiter
Coffee machine
‣ One customer1 after another (in order)
Each part ofinstruction
the order 2 executed
parallel
‣‣ Decode
intoinµOPs
‣ Schedule µOPs
I.e. burger and coffee prepared at the same time
‣
run
1st
µOP
and
2nd
µOP
(parallel
execution
of
µOPs)
‣ PRO: Faster bc. of better resource utilisation.
CON: Still
not perfect, more
complex
‣‣ retire
instruction
(customer)
4. Confidential Burgers Inc. : Parallel, Out of order execution
4EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC. : PARALLEL, OUT OF ORDER
EXECUTION
YOUR
#4711ID:
ORDER
ORDER?
DONE
#4711
Pizza oven
Burger grill
Customer
Waiter
Coffee machine
‣ Multiple customers’ orders executed in parallel1 and delivered (retired) in order
I.e. multiple orders prepared at the same time
#4711
‣ PRO: Faster because resources are utilised even better
‣ CON: More difficult to implement
1
this is called superscalar
5. Confidential Burgers Inc.
5EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC.
Instruction
CPU core
Adding more resources increase parallelism & throughput.
This is all on one CPU core.
6. Confidential Burgers Inc. : Order is important
6EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC. : ORDER IS
IMPORTANT
Instruction
CPU core
The green instruction will finish before the red instruction.
The CPU ensures that red is seen before green.
Actual µOP execution order
Instruction execution order as seen
7. Meltdown
OUT OF ORDEREXECUTION
MELTDOW
N
8. Meltdown
OUT OF ORDER EXECUTIONMELTDOWN
Meltdown basically works like this:
1. READ secret from forbidden address
2. Stash away secret before CPU detects wrongdoing
3. Retrieve secret
8
9. Meltdown: Stashing away - Sidechannel
9OUT OF ORDER EXECUTION
MELTDOWN: STASHING AWAY SIDECHANNEL
VALUE
Read
RAM
value
CPU core
address
value at address
…
100ns
RAM
‣ Data is stored in RAM
‣ RAM is very slow
‣ Reading one byte stalls the CPU for hundreds of µOPs
10. Meltdown: Stashing away - Sidechannel
10MELTDOWN & SPECTRE FOR NORMAL PEOPLE
MELTDOWN: STASHING AWAY SIDECHANNEL
Read
Read
RAM
Cache
In cache
Not
in cache
VALUE
VALUE (IN CACHE)
CPU core
103ns
3ns
100ns
…
Cache
RAM
‣ Reading one byte stalls the CPU for hundreds of µOPs
‣ CPU caches considerably speed this up
‣ E.g. reading cached takes 3ns, reading uncached 103ns
The cache speeds up “what is the value at address X?”. This is called “(address) X is cached”
11. “READ” Instruction
11MELTDOWN & SPECTRE
“READ” INSTRUCTION
For a CPU the “READ value from memory at 4711”
instruction looks like this (µOPs):
1. Check that program may read from address1
2. Store the value at address in register1
If 1 fails the program is aborted.
2
This can be handled by the program.
1
Register: The CPUs scratchpad
In our burger example:
1. Customer orders a burger & coffee
2. Burger is ready, coffee machine breaks
3. Customer does not get his burger
12. Meltdown: READING FORBIDDEN DATA
MELTDOWN & SPECTREMELTDOWN: READING FORBIDDEN
DATA basically works like this:
Meltdown
1. READ secret from forbidden address
11. Check
22. Store
that program may read from address
the read value in register
2. Stash away secret
11. Magic
3. Retrieve secret (later)
µOPs:
1
2
1
12
13. Meltdown: READING FORBIDDEN DATA
13MELTDOWN & SPECTRE
MELTDOWN: READING FORBIDDEN
DATA
µOPs
ordered by instruction
µOPs ordered by execution
1
Check access
2
Read into register
2
Read into register
1
Magic
1
Magic
1
Check access
• The re-ordering on the right happens, when the “forbidden data” is already cached
(because cache access is so fast).
• Reordering is not a problem because the CPU will ensure that
• Unless
is only seen iff
suc
is able to hide the secret in such a way that the attacker can find it later.
In our burger example:
1. Customer orders a burger & coffee
2. Customer gets his burger
3. Coffee machine breaks
4. Customer runs away with burger
14. Meltdown
14MELTDOWN & SPECTRE
MELTDOWN
For Meltdown two actors are needed
The spy and a collector.
• The spy will “steal” the secret and stash it away. The
CPU will kill him for accessing the secret information.
• The collector will find the stashed away secret.
110011010
010111010
111100100
000101101
100110010
110011010
010111010
111100100
000101101
100110010
Spy
Collector
15. Meltdown: The Sidechannel (Idea)
15MELTDOWN & SPECTRE
MELTDOWN: THE SIDECHANNEL (IDEA)
110011010
010111010
111100100
000101101
100110010
Spy
110011010
010111010
111100100
000101101
100110010
Collector
…
“IT’S A 1”
“IT’S A 2”
“IT’S A 3”
…
SECRET (“3”)
Places
1. Spy will read the secret
2. Depending on the value, Spy will mark a grey block
3. CPU detects Spys access validation and terminates Spy
4. Collector now looks for Spys mark in all grey blocks
16. Meltdown: The attack
16MELTDOWN & SPECTRE
grey box:
memory block
tested by Collector
MELTDOWN: THE ATTACK
110011010
010111010
111100100
000101101
100110010
…
“IT’S A 1”
“IT’S A 2”
Spy
110011010
010111010
111100100
000101101
100110010
Collector
allowed to
read?
SECRET (“3”)
“IT’S A 3”
…
Cache
SECRET (“3”)
RAM
‣ Meltdown needs some preconditions
‣ The secret is in the cache (value: 3)
‣ Both Spy and Collector can read grey memory blocks
17. Meltdown: The attack
17MELTDOWN & SPECTRE
MELTDOWN: THE ATTACK
110011010
010111010
111100100
000101101
100110010
…
Spy
110011010
010111010
111100100
000101101
100110010
Collector
2
1
1
SECRET (“3”)
“IT’S A 1”
read: 103ns (uncached read)
“IT’S A 2”
read: 103ns (uncached read)
“IT’S A 3”
read: 3ns (cached)
…
Cache
SECRET (“3”)
RAM
1. Spy will read the secret
2. Depending on the value, Spy will cache a grey block1
3. CPU detects Spys access validation and terminates Spy
4. Collector now reads all grey blocks and stops the time
1.Block “It’s a 3” will be the block read the fastest
Actually Spy will cache the address of block #3 and Collector will read the blocks addresses
18. Meltdown
18MELTDOWN & SPECTRE
MELTDOWN
Meltdown exploits two properties of modern CPUs
‣ Out of order execution of OPs and µOPs
‣ Timing side channels for the cache
This allows an attacker to
‣ Read all memory mapped1 in a process
‣ This often includes all other processes memory
‣ This does NOT allow reading “outside of a VM2”
1 Virtual
vs. physical memory is a subject for another time
2
For fully virtualised VMs
19. Meltdown Example Code
MELTDOWN & SPECTREMELTDOWN EXAMPLE CODE
1. We reset the processor cache
char userspace_array[256*4096];
for (i = 0; i < 256*4096; i++) {
_mm_clflush(&userspace_array[i]); }
2. We read an interesting variable from the address space of the kernel, which will cause an
exception, but it will not be processed immediately.
const char* kernel_space_ptr = 0xBAADF00D;
char tmp = *kernel_space_ptr;
3. Speculatively, we do a read from the array, which is located in our user address space, based
on the value of the variable from item 2.
char not_used = userspace_array[tmp * 4096];
4. We consistently read the array and accurately measure the access time. All the elements,
except for one, will be read slowly, but the element that corresponds to the value at the
address inaccessible to us is fast, because it has already entered the cache.
for (i = 0; i < 256; i++) {
if (is_in_cache(userspace_array[i*4096])) {
// Got it! *kernel_space_ptr == i }}
Thus, the object of the attack is the microarchitecture of the processor, and the attack itself cannot
be repaired in the software.
20. Spectre
SPECULATIVEEXECUTION
SPECT
21. Confidential Burgers Inc. : Parallel, Out of order execution
21EXECUTION ORDER EXAMPLE
CONFIDENTIAL BURGERS INC. : PARALLEL, OUT OF ORDER
EXECUTION
YOUR
#4711ID:
ORDER
ORDER?
DONE
#4711
Pizza oven
Burger grill
Customer
Waiter
Coffee machine
‣ Multiple customers’ orders executed in parallel1 and delivered (retired) in order
I.e. multiple orders prepared at the same time
#4711
‣ PRO: Faster because resources are utilised even better
‣ CON: More difficult to implement
1
this is called superscalar
22. spectre: Branch prediction
22MELTDOWN & SPECTRE
SPECTRE: BRANCH PREDICTION
Monday
Wednesday
Tuesday
…
23. spectre
23MELTDOWN & SPECTRE
SPECTRE
Spectre attacks other processes by forcing them to
speculatively run other code paths
A
B
C
D
Counter > 0?
E
VICTIM PROCESS
ATTACKER PROCESS
24. spectre
MELTDOWN & SPECTRE24
SPECTRE
Spectre works like this:
1. force victim to leak secret
2. stash away secret
3. retrieve secret
and
basically work like in Meltdown
works by manipulating the branch prediction of the CPU
25. spectre: Speculative execution
MELTDOWN & SPECTRE25
SPECTRE: SPECULATIVE EXECUTION
The CPU can improve the coffee machine utilisation by
speculatively brewing the coffee for
This is very similar to the effect seen in Meltdown.
‣ In the Meltdown attack the CPU knows the next
instruction (order) and asynchronously checks the
permissions
‣ In Spectre the CPU guesses the next instructions based
on heuristics (brew coffee without knowing the order)
26. spectre: Speculative execution
26MELTDOWN & SPECTRE
SPECTRE: SPECULATIVE EXECUTION
A
B
3
1
2
C
Counter
D
Counter > 0?
E
The CPU has learned that Counter probably is > 0
Reading Counter from memory is very slow
The CPU speculatively executes
B C
performance
to improve
27. spectre: Speculative execution
27MELTDOWN & SPECTRE
SPECTRE: SPECULATIVE EXECUTION
A
0
Counter
2. Make sure Counter is not
cached so the CPU is more
likely to speculatively run the
code
B
C
D
1. Prime the branch prediction
to expect a loop
3. Find a way that victim leaks
data when B & C are
executed speculatively
Counter > 0?
E
VICTIM PROCESS
ATTACKER PROCESS
Attacker can influence the CPUs branch prediction of victim.
Making the victim speculatively execute “wrong” code.
E.g. loop even when Counter is == 0.
28. spectre: Variant 2 (CVE-2017-5715)
28MELTDOWN & SPECTRE
SPECTRE: VARIANT 2 (CVE-2017-5715)
A
B
3
1
2
C
(3) Jump to indirect address
Counter
D
B
1
(1) Counter > 0?
(2) Read next
instruction
address
E
‣ The conditional jump (branch)D
now is an indirect jump.
‣ Indirect jumps use addresses stored "somewhere else”.
‣ This can also be used to speculatively execute any code
found in the target process (kernel).
29. Spectre Code Example
MELTDOWN & SPECTRESPECTRE CODE EXAMPLE
Source: https://www.exploit-db.com/docs/english/43426-spectre---trick-error-free-applications-into-givingup-secret-information.pdf