Под угрозой все. Что такое Meltdown и Spectre и как с ними жить?

Говорят, новое — это хорошо забытое старое. Начало года сполна подтвердило справедливость народной мудрости, но в худшем смысле из возможных. Ведь совсем недавно стало известно о двух опаснейших уязвимостях процессоров за последние двадцать лет. От них не спасёт антивирус, атаку можно провести и на допотопное, и на самое современное железо. «Дыра» в безопасности есть у подавляющего большинства устройств: от десктопов и смартфонов до банкоматов и самолётов. Как жить с этим дальше?

Коротко о главном

Знакомьтесь: Meltdown (CVE-2017-5754). Атака, которая полностью игнорирует защитные механизмы процессора, эксплуатирует контроль за адресными пространствами, реализованный блоком MMU (Memory Management Unit). Краткая суть работы MMU: если при запуске процесса ОС выделила этому самому процессу память, все попытки вылезти за её пределы будут пресекаться. А значит, одновременно запущенные процессы (а стало быть, и приложения) работают параллельно, не мешая друг другу. Различные участки памяти могут иметь разные уровни доступа. Например, приложение получит доступ к памяти, занятой ядром системы даже если соответствующие адреса ему технически доступны. Такая схема успешно применялась не просто годами, а десятилетиями, и ничто не предвещало беды. До недавнего времени.

 

Как это работает

В истории развития PC была эпоха, когда CPU многократно опережал другие модули в быстродействии, и для увеличения реальной производительности инженеры изобрели так называемый «предсказатель ветвлений». Его основная задача — анализировать уже выполненные инструкции и давать предположения, какие расчёты производить не дожидаясь момента, когда будут выполнены условия, приводящие к инициализации данной ветви кода. Если оказывается, что выполненные расчёты не нужны или неверны — процессор просто сбросит уже просчитанные данные. В случае положительного ответа экономится много времени: система может заниматься полезными вычислениями, а не простаивать. Как выяснилось, процессор в ходе работы «по предсказаниям» способен целенаправленно игнорировать MMU. Специально подготовленный код эксплуатирует эту особенность для получения доступа к результатам работы этих самых алгоритмов. Собственно, так и работает Meltdown.

 

Масштаб проблемы

Не имея доступа к защищённым участкам памяти, уязвимость атакует кэш CPU. В него попадают абсолютно все данные, прошедшие через процессор; кроме того, он не сортирует проходящий через  него код на валидность. Данные получены — данные упали в кэш, а дальше пусть процессор определяет, что с ними делать. Хак же реализован таким образом, что может определить чтение данных по заданному адресу, вычисляя, попал ли тот в кэш по скорости доступа (оперативная память намного медленнее процессорной). Остаётся заставить CPU при помощи специального скрипта, имитирующего запросы по нужным адресам, раскрыть информацию о содержании кэша. Имея на руках правильные данные, не составит труда прочитать всю память ядра системы — а значит, и всю физическую память устройства. Уязвимость затрагивает компьютеры под управлением практически любого продукта Intel (всю линейку Core и Xeon, а также Celeron и Pentium на ядрах семейства Core, процессоры Core 2, Pentium 4-й, 3-й и даже 2-й серий) Новые процессоры ARM на ядре Cortex-A75 (Snapdragon 845, новые Exynos и Kirin, высокопроизводительные модели Mediatek 2018 года). Масштаб проблемы сложно переоценить.

 

Беда не приходит одна

Казалось бы, владельцам процессоров AMD, на которых Meltdown пока воспроизвести не удалось, пора вздохнуть с облегчением. Однако плохой Санта явно решил, что в этом году никто не уйдёт обиженным, и занёс всем и каждому счастья под названием Spectre (CVE-2017-5753 и CVE-2017-5715). Не вдаваясь в дебри цифр и алгоритмов, Spectre — технически схожая с Meltdown атака — она тоже эксплуатирует аппаратный уровень процессоров, используя непрямые каналы утечки данных. Будучи сложнее в реализации, она распространяется (хоть и с некоторыми оговорками) на все современные процессоры, вне зависимости от платформы и семейства.

 

Вдвойне сложнее и опаснее

Spectre, в отличие от Meltdown, не подразумевает доступа к памяти атакуемого процесса (как ядра системы, так и пользовательской программы). Они сами выдают все сведения — достаточно «грамотно попросить», а реализуется это благодаря описанному ранее блоку «предсказаний». Выполняя инструкции, похожие на те, что создаёт атакуемая программа, уязвимость позволяет вычислить инструкции «жертвы», сравнив скорости получения переменной из кэша и ОЗУ. Технически метод довольно сложен в исполнении, но и список подверженных атаке устройств внушительнее: это все процессоры Intel, и 64-битные ARM, и почти вся линейка AMD. То есть вообще все CPU, имеющие внеочередной запуск инструкций.

 

Что делать?

Решение на сегодняшний день одно: установка актуального патча для ОС (пользователи Windows 10 могут наконец-то порадоваться неотключаемому центру обновлений — хотфикс прилетит автоматически). Выпущенные заплатки переносят память ядра в изолированную область, обеспечивая защиту не только разграничением привилегий, но и контролем доступа по адресам. Не отстают и разработчики браузеров, которые выпускают исправления для предотвращения потенциальных атак на JS, являющийся локально выполняющимся кодом.

А вот на антивирусы надеяться не стоит. Будучи проблемой аппаратной, Meltdown и Spectre используют штатное поведение системы, а не перевод её в нестандартные или критические состояния. То есть антивирус будет постоянно реагировать на любой «индусский код», если постараться настроить его на отлов специфичных для этих атак повторяющихся циклов. Немного успокаивает тот факт, что сложность исполнения уязвимости вряд ли сделает её популярной у вирусописателей.

 

Правда ли, что новые патчи замедляют процессор?

И да, и нет. Для рядового пользователя ничего страшного не произойдёт. С одной стороны, изоляция памяти ядра действительно сказывается на производительности, и в некоторых сценариях потери могут достигать тех самых 20-30%, которыми пестрят панические статьи в Интернете. С другой — большинство таких сценариев в домашних условиях не используется, а в играх и популярных пользовательских приложениях реальная потеря производительности находится на уровне погрешности. Лучше пожертвовать парой процентов FPS, чем, в случае наступления очередной хакерской эпидемии, задним числом разбивать лоб фэйспалмами.

 

А что насчёт не загружающихся после патча систем на базе процессоров AMD?

Скажем так: если вас коснулась эта напасть, вы уже в курсе происходящего. Для всех остальных — кратко о произошедшем. Некоторые процессоры AMD серии FX после получения вышеупомянутого хотфикса перестали корректно запускаться (из-за особенностей архитектуры ядра и совместимости с материнскими платами предыдущих поколений). Но проблема уже решена — Microsoft временно приостановила апдейт проблемных моделей. AMD тоже в курсе происходящего: исправленное обновление выйдет в течение ближайшей недели.

 

Говорят, под ударом оказались и видеокарты?

Несмотря на разошедшиеся по Интернету сообщения, NVIDIA признаёт наличие уязвимости Spectre в своих продуктах серий GeForce, Quadro, NVS, Tesla и GRID. Соответствующее исправление драйверов, которое вышло в десятых числах января, устраняет возможные лазейки по запуску Spectre на (!) . Никаких подробностей PR-отдел калифорнийской компании не даёт. Впрочем, большинству пользователей беспокоиться не стоит вовсе — архитектура видеоядра значительно отличается от процессорной. Даже если найдётся способ задействовать схожую лазейку, максимум, что получится извлечь из видеокарты, так это хэши, используемые при расчётах криптовалют, или массивы данных из научных проектов. В других случаях подверженные атакам вычислительные блоки обычно хранят графику и шейдеры: какому хакеру они нужны?

 

Что в итоге?

Всё не настолько плохо, как многие рисуют на волне поднявшегося хайпа. Во-первых, уязвимость, пускай и с опозданием, но найдена, изучена и предана огласке. Так что пусть и через пару поколений процессоров (в грядущих Zen+ и Cannon Lake кардинальных изменений архитектуры ждать не стоит), но от неё и ей подобных индустрия избавится окончательно. Во-вторых, большинство людей, не использующих в повседневной работе уязвимые сценарии (вроде той же виртуализации), с потерей производительности практически не столкнутся. И наконец, сложность исполнения хакерской атаки и предпринятые против Meltdown и Spectre меры сделают её непривлекательной для злоумышленников. Цена атаки будет настолько велика, что она больше подойдёт для взлома крупной корпорации, чем пользовательских устройств. Поэтому просто не забывайте обновлять свою ОС и играйте спокойно.

 

Источник: 4pda.ru