Spectre and Meltdown Security Flaws

Spectre and Meltdown:
Recent Security Flaws
Adam Belay, Srini Devadas,
and Joel Emer
Context
Performance and Security
Isolation and Integrity
Secret
Transmitter
Attack Schema
 
1.
Create a channel
2.
Create the transmitter
3.
Launch the transmitter
4.
Access the secret
Control Speculation
I: Compute
I+1: Compute
I+2: Compute
I+3: Compute
I: Control Flow
J: Compute
J+1: Compute
J+2: Compute
K: Compute
K+1: Compute
K+2: Compute
 
Correct direction
 
Mis-speculated
direction
Sequential
Instruction
Execution
 
Non-Sequential
Instruction
Execution
Transmitter Code
Instruction to launch
transmitter
Pre-existing (RSA example)
Written by attacker (Meltdown)
Synthesized out of existing victim code by attacker (Spectre style)
Building a Transmitter
Meltdown and Spectre
Attack Examples
 
Attack: Mis-speculation exfiltrates
secrets through cache
Transmitter
Cache
Receiver
Covert Channel
Side Channel
Secret
Speculative
Execution
Normal
Execution
Meltdown
Problem: Attacker can influence speculative control flow
Bug: Speculative execution not subject to page
permission checks
Attack: User code can read kernel data (secret)
Three steps:
1.
Setup: flush the cache
2.
Transmit: force speculation that depends on secret
3.
Receive: measure cache timings
Meltdown example
 
Setup:
clflush(timing_ptr[guess]);
 
Transmit:
timing_ptr[*kernel_addr];
 
Receive:
mfence();
s = rdtsc(); *timing_ptr[guess];
e = rdtscp();
if (e - s < CACHE_MISS_THRESHOLD)
  printf(“guess was right!\n”);
 
Page Fault
 
May still read
*kernel_addr (speculatively)
Spectre
Problem: Attacker can influence speculative control
flow (same as before)
Attack: Exfiltrate secrets within a process address
space (e.g. a web browser). Can also be used to
attack the kernel.
Could use attacker provided code (JIT) or could co-
opt existing program code
Same three steps! Different setup and transmitters.
Spectre examples
Transmit - Bounds Check Bypass:
if (x < array1_size)
  array2[array1[x] * 256];
Spectre examples
Transmit - Bounds Check Bypass:
if (x < array1_size)
  array2[array1[x] * 256];
Transmit - Branch Target Injector:
fnptr_t foo = choose_function();
foo(bar);
Slide Note
Embed
Share

Recent security vulnerabilities named Spectre and Meltdown have surfaced in the realm of computer architecture and hardware implementation. These flaws allow attackers to access sensitive data through covert channels utilizing speculative execution mechanisms. The vulnerabilities exploit the performance optimization features of processors, enabling attackers to bypass security measures and extract confidential information. Through techniques like mis-speculation, cache-based attacks, and speculative control flow influence, adversaries can compromise system integrity and breach data privacy. It's crucial for organizations to implement patches and updates to mitigate the risks associated with these vulnerabilities.

  • Spectre
  • Meltdown
  • Security Flaws
  • Computer Architecture
  • Speculative Execution

Uploaded on Oct 09, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Spectre and Meltdown: Recent Security Flaws Adam Belay, Srini Devadas, and Joel Emer

  2. Context Performance and Security Isolation and Integrity

  3. Attack Schema Domain of Victim Attacker Transmitter Receiver Access Channel Secret Secret 1. Create a channel 2. Create the transmitter 3. Launch the transmitter 4. Access the secret

  4. Control Speculation Non-Sequential Instruction Execution Sequential Instruction Execution I: Compute I: Control Flow Correct direction Mis-speculated direction I+1: Compute J: Compute K: Compute I+2: Compute J+1: Compute K+1: Compute I+3: Compute J+2: Compute K+2: Compute Transmitter Code

  5. Building a Transmitter Domain of Victim Attacker Transmitter Receiver Access Channel Secret Secret Pre-existing (RSA example) Written by attacker (Meltdown) Synthesized out of existing victim code by attacker (Spectre style)

  6. Meltdown and Spectre Attack Examples

  7. Attack: Mis-speculation exfiltrates secrets through cache Transmitter Receiver Cache Secret Covert Channel Speculative Execution Side Channel Normal Execution

  8. Meltdown Problem: Attacker can influence speculative control flow Bug: Speculative execution not subject to page permission checks Attack: User code can read kernel data (secret) Three steps: 1. Setup: flush the cache 2. Transmit: force speculation that depends on secret 3. Receive: measure cache timings

  9. Meltdown example Setup: clflush(timing_ptr[guess]); Transmit: timing_ptr[*kernel_addr]; Page Fault May still read *kernel_addr (speculatively) Receive: mfence(); s = rdtsc(); *timing_ptr[guess]; e = rdtscp(); if (e - s < CACHE_MISS_THRESHOLD) printf( guess was right!\n );

  10. Spectre Problem: Attacker can influence speculative control flow (same as before) Attack: Exfiltrate secrets within a process address space (e.g. a web browser). Can also be used to attack the kernel. Could use attacker provided code (JIT) or could co- opt existing program code Same three steps! Different setup and transmitters.

  11. Spectre examples Transmit - Bounds Check Bypass: if (x < array1_size) array2[array1[x] * 256];

  12. Spectre examples Transmit - Bounds Check Bypass: if (x < array1_size) array2[array1[x] * 256]; Transmit - Branch Target Injector: fnptr_t foo = choose_function(); foo(bar);

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#