Some random GrafanCon EU 2k18 Notes – Telegram
Some random GrafanCon EU 2k18 Notes
73 subscribers
312 photos
9 files
54 links
Заметки по докладам на которые я пошел (начинаются с #talk) и флуд фоточками.

Связаться с автором можно так: @Civiloid
Download Telegram
Их нашли параллельно в нескольких проектах - в академических исследованиях и в google project zero
Кстати пример side-channel атаки не в цпу - можно было посмотреть свежозарегистрированные домены и найти домен для spectre/meltdown еще в декабре
В новых ядрах есть /sys/devices/system/cpu/vulnerabilities/*
где есть инфа о том что ядро думает о уязвимостях процессора и их mitigation'е (пофиксить их можно в ряде случаев только заменой железа, чего не случиться)
Meltdown
Вспомни что если speculative exectuion случился и произошел exception - то он не вернется если if не выполнится по факту
В упрощенном виде - можно замерять время выполнения попытки доступа к кэшу
и по этому делать выводы есть ли данные из какого-то адреса в кэше
сами данные прочитать впрочем пока еще нельзя
(лучше за подробностями почитать презентацию или одну из многочисленных статей)
Spectre
Есть концепт Gadget - это кусок кода который уже существует в программе, но который не должен выполняться. А мы влияем на состояние системы чтобы он таки выполнился.
Пример:
if (untrusted_offset < limit ) {
trusted_value = trusted_data[untrusted_offset];
tmp = other_data[(trusted_value)&mask];
...
}
процессор может продолжить выполнение кода даже если не шибко нужно
фактически mitigation - добавление инструкции "не делай speculative execution"
специальных инструкций
это spectre v1
spectre v2 - про предсказание ветвлений
например представим что есть 2 процесаа - первый в юзерспейсе, второй в ядре
мы отравляем наш branch prediction чтобы он думал что он пойдет в true, а он идет в false по факту
и дальше подберем все так чтобы выполнился кусок кода ядра который не должен выполняться
исправить можно двумя способами - return trampolines (retpolines) или изменением микрокода