04.12.2021

Компания AMD подтвердила потенциальную подверженность CPU AMD Zen 3 атаке Spectre-STL

Компания AMD опубликовала отчёт с анализом безопасности технологии оптимизации PSF (Predictive Store Forwarding), реализованной в процессорах серии Zen 3. В ходе исследования теоретически подтверждена применимость к технологии PSF метода атаки Spectre-STL (Spectre-v4), выявленного в мае 2018 года, но на практике способных привести к атаке шаблонов кода пока не найдено и общая опасность оценена как незначительная.

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

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

Добавленная в процессоры AMD Zen 3 технология PSF оптимизирует метод STLF (Store-To-Load-Forwarding), спекулятивно выполняющий операции чтения на основе предсказания взаимосвязи между операциями чтения и записи. При использовании классического STLF процессор выполняет операцию «load» с данными, напрямую перенаправленными из прошлой команды «store», не дожидаясь фактической записи в память результата, но удостоверившись, что использованные в командах «load» и «store» адреса совпадают. Оптимизация PSF делает проверку адресов спекулятивной и выполняет операцию «load» до завершения вычисления информации об адресах, если до этого была выполнена пара store/load, манипулирующая одним адресом. В случае ошибки прогноза состояние откатывается назад, но данные остаются в кэше.

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

Компания AMD предоставила ряд методов для полного или выборочного отключения PSF, но с учётом незначительного риска для большинства приложений рекомендовала не отключать данную оптимизацию по умолчанию. Для выборочной защиты процессов, изолированной выполняющих не заслуживающий доверия код, предложено отключать PSF через установку MSR-битов «SSBD» и «PSFD», в том числе для отдельных потоков. Для ядра Linux подготовлены патчи c реализацией опций командной строки «psfd» и «nopsfd», управляющих включением и выключением PSF.

Источник.