Группа Исследователи из университетов Китая и США выявили новую уязвимость в процессорах Intel ведет к утечке информации на результат спекулятивных операций по сторонним каналам, которые можно использовать, например, для организации скрытого канала связи между процессами или обнаружения утечек при атаках Meltdown.
Суть уязвимости заключается в изменении реестра процессора EFLAGS, произошедшее в результате спекулятивного выполнения инструкций, влияет на последующее время выполнения инструкций JCC (переход при выполнении заданных условий).
Спекулятивные операции не завершаются, а результат отбрасывается, но отброшенное изменение EFLAGS можно определить, проанализировав время выполнения инструкций JCC. Спекулятивно выполненные операции сравнения перед переходом, если сравнение прошло успешно, приводят к небольшой задержке, которую можно измерить и использовать в качестве функции сопоставления содержимого.
Атака временного выполнения — это тип атаки, использующий уязвимость технологий оптимизации ЦП. Новые атаки появляются быстро. Побочный канал является ключевой частью атак с временным выполнением для кражи данных.
В этой работе мы обнаружили уязвимость, изменившую регистр EFLAGS во время временного выполнения, что может иметь побочный эффект для инструкции Jcc (Jump Condition Code) на процессорах Intel. Основываясь на нашем открытии, мы предлагаем новую атаку по побочному каналу, которая использует временное время выполнения и инструкции Jcc для доставки данных.
Эта атака шифрует секретные данные путем изменения реестра, что приводит к немного замедлению времени выполнения и может быть измерено злоумышленником для декодирования данных. Эта атака не зависит от системы кэширования.
В отличие от других атак аналогичные по сторонним каналам, новый метод не анализирует изменение времени доступа к кешированным данным и не кэшируется и не требует шага сброса записи EFLAGS в исходное состояние, что затрудняет обнаружение и блокирование атаки.
для демонстрации, исследователи реализовали вариант атаки Meltdown, используя в нем новый метод получения информации о результате спекулятивной операции. Работа метода организации утечки информации при атаке Meltdown успешно продемонстрировано на системах с процессорами Intel Core i7-6700 и i7-7700 в среде с ядром Ubuntu 22.04 и Linux 5.15. В системе с процессором Intel i9-10980XE атака удалась лишь частично.
Уязвимость Meltdown основана на том, что при спекулятивном выполнении инструкций, процессор может получить доступ к приватной области данных, а затем отбросить результат, поскольку установленные привилегии запрещают такой доступ пользовательскому процессу.
В программе спекулятивно исполняемый блок отделяется от основного кода условным переходом, который в реальных условиях срабатывает всегда, но за счет того, что условный оператор использует вычисляемое значение, неизвестное процессору при вытесняющем коде . выполнение, все варианты ветвления выполняются спекулятивно.
В классическом Meltdown, поскольку для спекулятивно исполняемых операций используется тот же кеш, что и для нормально исполняемых инструкций, есть возможность при спекулятивном выполнении устанавливать в кеше маркеры, отражающие содержимое отдельных битов в закрытой области памяти, а затем в нормально исполняемых код для определения его значения путем анализа времени доступа к кэшированным и некэшированным данным.
В новом варианте используется изменение в реестре EFLAGS. как маркер утечки. В демонстрации Covert Channel один процесс модулировал отправляемые данные, чтобы изменить содержимое записи EFLAGS, а другой процесс проанализировал изменение в среде выполнения JCC, чтобы воссоздать данные, отправленные первым процессом.
Наконец, если вам интересно узнать об этом больше, вы можете проконсультироваться с подробности по следующей ссылке.