Новые уязвимости Intel: подвержены все CPU с Hyper-Threading

Опубликовано:

intelЗа выявленными в прошлом году уязвимостями Spectre и Meltdown, а также последовавшими вариантами Next-Gen, тоже использующими метод атаки по сторонним каналам, теперь последовала ZombieLoad. Принцип атаки ZombieLoad похож на другие ранее выявленные уязвимости, атаке подвержены все процессоры Intel с 2011 года. Восьмое и девятое поколение Core, с другой стороны, уже защищены на аппаратном уровне от ZombieLoad - но не от других атак MDS.

Атака опирается на технологию Microarchitectural Data Sampling (MDS), которая позволяет атакующему получить доступ к памяти и коду программы, которые принадлежат другому приложению. Intel уже опубликовала соответствующую страницу (Microarchitectural Data Sampling Advisory), на которой приведены сведения о четырех признанных уязвимостях.

Уязвимости с кодами CVE и описаниями приведены ниже.

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

Проблемы в данной сфере были продемонстрированы уязвимостями Spectre, то же самое касается и последних уязвимостей MDS.

По свей видимости, ошибки в реализации Hyper-Threading (HT) позволяют одному процессу получить доступ к данным другого процесса. Единственным способом защиты на данный момент является отключение HT. Впрочем, Intel уже работает с разработчиками операционных системы и hypervisor над выпуском программных патчей, которые смогут закрыть уязвимости вместе с обновлением микрокода. Они должны усилить изоляцию между отдельными процессами. Что, в свою очередь наверняка повлияет на производительность, пусть даже незначительно.

Процессоры Core восьмого и девятого поколений уже имеют аппаратную защиту от уязвимости ZombieLoad, но не от других атак MDS. В случае многих моделей планируется обновление микрокода. Intel опубликовала полный список (PDF) уязвимых процессоров. В результате CPU вплоть до Sandy Bridge должны получить обновления микрокода. За исключением некоторых серверных моделей Sandy Bridge.

На данный момент сложно оценить последствия, к которым приведет обнаружение уязвимости Microarchitectural Data Sampling. Конечно, вряд ли владельцы крупных серверных ферм и VM были рады узнать о еще одном планируемом снижении производительности. С другой стороны, любые уязвимости должны своевременно обнаруживаться и закрываться. Дополнительные подробности можно получить на сайте https://zombieloadattack.com.

Обновление:

Информация об уязвимостях появилась вчера вечером, за ночь она обросла подробностями. Но сначала позвольте ответить на несколько вопросов, которые задают наши читатели.

Microarchitectural Data Sampling - общее название технологии, на которую опираются уязвимости. Соответствующие атаки называются ZombieLoad, RIDL и Fallout. С помощью RIDL (Rogue In-Flight Data Load), например, можно извлечь важные данные из конвейера CPU. Для этого анализируется поток данных различных внутренних буферов, на основе чего и получается найти нужную информацию. RIDL можно выполнить удаленно через облако, а также и через простой код JavaScript в браузере - даже на защищенных VM или Secure Enclave. Атака Fallout направлена на считывание буферов данных, подобно Meltdown.

Какие процессоры уязвимы?

Выше мы отметили, что уязвимы все модели с 2011 года по сегодняшний день, а в CPU Core восьмого и девятого поколений уже есть аппаратная защита от ZombieLoad. Но эти сведения не совсем точные. Intel опубликовала список (PDF) всех уязвимых процессоров. И тот же Core i9-9900K на старом степпинге 12 (Intel64 Family 6 Model 158 Stepping 12) аппаратно не защищен, но в новом степпинге 13 (Intel64 Family 6 Model 158 Stepping 13) защита уже имеется. Также эти сведения касаются только атаки ZombieLoad, другим уязвимостям MDS подвержены и новые процессоры Intel.

Судя по всему, новой уязвимости MDS подвержены только процессоры Intel. AMD и другие производители CPU пока не дали комментариев относительно ZombieLoad и RIDL, по поводу уязвимости Fallout они уже высказались:

AMD: "After reviewing the paper and unsuccessfully trying to replicate the issue, AMD believes its products are not vulnerable to the described issue."

ARM: "After reviewing the paper and working with architecture licensees we are not aware of any Arm-based implementations which are affected by this issue. We thank VU Amsterdam for their research."

Насколько сильным будет падение производительности?

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

Влияние на производительность зависит от сценария использования и приложений. Небольшой прирост производительности Xeon Cascade Lake по сравнению с моделями Skylake был "съеден" защитой от уязвимостей Spectre и Meltdown, такую же ситуацию мы наверняка получим и с MDS.

Некоторые разработчики дистрибутивов Linux уже довольно давно рекомендуют пользователям отключать Hyper-Threading: "If you have any untrusted code running in VMs, and need to prevent the risk of data leakage, the only available option at the moment is to disable hyper-threading." И данная рекомендация наверняка станет еще более актуальной после публикации уязвимостей MDS.

Google на своей Chrome OS решила отключить Hyper-Threading по умолчанию: "To protect users, Chrome OS 74 disables Hyper-Threading by default."

Intel придется сражаться еще долго

Появление других уязвимостей, похожих на Spectre и Meltdown, было лишь вопросом времени. Внутренние исследования Intel выявили потенциальные проблемы с Microarchitectural Data Sampling еще до того, как их обнаружили независимые исследователи. Но только помощь последних позволила рассмотреть проблему со всех ракурсов и быстро на нее отреагировать.

Возникает вопрос: когда Intel сможет избавиться от подобных проблем? Похоже, что здесь виноваты фундаментальные принципы разработки архитектур. Другие производители CPU, вроде бы, пока не подвержены MDS, но, как показывает прошлый опыт, их дизайны тоже не безупречны. Будем надеяться, что инженеры смогут лучше защищать процессоры в будущем. Особенно это касается серверного сегмента, где данная тема для Intel стоит весьма остро.