Раскрыты две новые уязвимости механизма спекулятивного выполнения в CPU

Компания Intel раскрыла информацию о двух новых уязвимостях в механизме спекулятивного выполнения инструкций. Для полного устранения проблем требуется установка обновления микрокода и внесение изменений на стороне операционной системы. Бета-версия обновления микрокода Intel пока предоставлена только OEM-производителям. Для ядра Linux уже предложены необходимые патчи (защита действует только при обновлённом микрокоде). Обновления пакетов с ядром сформированы для RHEL и Ubuntu, и ожидаются для Debian и SUSE. По предварительной оценке исправление проблем приведёт к снижению производительности на 2-8%.

Нераскрытыми остаются детали о ещё 6 уязвимостях (четыре с высоким уровнем опасности, а две со средним), публикация детальной информации по которым ожидается в августе, после истечения эмбарго. Раскрытым уязвимостям присвоен средний уровень опасности. Первая из раскрытых проблем (Spectre 3a, буква добавлена чтобы избежать путаницы, так как вариант 3 может трактоваться как уязвимость Meltdown) позволяет прочитать содержимое системных регистров, а вторая (Spectre 4) даёт возможность прочитать данные из закрытых областей памяти. Проблемы не специфичны для процессоров Intel и архитектуры x86 и также проявляются в CPU AMD, ARM и IBM (POWER).

  • Spectre 4 (CVE-2018-3639, SSB — Speculative Store Bypass) — метод атаки напоминает Spectre 1, но базируется на восстановлении осевших в процессорном кэше данных после отбрасывания результата спекулятивного выполнения операций при обработке чередующихся операций записи и чтения с использованием косвенной адресации.

    Когда операция чтения следует за операцией записи (например, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), смещение адреса для чтения уже может быть известно из-за выполнения похожих операций (операции чтения выполняются значительно чаще) и процессор может спекулятивно выполнить чтение раньше записи, не дожидаясь пока будет вычислено смещение косвенной адресации для записи. Если после вычисления смещения выявлено пересечение областей памяти для записи и чтения, процессор просто отбросит уже спекулятивно полученный результат чтения и повторит эту операцию.

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

    Проблема выявлена исследователями Google Project Zero при участии представителей Microsoft Security Response Center (MSRC). Возможность применения методов восстановления содержимого кэша при помощи выполнения JavaScript-кода в web-браузерах уже достаточно эффективно блокируется благодаря ограничению точности таймера. Поэтому уязвимость представляет опасность в основном для систем массового доступа (серверы хостинга, системы виртуализации и облачные платформы и т.п.), на которых атакующий может выполнить свой код. Для защиты на уровне операционной системы для процессоров Intel предложена техника SSBD (Speculative Store Bypass Disable), основывающаяся на применении нового MSR-бита, который будет доступен после обновления микрокода.

  • Spectre 3a (CVE-2018-3640, RSRE — Rogue System Register Read) — может привести к чтению содержимого системных регистров и получению информации о параметрах работы систем. Проблема выявлена исследователями из компании SYSGO AG.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.