Всех с интересным новым годом! Возможно, вы еще не в курсе уязвимостей Meltdown и Spectre. Поэтому — короткое вступление.
Прошлой осенью исследователи Google опубликовали исследования о нескольких уязвимостях процессоров. В этом году эти исследования стали общедоступными. Если совсем вкратце:
Да, это всё не значит, что у вас гарантированно украдут данные. Однако, повышается вероятность утечки информации, например, при заходе на нормальный сайт с вредоносным кодом в рекламном скрипте.
Далее чуть больше подробностей.
Disclaimer: я не гуру информационной безопасности, поэтому всё что я пишу дальше — мое личное мнение, а не претензия на абсолютную истину.
Я начну с отличий, последствий и рекомендаций, чтобы не утомлять деталями Meltdown тех, кому это неинтересно. Для тех, кто заскучает после описания Meltdown, крайне рекомендую почитать следующий за ним раздел. А для тех, кому очень интересны детали — в конце будут дополнительные источники.
С одной стороны, уязвимости серьезные. С другой — надо понимать, что:
Поэтому не торопимся выкидывать смартфоны с компами и уезжать в глушь.
С точки зрения пользователей мои рекомендации практически независимы от последних уязвимостей:
Скажу честно, мне самому лениво было заходить в интернет-банк в другом браузере, теперь постараюсь делать именно так.
Что касается Meltdown, специфичен, пожалуй, один момент. Если в вашем смартфоне процессор на основе “ARM Cortex-A75” — сочувствую. Хотя смартфоны на Android патчат неторопливо, но, может, вам повезет… По этой теме есть обновление, см. “UPD” в конце статьи.
Здесь я пока сам еще не понял, есть у кого идеи? Возможно, это просто повод задуматься об использовании HttpOnly и SameSite, если они не используются…
Загадочно улыбаться, если ваши сервера на AMD :) Если серьезно — патчи, обновления и т.п. — это понятно. Печально то, что патчи могут значительно снизить производительность IO (на вычисления влияют мало). Поэтому, нужно разумно подойти к вопросу для тех серверов, которые вы полностью контролируете.
Например, если на вашей Intel-овской железке крутится Linux+PostgreSQL и она не запускает какие-то левые приложения — имеет смысл потестить отключение патчей. Говорят, что это может позволить не протерять около 25% производительности.
Вспомним, что при обращении к недопустимому адресу возникает исключение (на уровне железа, не софта). Но для ускорения параллельной обработки чтение может произойти до этой проверки, а если проверка не пройдёт — процессор “откатит” выполнение и начнёт его производить “по-честному”.
Такой подход обычно называют спекулятивным чтением. Этой проблемы нет у AMD, который сначала проверяет, потом читает данные.
Далее я приведу упрощенные рассуждения. Подробности можно прочитать по первой ссылке в разделе “Дополнительная информация”. За кадром останется:
Идея Meltdown (смесь русского языка и псевдокода):
my[256*4096]
.other[i]
.if (i < bounds)
, где bounds
— переменная, “выкинутая их кэша”.other[i]
, а потом считываем my[other[i]]
.my[other[i]]
помещена в кэш, хотя значение other[i]
нам недоступно.other[i]
.Понятно, что путём невероятных усилий мы прочитали только один байт чужой памяти, но процессоры сейчас производительные… А идея, безусловно, изящная.
Что касается Spectre — там нет даже попыток чтения чужой памяти. Чтобы работало спекулятивное выполнение команд, есть Branch Prediction Unit, который и эксплуатируется. Но это уже отдельная статья. Кстати — вот неплохая отдельная статья на Хабре :)
А теперь, после всех этих страшилок давайте немного о более простом способе получить приватную информацию :)
Крайне рекомендую почитать статью I’m harvesting credit card numbers and passwords from your site. Here’s how. Она и веселая, и заставляет задуматься…
UPD: Говорят, также, что подтверждена уязвимость Cortex-A15, Cortex A-17, Cortex A-72, а это процессоры Exynos 5, Exynos 7, Qualcomm Snapdragon 650, 652, 653, 808 и 810, Mediatek Helio X20. Samsung, LG, HTC, Xiaomi, Meizu…