На прошлой неделе исследователь Тавис Орманди из команды Google Information Security опубликовал подробности о новой уязвимости в процессорах AMD поколения Zen 2. Эта аппаратная проблема связана с ошибкой в логике работы процессоров, которую AMD, к счастью, решает обновлением микрокода. Исправление уже вышло, но пока только для серверных процессоров EPYC, где эта проблема наиболее актуальна. Патчи для десктопных и мобильных процессоров Zen 2, которые выпускались в период с 2019 по 2022 год, AMD обещает выпустить до конца 2023 года.

Пример на скриншоте выше максимально коротко описывает уязвимость. На GitHub также выложен работающий Proof of Concept. При удачном стечении обстоятельств Zenbleed позволяет извлекать информацию, хранящуюся в регистрах процессора, надёжно и быстро: до 30 килобайт в секунду на каждое ядро. Хотя PoC написан под Linux, эксплуатация уязвимости возможна в любой операционной системе.

В своей публикации Тавис Орманди объясняет суть уязвимости. Ключевой ошибкой оказалась особенность работы vzeroupper — инструкции, предназначенной для обнуления «верхней части» 256-битных векторных регистров YMM. Эти регистры появились в 2008 году вместе с расширенным набором инструкций AVX и с тех пор широко используются в процессорах x86-64. В качестве примера использования регистров YMM и инструкции vzeroupper Орманди приводит функцию strlen из библиотеки glibc. При спекулятивном выполнении инструкции и последующем откате регистр остаётся в «неопределённом» состоянии, что и открывает возможность чтения данных, которые записывают в регистровый файл другие процессы. Орманди, в частности, показал вариант, при котором вредоносная программа может перехватывать пароли и ключи шифрования других пользователей в системе.

Опасность Zenbleed в реальных условиях остаётся неизвестной. Специалисты из Cloudflare в своём обзоре допускают теоретическую возможность проведения атаки даже через браузер. Уязвимость в процессорах Zen 2 имеет общие черты с атаками класса Spectre: все они так или иначе полагаются на особенности спекулятивного выполнения инструкций, то есть фундаментальную фичу современных процессоров. Но есть важное отличие: в атаках Spectre секретные данные «вытаскиваются» по сторонним каналам, крайне медленно и с ошибками. Zenbleed позволяет считывать информацию из регистров напрямую и с высокой скоростью.

Отдельным интересным моментом является способ обнаружения уязвимости: Орманди нашёл Zenbleed с помощью фаззинга. В своей публикации он обсуждает особенности применения данного метода для поиска аппаратных уязвимостей и предлагает способы организации подобного тестирования. Например, одновременный запуск одного и того же кода на двух разных процессорах. Если код при этом ведёт себя по-разному, это может указывать на аномалию.

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставь комментарий! Поделись своим мнениемx