В чем проблема с процессорами Intel, AMD и ARM? И это действительно замедлит мой компьютер?

  1. Круг безопасности или немного архитектуры
  2. Ошибка в процессорах под микроскопом
  3. Как вы можете использовать этот тип ошибки?
  4. Мой компьютер станет медленнее?
  5. Обновление - мы получили позицию AMD

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

Но что именно была найдена ошибка? Что заставляет компьютер тормозить и будет ли он таким обременительным? Давайте попробуем объяснить это.

Круг безопасности или немного архитектуры

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

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

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

Ошибка в процессорах под микроскопом

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

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

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

Соответствующие исправления уже подготовлены и будут применены в ближайшем будущем или уже были внедрены (например, для macOS они были в версии 10.13.2, реализованной в декабре прошлого года).

Как вы можете использовать этот тип ошибки?

Когда мы загружаем в документация операционных систем Мы видим, что данные ядра хранятся в непредсказуемых местах. Насколько это возможно, разработчики операционных систем реализовали метод размещения их по случайным (или псевдослучайным) адресам, чтобы затруднить доступ к ним в случае такого типа проскальзывания , которое мы наблюдаем в последние дни. Так в чем же проблема? В конце концов, опасность должна быть минимизирована благодаря этому методу (так называемая рандомизация адресного пространства ядра ).

Информация о методах использования этой уязвимости широко не публиковалась, но сервис Регистр он проанализировал электронное письмо, отправленное инженером AMD, из которого выяснилось, что уязвимость может быть использована благодаря функции процессора Intel, называемой спекулятивным выполнением . О чем это? Чтобы повысить эффективность переключения между режимами работы, процессор пытается предсказать, какой код будет запущен следующим при переключении режимов.

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

Эти подозрения подтвердились. Пользователь Twitter @brainsmoke Несколько часов назад продемонстрировал программу, которая получает доступ к данным режима ядра следующим образом:

Инженеры из Google ночью они опубликовали страницу на котором приводятся дальнейшие детали атак (Meltdown - это подверженные процессоры Intel, Spectre - это процессоры Intel, AMD и ARM). Также был подтвержден доступ к памяти хоста из виртуальной машины и, следовательно, доступ к другой виртуальной машине. Это нарушение одной из святостей виртуализации, то есть полной изоляции машин.

Мой компьютер станет медленнее?

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

Так где же в СМИ сообщается значение от 5 до 30 процентов? Это результат проверки наихудшего возможного сценария, при котором приложение часто требует, чтобы система переключалась между режимами. К сожалению, есть такие приложения. Например, базы данных и приложения работают на виртуальных машинах. Один из программистов работает на сервере PostgreSQL Подсчитано, что замедление операций для этой базы составляет от 17 до 23 процентов. Ошибка затронет самых крупных игроков на рынке облачных вычислений и инфраструктуру как услугу , а именно Amazon, Azure, Google Cloud. Это довольно парадоксальная ситуация, в которой исправление ошибки вызывает столько проблем.

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

Обновление - мы получили позицию AMD

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

Название атаки от Google Reasearch Подробности Bounds Check Bypass Решено путем обновления программного обеспечения (операционной системы). Влияние на производительность незначительно. Branch Target Injection (Spectre) Различия в архитектуре между Intel и AMD приводят к тому, что риск атаки близок к нулю. До сих пор это не было продемонстрировано на практике на AMD Rogue Data Cache Load (Meltdown). Атака невозможна на процессоры AMD из-за различий в архитектуре

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