Спецпроекты

Безопасность Техника

Хроники «чипокалипсиса»: опять нашлись способы обойти защиту от Spectre

Процессоры Intel и AMD некоторых категорий содержат ошибки, позволяющие обходить защиту от Spectre под Linux.

Давно не виделись

Печально знаменитая уязвимость Spectre в процессорах Intel и AMD вновь напомнила о себе. Эксперты Технологического университета Цюриха в Швейцарии (ETH Zurich) описали новый способ обхода защитных механизмов в свежих процессорах, которые должны были блокировать эксплуатацию этой архитектурной ошибки. Гарантированно затронуты дистрибутивы Linux. Эксперты не могут утверждать того же в отношении остальных операционных систем, поскольку не имеют доступа к проприетарному коду.

Новообнаруженная уязвимость затрагивает компонент под названием Indirect Branch Predictor Barrier (Косвенный барьер для предиктора ветвления), в потребительских процессорах Intel 12-14 поколений, а также пятого и шестого поколений серверных процессоров Xeon. Затронуты процессоры AMD серий Zen 1, Zen 1+ и Zen 2.

Spectre представляет собой целую группу аппаратных уязвимостей, которые эксплуатирует принцип спекулятивного выполнения инструкций процессором.

Уязвимость Spectre в процессорах Intel и AMD вновь дает возможность обойти защиту

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

Ключевым компонентом здесь оказывается модуль предсказания переходов (прогнозирования ветвлений) – предиктор. Его использование позволяет сократить время простоя конвейерного выполнения команд как раз за счет предварительной загрузки и исполнения инструкций, которые должны выполниться после выполнения инструкции условного перехода.

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

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

Но регулярно появляются сведения о том, что эти исправления можно обходить тем или иным способом.

Новый способ

Эксперты ETH Zurich продемонстрировали новый такой способ. Точнее, сразу два, поскольку для процессоров Intel и AMD используются разные методики.

В случае Intel речь идет о «межпроцессной» атаке (cross-process), а в случае AMD – пост-барьерной инициализации (post-barrier inception).

Как оказалось, в микрокоде процессоров Intel затесалась ошибка, при которой предиктор (IBPB) не полностью сбрасывает результаты спекулятивного выполнения инструкций при смене контекста. С помощью определенных манипуляций над процедурой выполнения инструкций можно заставить процессор выдать значимую информацию, вплоть до хэша паролей из процесса suid.

В процессорах AMD некорректно реализуется исполнение барьера предиктора на входе в ядре Linux, так что предиктор на выходе может сохранять сброшенные результаты выполнения инструкций, игнорируя IBPB.

Уязвимости позволяют обходить, в том числе, защиту в версии ядра Linux 6.5, которая до сих пор считалась наиболее действенной.

Исследователи проинформировали Intel и AMD об уязвимостях в июне 2024 г. В Intel заявили, что уже в курсе, что уязвимости уже был присвоен индекс CVE (CVE-2023-38575), и что еще в марте было выпущено исправление к микрокоду. Однако исследователи из ETH Zurich утверждают, что это исправление попало не во все операционные системы/дистрибутивы. В частности, под Ubuntu этого исправления нет.

В AMD также сообщили, что уязвимость уже задокументирована и получила индекс CVE-2022-23824. Причем в бюллетене AMD указывается, что уязвимы и процессоры Zen3, хотя в исследовании швейцарцев они не фигурируют. Но в AMD считают, что проблема носит программный, а не аппаратный характер, а поскольку затронуты только старые микроархитектуры, вендор решил никаких исправлений не выпускать.

Эксперты ETH Zurich вместе с разработчиками ядра Linux сейчас готовят патч именно для процессоров AMD.

«Обнаружение новых способов обходить защиту от уязвимостей Spectre – логичное развитие событий, поскольку все исправления против нее по существу носят «косметический» характер, а не устраняют корень проблемы, – указывает Анастасия Мельникова, директор по информационной безопасности компании SEQ. – Решить проблему полностью можно только в корне пересмотрев архитектуры процессоров, а это очень маловероятный вариант. Поэтому будут и новые исправления, и новые способы их обходить».

Роман Георгиев

Короткая ссылка