В конце апреля исследователи из университетов США и Китая опубликовали научную работу, в которой описывается свежая аппаратная уязвимость в процессорах Intel. Новая проблема достаточно специфическая, и пока её нельзя эксплуатировать отдельно — только в комбинации с другим методом атаки. Но чисто теоретически уязвимости подвержены даже самые современные процессоры Intel, в которых более ранние проблемы так или иначе решены.
В работе нет подробного описания атаки — само исследование достаточно сложно для понимания, даже на фоне и так непростых предыдущих аппаратных атак. Авторы также решили не придумывать уязвимости какое-то название. Среди важных достижений работы отметим новый метод эксфильтрации секретных данных через новый сторонний канал — регистр флагов EFLAGS.
Для сравнения: уязвимости семейства Spectre опираются на один из методов кражи данных из кэш-памяти процессора. Сценарий атаки в новом исследовании, впрочем, типичный: изучается, как код без особых привилегий может получить доступ к секретной информации, которая в нормальных условиях должна быть защищена.
Первоначальный доступ к информации происходит за счёт спекулятивного выполнения инструкций. Эта стандартная фича любого современного процессора может быть задействована таким образом, что чтение данных, к которым у атакующей программы нет доступа, всё же происходит. В нормальной ситуации такие вычисления отбрасываются, и данные не передаются. Но если информация сохранилась в кэш-памяти самого процессора, появляется возможность её оттуда вытащить по тем самым сторонним каналам.
«Спекулятивная» часть атаки в работе не рассматривается. Авторы просто использовали атаку Meltdown, самую «простую» аппаратную уязвимость в процессорах Intel, обеспечивающую как раз спекулятивный доступ к защищённым данным. В исследовании подробно рассматривается метод «вытаскивания» этой информации.
Процесс схематично показан на графике в начале статьи. Если коротко, код атаки сначала обращается к необходимым данным, затем производит операцию сравнения с неким значением. А потом происходит самое интересное: выполняется инструкция перехода в зависимости от результата предыдущего вычисления из набора команд Jcc (JZ). Результат сравнения сохраняется в регистре флагов EFLAGS (ZF).
Напомним, все эти инструкции выполняются спекулятивно, наш атакующий код не видит результат напрямую. Суть уязвимости заключается в том, что время выполнения команды из набора Jcc зависит от состояния флага ZF. Измеряя время выполнения инструкции, мы узнаем результат сравнения с известным нам числом (совпало или нет), а значит — можем побитно вытаскивать секретные данные.
У метода есть достаточно много ограничений, начиная с необходимости использовать атаку Meltdown. Естественно, работает она только на уязвимых процессорах. В исследовании тестировались Intel Core i7 шестого и седьмого поколения: на них секретную информацию удалось прочитать со 100%-ной надёжностью. Очевидно, что на более современном процессоре (проверялось на Intel десятого поколения) такая атака не работает. Но задержка при выполнении инструкции Jcc присутствует и там, что теоретически дает шанс на разработку соответствующего метода и для новых процессоров.
И всё же, даже этот половинчатый результат был получен в «лабораторных условиях». Не факт, что с использованием данной уязвимости удастся провести реальную атаку: слишком много условий должно совпасть, включая подходящие особенности работы атакуемого программного обеспечения. Если на атакуемой системе в принципе можно выполнить какой-то вредоносный код, даже не имеющий привилегий, есть масса более простых способов повысить уровень доступа. Еще одно ограничение заключается в том, что команда Jcc должна быть выполнена сразу после спекулятивного обращения к данным. Через 6–9 циклов использовать этот канал будет невозможно, поскольку не получится надёжно зафиксировать отличие по времени выполнения. Как и в случае других аппаратных уязвимостей, данная проблема может быть исправлена в следующих версиях процессоров с помощью обновления микрокода или путём внедрения контрмер в программном обеспечении.
Материалы: Блог компании «Лаборатория Касперского»