SLAP и FLOP: непростые уязвимости в процессорах Apple

Свежая научная работа впервые показывает, как можно на практике эксплуатировать аппаратные уязвимости в современных процессорах.

Уязвимости SLAP и FLOP в процессорах Apple

Интересную атаку, точнее, сразу две атаки с использованием двух разных уязвимостей в процессорах Apple, недавно продемонстрировали исследователи из университетов Германии и США. Представьте себе, что кто-то присылает вам ссылку в чате. Вы открываете ее, и там на первый взгляд нет ничего подозрительного. Никто не просит ввести ваш пароль от рабочей почты, не предлагает скачать сомнительный файл. Возможно, на странице даже есть что-то полезное или интересное. Но пока вы это полезное просматриваете, скрытый код читает информацию из соседней вкладки браузера и таким образом узнает, где вы находитесь в данный момент, что вы в последний раз покупали в популярном интернет-магазине, или, например, похищает текст электронного письма.

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

Подождите, но мы это уже где-то слышали!

Действительно, по своему принципу новые атаки напоминают различные варианты атак типа Spectre, эксплуатирующих другие, хотя отчасти похожие уязвимости в процессорах Intel и AMD. Мы писали об этих атаках раньше: в 2022 году, через 4 года после обнаружения самой первой уязвимости Spectre, мы пришли к выводу, что реального, простого и действенного метода эксплуатации этих уязвимостей нет. Использовать свежеобнаруженные проблемы в чипах Apple также непросто, но есть важное отличие: исследователи в новой работе сразу предлагают достаточно реалистичные варианты атак и доказывают их возможность. Чтобы разобраться, насколько опасны данные уязвимости, давайте коротко, и не вдаваясь в дебри сложного научного исследования, повторим основные принципы всех подобных атак.

Эксплуатация логики спекулятивного выполнения инструкций

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

Аналогичным образом процессор в ходе спекулятивного выполнения может выполнить «не ту» инструкцию. Когда будут закончены предыдущие вычисления, может оказаться, что логика работы программы пошла по совсем другому пути и эту инструкцию не нужно было выполнять. Разработчики CPU применяют различные методы улучшения системы «предсказаний», которая определяет, что именно с высокой вероятностью должно быть выполнено в ближайшем будущем. Для этого собирается статистика выполнения инструкций: если программа в определенной ситуации каждый раз выполняет один и тот же кусок кода, наверняка он же потребуется и в следующий раз.

Причем под «вычислениями» мы можем понимать достаточно важные вещи, например обращение к защищенным областям памяти с секретными данными. Программа, которая не имеет доступа к этой информации, может «натренировать» алгоритм спекулятивного выполнения таким образом, чтобы такое обращение произошло.

До открытия атаки Spectre в августе 2018 года считалось, что это не может привести к утечке данных. Секретная информация (ключи шифрования данных, приватные данные пользователя) загружается в кэш-память процессора, доступ к которой ограничен. Но первооткрыватели Spectre выяснили, что данные из кэш-памяти можно вытаскивать неявным образом: выполняя сотни и тысячи операций чтения данных и измеряя время выполнения этих инструкций. Оказалось, что таким образом можно «угадывать» значения, сохраненные в кэш-памяти: если наша догадка верна, инструкция выполнится на доли секунды быстрее, чем в случае неверного предположения.

Итак, есть две важных составляющих Spectre-подобной атаки: возможность «заставить» алгоритм спекулятивного выполнения инструкций обратиться к запрещенной области памяти и способность прочитать эти данные неявным путем, по стороннему каналу.

Атаки SLAP и FLOP на процессоры Apple

Исследователи из Германии и США написали сразу две научные работы. Дело в том, что они обнаружили две разные уязвимости в процессорах Apple. В одном случае проблема была найдена в функции Load Address Predictor — это одна из множества систем спекулятивного выполнения инструкций, отвечающих за предсказание адреса в оперативной памяти, к которому с наиболее высокой вероятностью обратится выполняемая программа. Вторая уязвимость обнаружилась в системе Load Value Predictor, которая пытается предсказать еще и значение, которое будет прочитано из оперативной памяти.

Атаки назвали соответственно SLAP и FLOP. Два разных исследования понадобились потому, что методики эксплуатации этих уязвимостей заметно отличаются, несмотря на общий принцип и похожий результат. В первом случае исследователи показали, как использовать Load Address Predictor для чтения данных, доступ к которым запрещен. Во втором случае даже чтения данных не происходит, но «верное» предсказание системы о том, какая информация будет прочитана, может, опять же, раскрыть чувствительную информацию.

Насколько опасны атаки SLAP и FLOP?

Почти все атаки типа Spectre имеют массу ограничений, препятствующих практическому их применению во вредоносных целях. Чтобы кто-то мог нанести реальный ущерб с их помощью, должно совпасть слишком много условий:

  • «вредоносный код», задействующий какую-либо уязвимость в системе спекулятивного выполнения, должен выполняться на одном ядре процессора с атакуемым процессом;
  • кража данных часто зависит от наличия кода с определенными характеристиками в ядре операционной системы или другом ПО, которое атакующий не контролирует;
  • крайне сложно провести удаленную атаку по сети или через браузер, поскольку это затрудняет то самое измерение времени выполнения инструкций для получения данных по стороннему каналу.

В результате все предыдущие атаки можно было квалифицировать как очень сложные и применимые разве что при попытке доступа к очень ценным данным. У атакующего, соответственно, должны иметься серьезные ресурсы на разработку подобной атаки. И это в целом хорошие новости, так как закрыть некоторые аппаратные уязвимости в уже выпущенных процессорах либо практически невозможно, либо сопряжено с серьезным падением производительности.

SLAP и FLOP открывают иную перспективу. Они затрагивают самые современные процессоры Apple. Система Load Address Predictor внедрена, начиная с модели Apple M2 для настольных компьютеров и ноутбуков и Apple A15 для мобильных устройств. Более продвинутая технология Load Value Predictor применяется, начиная с моделей Apple M3 и A17.

Эти атаки по-прежнему сложно реализовать. Но важным отличием данного исследования является то, что практические атаки были предложены сразу и их реалистичность была подтверждена. Авторы показывают, как использовать SLAP и FLOP для того, чтобы обойти множество механизмов защиты информации как в самих процессорах, так и в браузере Safari, и получить доступ к конфиденциальной информации.

Уже одного этого может быть достаточно для появления реального вредоносного кода, атакующего устройства Apple. Но есть и дополнительные причины для появления реальных попыток эксплуатации SLAP и FLOP в «дикой природе». Устройства Apple достаточно хорошо защищены. Эксплойты, позволяющие взломать систему безопасности Apple iPhone и получить доступ к секретным данным его владельца, продаются на сером и черном рынках за огромные деньги. При таком спросе на уязвимости все средства хороши. Можно предположить, что аппаратная проблема, которая с высокой долей вероятности не будет до конца закрыта, может быть использована для точечных атак, в тех случаях, когда необходимо похитить особо ценную информацию. Так что не исключено, что мы увидим эксплуатацию подобных уязвимостей в точечных атаках на устройства Apple.

Советы

Как отключить слежку в iOS?

У вас есть iPhone, iPad или iPod? Потратьте несколько минут на настройку служб геолокации, чтобы сэкономить заряд батареи и сохранить конфиденциальность перемещений.