К какой памяти можно получить доступ с помощью Meltdown и Spectre v1/v2?
Я понимаю, что Meltdown может получить доступ к памяти ядра, так как программы в Windows, по крайней мере, совместно используют одно и то же пространство виртуальной памяти. У нас есть патч для этого, чтобы отобразить как можно больше данных ядра. Может ли Meltdown получить доступ к памяти других процессов?
Но как насчет Призрака 1/2? К какой памяти он может получить доступ? Может ли он получить доступ к памяти ядра как Meltdown? Может ли он получить доступ к памяти других процессов?
1 ответ
Как кратко упомянуто в статье об ошибках, современные операционные системы просто отображают всю физическую память в виртуальное адресное пространство ядра. Это означает, что для большинства целей и целей вы можете предполагать доступ к памяти ядра = доступ к памяти любых других процессов.
В блоге ProjectZero показано, что Spectre может использоваться для доступа к памяти ядра.
Вариант 1 может считывать память ядра, выполняя произвольный код в режиме ядра внутри песочницы (например, с помощью фильтра пакетов Беркли), а затем использовать уязвимость для доступа к памяти вне песочницы.
Вариант 2 может получить к нему доступ, потому что предсказание ветвлений работает в контексте безопасности, поэтому ветвь в пользовательском режиме может использоваться для обучения предсказанию ветвлений в режиме ядра.