Meltdown Attack

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2024 Jun 5 5:49
Editor
Edited
Edited
2024 Jun 7 5:47
  • Bug: Speculative execution not subject to page permission checks
  • Attack: User code can read kernel data.
Kernel is mapped inaccessible at higher addresses. The entire physical memory is directly mapped in the kernel at a certain offset. A physical address which is mapped accessible to the user space is also mapped in the kernel space through the
Cache Direct Mapping
.
User code can read the entire physical memory on Linux, Android and OSX through Meltdown Attack.
 

How top reproduce

  1. The content of an attacker-chosen memory location, which is inaccessible to the attacker, is loaded into a register.
  1. A transient instruction accesses a cache line based on the secret content of the register.
  1. The attacker uses
    FLUSH+RELOAD
    to determine the accessed cache line and hence the secret stored at the chosen memory location.
 
 

Concise implementation without loop

clflush(arr[guess]); // Transmit secret i = *kernel_addr; // throw an exception z = arr[i];
Separate program
// Receive secret mfence(); // Reload s = rdtsc(); *arr[guess]; e = rdtscp(); // Check if (e - s < CACHE_MISS_THRESHOLD) printf(“guess was right!\n”);
 
 

Meltdown Mitigation

Separate application and OS page tables (Page Table Isolation)
  • Does not map any kernel memory in the user space, except for some parts required by the x86 architecture such as interrupt handlers
  • User-level programs can no longer directly use kernel memory addresses, as such addresses cannot be resolved
 
 

KAISER(KPTI, PTI) patch which was done under 1 year embargo from intel (kernel has isolated
Page Table
)

 
 
 

Recommendations