Re[6]: Meltdown and Spectre
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 05.01.18 14:11
Оценка:
Здравствуйте, Pzz, Вы писали:

C>>Да, самое простое посчитать число тактов. Но этим оно не ограничивается. Причём даже кэш не нужен, один из способов — использовать инструкции с переменным числом тактов (деление, например) и смотреть сколько тактов оно выполняется в зависимости от данных.


Pzz>А часто вообще попадаются программы, которым на вполне законных основаниях надо слазить в ядерные адреса и обойтись легким SIGSEGV'ом, вместо заслуженной смерти?


Этот вопрос надо было задавать, когда вводили Structure Exception Handling и аналоги
The God is real, unless declared integer.
Re[6]: Meltdown and Spectre
От: novitk США  
Дата: 05.01.18 14:48
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А часто вообще попадаются программы, которым на вполне законных основаниях надо слазить в ядерные адреса и обойтись легким SIGSEGV'ом, вместо заслуженной смерти?


Cyberax не правильно объяснил. Никакого SEGV не будет.
char *data = 0xFFFFa123123; // В ядре
char myData[1024]; // В userSpace
dumpCaches();
if (someConditionThatWillBeFalse) {
   // сюда лезет branchPredictor и меняет только cache!
   int oneOrZeroInKernel = (*data) & 0x01;
   myData[oneOrZeroInKernel*512]
}
checkWhatIsCachedInMyDataViaTiming() // if myData[512] is cached than kernel had 1, else 0
Отредактировано 05.01.2018 14:50 novitk . Предыдущая версия . Еще …
Отредактировано 05.01.2018 14:49 novitk . Предыдущая версия .
Отредактировано 05.01.2018 14:49 novitk . Предыдущая версия .
Re[7]: Meltdown and Spectre
От: andrey.desman  
Дата: 05.01.18 16:13
Оценка: 6 (1)
Здравствуйте, novitk, Вы писали:

Pzz>>А часто вообще попадаются программы, которым на вполне законных основаниях надо слазить в ядерные адреса и обойтись легким SIGSEGV'ом, вместо заслуженной смерти?


N>Cyberax не правильно объяснил. Никакого SEGV не будет.


Он объяснил правильно, но у него Meltdown, а у тебя Spectre. Последний сложнее, т.к. там определенным путем надо натренировать этот branch prediction, чтобы он пошел исполняться.
В то время как в прямом чтении у тебя практически гарантия.
Re[4]: Meltdown and Spectre
От: mike_rs Россия  
Дата: 05.01.18 16:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Если будете пробовать — отпишитесь


Microsoft Windows [Version 10.0.16299.192]:
...
0x100f: guess: 0xc6, real:0xcc
0x1010: guess: 0xc6, real:0x48
0x1011: guess: 0xc6, real:0x89
0x1012: guess: 0xc6, real:0x5c
0x1013: guess: 0xc2, real:0x24
0x1014: guess: 0xc6, real:0x08
...
Re[8]: Meltdown and Spectre
От: novitk США  
Дата: 05.01.18 17:34
Оценка:
Здравствуйте, andrey.desman, Вы писали:

N>>Cyberax не правильно объяснил. Никакого SEGV не будет.


AD>Он объяснил правильно, но у него Meltdown, а у тебя Spectre. Последний сложнее, т.к. там определенным путем надо натренировать этот branch prediction, чтобы он пошел исполняться.

AD>В то время как в прямом чтении у тебя практически гарантия.

Я просто смотрел в обратном порядке и думал вопрос Pzz был по JS, где используется Spectre. Впрочем, я не совсем понимаю зачем нужен именно SEGV. Принципиальная сущность Meltdown-a мне кажется в том, что Интел дает доступ к ринг-0 из ринг-3 в спекулятивных вычислениях, а уж ловить там SEGV или просто запутать branch predictor if-om не особо важно. Отличие от Spectre в том что в последнем ссылки между рингами не скачут.
Отредактировано 05.01.2018 23:36 novitk . Предыдущая версия . Еще …
Отредактировано 05.01.2018 23:33 novitk . Предыдущая версия .
Re[2]: а возможны ли "патчи" ?
От: Grizzli  
Дата: 05.01.18 19:08
Оценка:
Здравствуйте, MadHuman, Вы писали:

MH>но тогда почему к примеру MS рапортует что выпустила патч?...


А непонятно что они там навыпускали. есть какие то патчи, что конкретно из перечисленного они исправляют — мне лично не понятно. расплав помоему ms еще не исправил, так, для спектра некоторые варианты закрыли. А может наоборот.
Re[3]: Meltdown and Spectre
От: Cyberax Марс  
Дата: 05.01.18 19:47
Оценка:
Здравствуйте, kov_serg, Вы писали:

V>>А красово, а?

_>Не красиво. Есть же виртуальная память и у каждого процесса она своя. Что мешает не иметь охраняемых данных в ввиртуальном адресном пространстве вообще?
Производительность. Переключение таблиц отображения при переходе userspace->kernel и обратно вызывает сброс TLB и заметное замедление.
Sapienti sat!
Re[2]: а возможны ли "патчи" ?
От: Cyberax Марс  
Дата: 05.01.18 19:51
Оценка:
Здравствуйте, MadHuman, Вы писали:

MH>но тогда же невозможно её исправить за счет патча для ОС, нетакли?

MH>но тогда почему к примеру MS рапортует что выпустила патч?...
От Meltdown полностью можно защититься с помощью патча. Для Spectre можно прикрыть только определённые пути её эксплуатации.
Sapienti sat!
Re[6]: Meltdown and Spectre
От: Cyberax Марс  
Дата: 05.01.18 19:53
Оценка: +1
Здравствуйте, Pzz, Вы писали:

C>>Да, самое простое посчитать число тактов. Но этим оно не ограничивается. Причём даже кэш не нужен, один из способов — использовать инструкции с переменным числом тактов (деление, например) и смотреть сколько тактов оно выполняется в зависимости от данных.

Pzz>А часто вообще попадаются программы, которым на вполне законных основаниях надо слазить в ядерные адреса и обойтись легким SIGSEGV'ом, вместо заслуженной смерти?
Ну обращение по (void*)(unsigned long)(-1) — достаточно частое явление и по POSIX должен быть SIGSEGV или SIGBUS. Оба можно поймать.

Кстати, даже если программа помрёт вместо ловли сигнала — никто не мешает сделать fork() в точности перед пробой.
Sapienti sat!
Re[3]: а возможны ли "патчи" ?
От: MadHuman Россия  
Дата: 05.01.18 19:57
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>От Meltdown полностью можно защититься с помощью патча. Для Spectre можно прикрыть только определённые пути её эксплуатации.

а каков возможный принцип этого патча (от Spectre)? ведь работает нативный код.. даже системных вызовов нет, кроме тайминга, для которого можно массу вариантов придумать..
Видели какую-то информацию как это возможно?..
Re: Может это спецоперация ФСБ для ...
От: StatujaLeha на правах ИМХО
Дата: 05.01.18 20:33
Оценка:
Здравствуйте, Cyberax, Вы писали:

... продвижения на рынки нового процессора?

https://ru.wikipedia.org/wiki/Эльбрус-16С
Re[4]: а возможны ли "патчи" ?
От: Grizzli  
Дата: 05.01.18 20:59
Оценка:
Здравствуйте, MadHuman, Вы писали:

MH>а каков возможный принцип этого патча (от Spectre)? ведь работает нативный код.. даже системных вызовов нет, кроме тайминга, для которого можно массу вариантов придумать..

MH>Видели какую-то информацию как это возможно?..

Вроде должна быть защита на уровне конкретных приложений, а не на уровне ос.
Re[7]: Meltdown and Spectre
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.01.18 21:02
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Кстати, даже если программа помрёт вместо ловли сигнала — никто не мешает сделать fork() в точности перед пробой.


Можно было бы инвалидировать кэш, если в нормальной жизни это нечастое событие.

Но как мне тут уже сказали, к ядерной памяти можно спекулятивно обратиться. Тогда и сигнала-то не будет.
Re[2]: Meltdown and Spectre
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.01.18 21:05
Оценка:
Здравствуйте, s_aa, Вы писали:

_>Как пить дать агенты Путина постарались. Ну теперь Эльбрус попрет! Кто там говорил про его низкую производительность?


Совершенно не факт, что в нем нет аналогичной проблемы.
Re[2]: а возможны ли "патчи" ?
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.01.18 21:08
Оценка:
Здравствуйте, MadHuman, Вы писали:

MH>судя по описанию, дыра на уровне процессора.

MH>но тогда же невозможно её исправить за счет патча для ОС, нетакли?
MH>но тогда почему к примеру MS рапортует что выпустила патч?...

Дыра работает в определенном режиме процессора. Можно не использовать этот режим, тогда дыра перестанет работать. Но вызов ядра из пользовательской задачи станет заметно дороже.
Re[3]: а возможны ли "патчи" ?
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.01.18 21:10
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>От Meltdown полностью можно защититься с помощью патча. Для Spectre можно прикрыть только определённые пути её эксплуатации.


Казалось бы, если в адресном пространстве процесса "ненужных" страниц совсем не присутствует, а не как сейчас, они присутствуют, но в запрещенном виде, то с помощью spectre ни до чего лишнего и не дотянешься...
Re[2]: Может это спецоперация ФСБ для ...
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.01.18 21:12
Оценка: 3 (2) +1
Здравствуйте, StatujaLeha, Вы писали:

SL>... продвижения на рынки нового процессора?


SL>https://ru.wikipedia.org/wiki/Эльбрус-16С


У которого, наверняка, полно своих дыр, просто пока они не известны...
Re[4]: а возможны ли "патчи" ?
От: AndrewJD США  
Дата: 05.01.18 21:19
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Казалось бы, если в адресном пространстве процесса "ненужных" страниц совсем не присутствует, а не как сейчас, они присутствуют, но в запрещенном виде, то с помощью spectre ни до чего лишнего и не дотянешься...

Можно вылезти, например, из песочницы javascript и получить доступ к памяти всего процесса.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[4]: а возможны ли "патчи" ?
От: Cyberax Марс  
Дата: 05.01.18 21:52
Оценка: 6 (1)
Здравствуйте, Pzz, Вы писали:

Pzz>Казалось бы, если в адресном пространстве процесса "ненужных" страниц совсем не присутствует, а не как сейчас, они присутствуют, но в запрещенном виде, то с помощью spectre ни до чего лишнего и не дотянешься...

Проблема в том, что определённые последовательности кода (в основном, проверки границ) внутри syscall'ов можно эксплуатировать из userspace. Это не требует никаких дыр в безопасности — процессор просто исполняет код внутри ядра, а зловредный шпион наблюдает за кэшем из userspace.

Плюс возможности шпионажа изнутри песочниц в браузере.
Sapienti sat!
Re[2]: Может это спецоперация ФСБ для ...
От: Слава  
Дата: 06.01.18 00:21
Оценка: +1
Здравствуйте, StatujaLeha, Вы писали:

SL>... продвижения на рынки нового процессора?

SL>https://ru.wikipedia.org/wiki/Эльбрус-16С

Нет, это новый старт для IBM Power. Я бы не отказался от такого десктопа.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.