Упоминания о Spectre и Meltdown достаточно, чтобы вызвать мурашки по спине InfoSec. Некоторые из этих пакетов уязвимостей безопасности связаны со спекулятивным выполнением и с тем, как процессор может утечь данные при выполнении кода спекулятивным образом. На этой неделе AMD упредила пространство безопасности, подробно описав потенциальные проблемы безопасности в отношении своей новой функции Predictive Store Forwarding на основе Zen 3, предназначенной для повышения производительности кода путем прогнозирования зависимостей между загрузками и хранилищами. AMD ясно указывает на то, что большинству пользователей не нужно будет предпринимать никаких действий, так как риск любого нарушения для обычного использования потребителями низок, и ни один известный код не является уязвимым.

Яндекс

Прогнозы создают пристрастие к данным

Современные процессоры используют ряд умных приемов для повышения производительности. Некоторые из этих методов подпадают под заголовок «спекуляции» — на высоком уровне, когда процессор запускает код как простую ветвь «истина / ложь», вместо того, чтобы ждать, пока результат этой проверки «истина / ложь» поступит из памяти, он начнет выполнять обе ветки одновременно. Когда верный / ложный результат возвращается из памяти, ветвь с правильным ответом сохраняется, а другая уничтожается. Современные процессоры также предсказывают адреса памяти в повторяющихся циклах или значения в последовательности, узнавая, какой код уже был обработан. Например, если ваш цикл увеличивает адрес загрузки на 1024 байта каждый цикл, на 100th Цикл, процессор узнал, откуда он ожидает следующую загрузку. Все это довольно умно и обеспечивает большую производительность.

Читайте также:
Хакеры могут удаленно управлять Siri

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

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

Предиктивная переадресация магазинов

Документ AMD на этой неделе представляет собой анализ безопасности своей новой функции Predictive Store Forwarding (PSF) внутри Zen 3. PSF определяет шаблоны выполнения и общие черты в повторяющемся коде сохранения / загрузки, известном как пересылка от магазина к загрузке. PSF позволяет потоку строить предположения о следующем результате от сохранения до загрузки, прежде чем ждать, чтобы увидеть, нужен ли этот результат вообще. Если результат в конечном итоге понадобится, тогда нам не нужно было ждать, и предсказание / предположение выполнили свою работу и обеспечили дополнительную производительность.

Читайте также:
Массовое производство чипов Exynos 8890 для Samsung Galaxy S7 начнется в декабре

AMD определила, что ее функция PSF может быть уязвима по двум причинам.

Во-первых, схема пересылки от магазина к загрузке может неожиданно измениться. Если пара сохранение / загрузка основана на фиксированном шаблоне зависимости (например, фиксированной длине шага данных с использованием внешнего множителя), функция PSF изучает этот шаблон и продолжает работу. Если эта зависимость внезапно изменится или станет фактически случайной, функция PSF будет продолжать спекулировать до тех пор, пока не узнает новый шаблон зависимости. Поскольку в это время он продолжает спекулировать, он может втягивать ненужные данные в кеши, которые могут быть проверены внешними потоками, или время доступа к этим конфиденциальным данным изменится для внешних потоков, и это можно будет отслеживать.

Во-вторых, PSF может быть уязвим из-за выравнивания памяти / совмещения предсказаний с зависимостями. PSF предназначен для работы и отслеживания данных на основе выравнивания адресов памяти. В результате, когда предположение «магазин-загрузка» происходит с выравниванием, если зависимость находится в смеси этих предположений, и зависимость заканчивается тем, что не соответствует прогнозируемым значениям, это может привести к неверному предположению. Данные по-прежнему действительны для предположений, которые не будут использоваться, но в этом заключается проблема — эти данные могут быть конфиденциальными или выходить за пределы памяти рассматриваемого потока.

Ограничения

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

Читайте также:
Huawei ShotX доступен для предварительного заказа

Обучение PSF также ограничено контекстом — ряд значений, связанных с потоками (CPL, ASID, PCID, CR3, SMM), определяют контекст, и если любое из них изменяется, PSF сбрасывает то, что он узнал, запускает новое как был создан новый эффективный контекст. Переключение контекста также происходит с системными вызовами, а также сбрасывает данные.

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

Влияние на потребителей, пользователей и предприятие

AMD (и ее партнеры по безопасности) определили, что воздействие эксплуатации PSF аналогично спекулятивному обходу хранилища (Spectre v4), и проблема безопасности возникает, когда код реализует контроль безопасности, который можно обойти. Это может произойти, если в программе размещен ненадежный код, который может повлиять на то, как другой код спекулирует — AMD ссылается на то, что веб-браузер может осуществить такую ​​атаку, аналогичную другим уязвимостям типа Spectre.

Несмотря на то, что они похожи на другие атаки Spectre, анализ безопасности AMD показывает, что злоумышленник должен эффективно обучить PSF потока с помощью вредоносного кода в том же контексте потока. Это довольно сложно сделать изначально, но может быть вызвано доступом с повышенным уровнем безопасности. При этом PSF не встречается в отдельных адресных пространствах, задействованных с помощью текущих аппаратных механизмов, таких как Secure Encrypted Virtualization. Данные PSF сбрасываются, если происходит недопустимый доступ к данным.

Читайте также:
Umi Zero 2 убийца YotaPhone

Для корпоративного рынка AMD заявляет, что риск безопасности снижается за счет аппаратной изоляции адресного пространства. Если у объекта нет способа изолировать адресное пространство в своем развертывании, PSF можно отключить, установив либо MSR 48h бит 2, либо MSR 48h бит 7 на 1. Единственные продукты, которые будут реализованы на сегодняшний день, — это процессоры Ryzen 5000 и Процессоры EPYC Milan 7003.

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

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