1. Kernel memory disclosure from userspace on bare metal.
2. Kernel memory disclosure of the VM host/hypervisor from kernelspace in a VM.
1. Allocate two fixed-size arrays
2. Bounds-check the user-provided index
3. If ok, read from the array1 at that index
4. Compute another index from 1 bit of the result
5. Read from array2 at that index
For full details I recommend checking out the two papers, as well as the Project Zero writeup I linked above.
spectreattack.com/spectre.pdf
meltdownattack.com/meltdown.pdf