Перейти к содержанию

Спектрология: аппаратные уязвимости процессоров в 2019 году


Рекомендуемые сообщения

На 35-м Chaos Communications Congress, спустя почти год после первой публикации об аппаратных уязвимостях процессоров, получивших названия Meltdown и Spectre, группа исследователей из технологического университета Граца (Австрия) рассказала о том, как сейчас обстоят дела с аппаратными уязвимостями в процессорах. Спойлер: теперь их известно намного, намного больше.

35c3-spectre-meltdown-2019-featured.jpg

 

Кратко объясняем суть Meltdown и Spectre

 

Для начала немного напомним, что это за звери такие — Meltdown и Spectre —и чем они различаются.

Уязвимость Meltdown возникла из-за того, что современные процессоры умеют обрабатывать инструкции вне очереди. Это очень удобно и действительно ускоряет обработку кода, вот только в некоторых случаях процессор успевает обработать тот код, который на самом деле выдает ошибку и который не надо было выполнять. То есть сначала процессор исполняет код, а потом уже выясняется, что эту операцию выполнить невозможно — и такие ситуации случаются именно из-за выполнения инструкций вне очереди.

Конечно, потом результаты этой операции никуда не идут и нигде не используются, но они оставляют следы на микроархитектурном уровне — в кеш-памяти процессора. И их можно оттуда извлечь. Например, это приводит к тому, что из кеша можно достать те данные, к которым не должно быть доступа: скажем, извлечь оставшийся там пароль. Это выглядит так: программа запрашивает доступ к этим данным в памяти — на это она получит вполне резонный ответ от системы, что доступ к ним ей не полагается. Но при этом из-за выполнения операций вне очереди пароль все же будет загружен в кеш, откуда его в результате вполне можно выудить. В общем, Meltdown может возникнуть при попытке выполнить недозволенное действие.

Уязвимость Spectre похожа на Meltdown, но имеет другую причину, впрочем, тоже относящуюся к способам ускорения вычислений в процессоре — она возникла из-за наличия в современных процессорах предсказания ветвлений. По сути, процессор умеет предсказывать с определенной точностью, что после действия A обычно идет действие B, и успевает сделать действие B еще до того, как будут ясны результаты действия A. Если и правда надо было делать B, то все хорошо, ну а если результаты A оказываются такими, что после A нужно было выполнять не B, а C, то процессор забрасывает ту ветвь, где он сделал операцию B, и переходит к другой ветви, где надо делать C.

Поскольку блок предсказания ветвления обучаем, то в большинстве случаев он запоминает закономерности в последовательностях действий — и оказывается, что предсказание ветвлений действительно ускоряет работу (если несколько раз после А надо было делать B, то процессор логично предположит, что и в этот раз после А надо делать именно B). Однако неправильные предсказания тоже случаются (иногда все же надо делать не B, а C, хотя блок предсказания помнит, что после А чаще идет B).

Если долго тренировать систему, показывая ей, что определенная ветвь является правильной и всегда выполняется, а потом поменять параметр так, чтобы она оказалась неверной, то процессор все равно ее сначала выполнит, а затем отменит, поскольку выяснит, что выполняться должна была другая ветвь. Но, как и в случае с Meltdown, результат действия останется, например, в кеш-памяти, и его опять-таки можно будет оттуда извлечь.

Последствия у этой проблемы примерно те же: возможность получить несанкционированный доступ к данным. Spectre может возникнуть только при неправильном предсказании ветвлений — а оно, в свою очередь, возникает просто по теории вероятности.

 

Читать далее >>

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...