Re[2]: Meltdown and Spectre
От: Cyberax Марс  
Дата: 04.01.18 18:53
Оценка: 17 (3)
Здравствуйте, Pzz, Вы писали:

C>>Meltdown специфичен для Intel и позволяет из userspace-процесса прочитать всю физическую память, включая ядро и гипервизор. Защита только через KAISER для Линукса ( https://lwn.net/Articles/741878/ ) или аналогичное изменение для NT. AMD не подвержен конкретно этой уязвимости.

Pzz>А объясни, пожалуйста, мине, тупому, каким образом возможность разнюхать kernel pages layout из user space превращается в возможность прочитать содержимое ядерной памяти?
Можно организовать пробы, которые утекают по одному биту содержимого. А одного бита со сдвигом уже достаточно, чтобы получить всё остальное. В результате, память читается со скоростью 500 килобайт в секунду.

Из моего понимания:
char *data = 0xFFFFa123123; // В ядре
if ((*data) & 0x01 != 0) { // Упадёт здесь
   char *probe1 = 0x123123123; // В нашем адресном пространстве
   *probe1 = 123;
} else {
   char *probe1 = 0x234123412; // В нашем адресном пространстве
   *probe1 = 234;
}


Этот код, естественно, падает на SIGSEGV. Но проблема в том, что CPU успевает таки спекулятивно исполнить одну из проб. И затем с помощью тестирования кэша можно обнаружить какая проба сработала.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.