Новогодняя процессорная уязвимость

Что случилось?

В первые дни нового года во многих средствах массовой информации — не только компьютерных — широко распространилась новость о компьютерных уязвимостях, связанных с архитектурой процессоров Intel и AMD, которые используются в большинстве компьютеров: от персональных до серверных.

Эти уязвимости получили названия: Meltdown (плавление) и Spectre (привидение, призрак). У Spectre выявлены два варианта, поэтому считается, что всего уязвимостей три. Они зарегистрированы в базе данных MITRE под идентификаторами: CVE-2017-5754, CVE-2017-5753 и CVE-2017-5715, соответственно. CVE — Common Vulnerabilities and Exposures — общие уязвимости и риски.

Конечно, они были обнаружены не в Новогоднюю ночь, их изучение началось несколькими годами ранее в ряде университетов и исследовательских подразделений компаний.

Желающие ознакомиться с техническими деталями могут обратиться к подробному описанию уязвимостей: Meltdown и Spectre. Специалисты Google также исследовали эту проблему.

Кратко, суть проблемы заключается в следующем. Все современные операционные системы общего назначения обеспечивают многозадачный режим работы, то есть в них одновременно может работать большое число разных программ. Средствами операционной системы они изолируются как между собой, так и с ядром операционной системы. Разграничиваются и код программ, и относящиеся к ним данные.

С целью ускорения выполнения приложений разработчики процессоров придумали буфер (кэш) для программных команд, исполнение которых прогнозируется или ожидается. Этот-то буфер при определённых условиях и оказался доступен из обычных приложений, а в нём могут оказаться конфиденциальные данные, например, пароли учётных записей.

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

При короткой работе такого скрипта вероятность похищения содержательных и чувствительных данных таким способом не очень велика, но она не является нулевой. И она может существенно возрасти, если HTML-страница с вредоносным скриптом останется открытой надолго.

Масштаб проблеме добавило то, что она касается всех процессоров Intel и, возможно, AMD и ARM, выпущенных в течение очень продолжительного периода.

Компания Intel провела исследование по снижению производительности своих процессоров после применения исправления выявленных уязвимостей. Результаты исследования опубликованы здесь.

Что делать?

Исправления указанных уязвимостей уже выпущены для большинства распространённых операционных систем. Безусловно, их следует установить.

Однако проблема пока полностью не исчерпана. Были сообщения о некотором снижении производительности компьютеров после установки соответствующих исправлений. Также были сообщения о некоторой несовместимости обновлений с процессорами AMD. Кроме того, у некоторых антивирусов возник конфликт с обновлениями.

Всё это говорит о достаточно сложном характере проблемы, касающейся производителей не только процессоров, но и системных плат, и операционных систем.

Сам по себе механизм предикативной буферизации программного кода — speculation control — предназначен для повышения быстродействия компьютерной системы. В некоторых случаях он даёт выигрыш до 30%. Очевидно, если его отключить, производительность системы снизится на величину предыдущего выигрыша.

Проблему можно было полностью устранить, своевременно очищая предикативный буфер, содержащий программные команды, исполнение которых ожидалось. Однако разработчики процессоров и операционных систем ещё не нашли оптимальный и надёжный способ такой очистки.

Пока приходится ограничиться общей рекомендацией следить за выходом исправлений операционных систем и своевременно их устанавливать.

Кстати, в данном случае речь идёт не только об обновлениях операционной системы, но и об обновлениях программного обеспечения системных плат, включая BIOS.

Как проверить?

При получении сообщения о новой уязвимости всегда хочется проверить, нет ли её на вашем компьютере. К сожалению, удобной тестовой утилиты для выявления обсуждаемых уязвимостей пока не выпущено. Точнее, они появляются, но гарантировать надёжность их работы пока нельзя.

Компания Microsoft предложила метод проверки, но он довольно сложен и требует ряда манипуляций в PowerShell.

Проверка наличия уязвимости в Windows

Что в облаках?

В облаках процессоры присутствуют на двух архитектурных уровнях:

  • на реально-аппаратных процессорах функционирует гипервизор, обеспечивающий работу виртуализирующей платформы;
  • на процессорах, эмулированных гипервизором, работают виртуальные машины.

Это означает, что исправляющие обновления нужно устанавливать на обоих уровнях: как в гипервизор, так и в операционные системы виртуальных машин.

Обсуждаемые уязвимости на уровне виртуальной платформы в облаке 1cloud уже исправлены.

Об исправлении операционных систем виртуальных машин нужно позаботиться их владельцам.

Владельцам Windows-серверов следует обратить внимание на то, в некоторых случаях исправления обсуждаемых уязвимостей не будут получены автоматически даже, если опция автоматического обновления операционной системы включена. Об этом можно узнать здесь.

Microsoft Windows

Debian

Ubuntu

Red Hat / CentOS

BSD

  • во время подготовки статьи исправления для этого дистрибутива ещё не было

Заключение

Уязвимости Meltdown и Spectre представляют бо́льшую угрозу не серверам, доступ к которым весьма ограничен, а клиентским устройствам: персональным компьютерам, планшетам, смартфонам, на которых практически постоянно запускаются программы, полученные по сети.

 

Другие статьи: