Пыль, поднятая вокруг случившегося на неделю раньше запланированного обнародования информации об уязвимостях Meltdown (CVE-2017-5754) и Spectre (CVE-2017-5753 и CVE-2017-5715), чуть улеглась, так что можно делать некоторые оценки сложившейся ситуации.
Счастливчикам, выпавшим на прошедшей неделе из новостного потока, имеет смысл ознакомиться с весьма доходчивым описанием Олега Артамонова [ https://geektimes.ru/post/297029/ ]. Если совсем коротко и на пальцах, принципиальный источник всех проблем кроется в сочетании механизма спекулятивного выполнения команд и предсказания ветвлений с использованием процессорного кэша.
В случае Meltdown ситуация усугубляется игнорированием процессором во время этого самого спекулятивного выполнения команд прав доступа к памяти (из тех соображений, что операция все равно откатится), в результате...
Subj, почитал "доходчивое описание Олега Артамонова", и до меня так и не дошло, к сож.
Итак, спекулятивное исполнение произошло, но неудачно из-за MMU, результаты отброшены, конвейер сбросился. Результат какбэ в кеше, но напрямую мы его вытащить не можем... и как-то его вытаскивают... КАК? Непонятно.
Косвенно и мучительно:01.02.18 01:45 Автор: dl <Dmitry Leonov>
> Итак, спекулятивное исполнение произошло, но неудачно из-за > MMU, результаты отброшены, конвейер сбросился. Результат > какбэ в кеше, но напрямую мы его вытащить не можем... и > как-то его вытаскивают... КАК? Непонятно.
Косвенно и мучительно:
"Наше приложение начинает читать адреса от 0 и выше в собственном адресном пространстве (имеет полное право), замеряя время, требующееся на чтение каждого адреса, и читая их не по порядку, чтобы не натренировать тот же спекулятивный доступ
На адресе 98 время доступа вдруг оказывается в несколько раз ниже, чем на других адресах
Таким образом мы понимаем, что кто-то уже недавно читал что-то по этому адресу, в результате чего он попал в кэш. Кто бы это мог быть? Ах, да, это наш дорогой процессор. По адресу 15000, соответственно, лежит значение 98."
О как... Спасибо!05.02.18 12:18 Автор: HandleX <Александр М.> Статус: The Elderman