SPOILER - новая атака на механизм спекулятивного выполнения CPU Intel
Группа исследователей из Вустерского политехнического института (США) и Любекского университета (Германия) раскрыли детали новой атаки SPOILER на механизм спекулятивного выполнения операций в процессорах. Атака специфична для процессоров Intel и не проявляется в CPU AMD и ARM. Предложенная техника атаки дает возможность определить отражение виртуальных адресов в физическую память, что позволяет существенно повысить эффективность проведения известных низкоуровневых атак, манипулирующих раскладкой страниц в физической памяти.
По данным исследователей техника SPOILER позволяет в 4096 раз ускорить проведение атаки Prime+Probe для восстановления данных на основе анализа содержимого процессорного кэша. Метод также применим для определения размещенных друг за другом страниц памяти, что позволяет повысить до 100% эффективность атаки RowHammer, применяемой для выборочного изменения содержимого памяти других процессов. В том числе отмечается возможность реализации подобных атак из виртуальных машин, например, с использованием выполняемого в браузере JavaScript-кода, несмотря на ранее предпринятые в браузерах меры ограничения точности таймера.
Разработанные для Spectre меры защиты не блокируют атаку SPOILER. Атаки класса Spectre манипулируют спекулятивным выполнением отдельных инструкций, результат которых отбрасывается процессором после определения неудачного прогноза, но следы выполнения оседают в общем кэше. Техника SPOILER затрагивает механизм упреждающей загрузки содержимого памяти в регистры процессора. Для взаимодействия с памятью в процессоре используется буфер упроядоченного доступа к памяти (MOB, Memory Order Buffer), реализующий два цикличных буфера - один для записи данных из регистров в память, а другой для чтения из памяти в регистры. Разбор буфера записи всегда выполняется в порядке очереди, а буфер чтения допускает упреждающую загрузку данных, не дожидаясь синхронизации с буфером записи и лишь частично проверяя зависимость на основании неполных сведений об адресе.
Так как буфер записи может влиять на загруженные в буфер чтения данные (например, когда уже спекулятивно прочитаны данные, перезаписываются операцией из буфера записи) при записи анализируется состояние буфера чтения и в случае пересечения, операция спекулятивного чтения отбрасывается и содержимое ячейки буфера обновляется актуальными данными. Подобная манипуляция приводит к возникновению задержки, которую можно измерить.
Таким образом атакующий может оценить выполнение в текущий момент операций записи по тем или иным адресам и из пространства пользователя определить раскладку страниц физической памяти. Для инициирования утечки сведений о раскладке страниц физической памяти можно использовать инструкции rdtscp и mfence.
Проблема проявляется начиная с первого поколения процессоров Intel Core. В процессорах AMD и ARM применяется иная логика обработки буфера упроядоченного доступа к памяти, поэтому проблема их не затрагивает. Компания Intel было уведомлена об уязвимости 3 месяца назад, но исправления пока не предложены. По мнению выявивших уязвимость исследователей программные способы защиты не эффективны для блокирования атак на базе техники SPOILER и проблему можно решить только на аппаратном уровне, ценой заметного снижения производительности.