Компания AMD выпустила отчет, согласно которому на процессорах компании подтверждается теоретическая возможность использовать две новые уязвимости спекулятивного выполнения инструкций. Анализу безопасности были подвергнуты технологии оптимизации PSF (Predictive Store Forwarding), которые реализованы в процессорах серии Zen 3.
Сам метод Spectre-STL — он же Spectre-v4 — был выявлен еще в конце 2018 года. Этот метод атаки, относящийся к семейству Spectre, напоминает механизм Spectre 1. При этом уязвимость v4 базируется на восстановлении остатков данных в процессорном кэше, который формируется после отбрасывания результата спекулятивного выполнения операций с использованием косвенной адресации.
То есть, когда операция чтения следует за операцией записи, смещение адреса чтения может быть заранее известно из-за похожести выполняемых операций. Подобное предугадывание возможно, так как операции чтения выполняются чаще и могут быть произведены из кэша. Благодаря этому процессор имеет возможность спекулятивно выполнить чтение раньше записи, не дожидаясь вычисления смещения адреса. Если после вычисления смещения выявлено пересечение областей памяти, то процессор просто отбрасывает спекулятивный результат и повторяет операцию.
Эта механика позволяет получить доступ к старому результату в виде данных памяти, пока операция сохранения результата не закончена. В случае ошибки предугадывания адреса неудачная операция просто отбрасывается, но следы выполнения остаются в кэше, что позволяет их извлечь на основе анализа изменения времени доступа к данным.
В процессорах на базе Zen 3 реализована технология PSF, которая оптимизирует метод STLF (Store-To-Load-Forwarding) спекулятивного выполнения операций чтения на базе предсказания связи между операциями чтения и записи. Но в случае обычного STLF процессор выполняет load с данными, которые напрямую перенаправлены из прошлой команды store, не дожидаясь конечной записи, но производя проверку на пересечение адресов.
Оптимизированная версия STLF — технология PSF — является более углубленной технологией предугадывания и операция load выполняется до завершения информации об адресах при условии, что до этого пара операций store/load относились к одному адресу. Если ошибка все же происходит, то состояние откатывается до изначального, но записанные данные все равно остаются в кэше.
С прикладной точки зрения атака Spectre-STL осуществима только в рамках привилегий одного уровня, то есть атакующий должен иметь доступ к исследуемой памяти. Наиболее опасна эта атака при векторе через браузеры и системы совместного изолированного выполнения кода, т.е. JVM, JIT, системы изоляции sandbox. В контексте браузера атака позволяет получить доступ к содержимому вкладок через JS-кода. Стоит отметить, что разработчики софта активно блокируют вектор атаки через кэш, используя ограничения точности по таймеру.
Так что главную угрозу атака представляет в рамках систем массового доступа, в том числе серверы на хостинге, системы виртуализации, облачные платформы и так далее.
Кроме инженеров AMD, проблему выявили исследователи Google Project Zero и Microsoft Security Response Center (MSRC). Для защиты на уровне операционной системы для процессоров Intel предложена техника SSBD (Speculative Store Bypass Disable), основывающаяся на применении нового MSR-бита. Так как блокирование приводит к потери производительности, в исправлении для ядра Linux предусмотрена опция speculative_store_bypass_disable, позволяющая отключить защиту.