Сотрудник компании Google разработал процессорную атаку для свежей уязвимости Downfall (CVE-2022-40982), которая представляет угрозу для несколько семейств микропроцессоров Intel. Проблема позволяет похищать пароли, ключи шифрования и личные данные (например, электронные письма, сообщения или банковскую информацию) пользователей.
Уязвимость CVE-2022-40982 представляет собой side-channel баг типа transient execution и затрагивает все процессоры Intel на микроахитертурах от Skylake до Ice Lake. Эксплуатируя эту проблему, злоумышленник получает возможность извлекать конфиденциальную информацию, которая защищена с помощью Software Guard eXtensions (SGX), аппаратного шифрования Intel, которое отделяет код и данные в памяти от софта в системе.
Специалист Google Дэниел Могими (Daniel Moghimi), обнаруживший проблему и сообщивший о ней Intel, рассказывает, что Downfall злоупотребляет возможностями инструкции gather, которая «сливает содержимое файла внутреннего векторного регистра во время спекулятивного выполнения».
Gather используется для оптимизации памяти в процессорах Intel и применяется для ускорения доступа к разрозненным данным в памяти.
«Инструкция gather, по-видимому, использует временный буфер, который делят между собой родственные потоки CPU, и передает данные другим зависимым инструкциям, причем данные принадлежат другому процессу и выполнению gather, работающим на одном ядре», — объясняет специалист.
Могими создал две техники атак на Downfall: Gather Data Sampling (GDS) — именно такое название использует Intel для обозначения данной проблемы, а также Gather Value Injection (GVI) — которая объединяет GDS с техникой атак Load Value Injection (LVI), которую исследователи создали в 2020 году.
Используя GDS, исследователь, находившийся на виртуальной машине, смог похитить 128- и 256-битные ключи AES с другой виртуальной машины, причем каждая из систем использовала родственные потоки одного и того же ядра процессора.
Менее чем за 10 секунд (по восемь байт за раз), исследователю удалось похитить раундовые ключи AES и объединить их для взлома шифрования.
«В случае AES-128, первый прогон атаки был на 100% успешным для 100 различных ключей. Для AES-256 первый прогон атаки был успешным на 86%», — пишет Могими.
Исследователь рассказывает, что помимо ключей шифрования есть и другие варианты атаки GDS, позволяющие похищать произвольные данные в состоянии покоя благодаря двум условиям, при которых процессор осуществляет предварительную загрузку подобной информации в буферы SIMD-регистра.
Для осуществления атаки Downfall требуется, чтобы злоумышленник находился на том же физическом ядре процессора, что и жертва, но это обеспечивается современной моделью shared-вычислений. При этом локальная программа, например вредоносное ПО, в теории тоже может использовать уязвимость для кражи конфиденциальной информации.
Разработчиков Intel уведомили о проблеме Downfall еще в августе 2022 года, и весь последний год Могими помогал компании в разработке микрокода для устранения проблемы.
Все это время детали уязвимости хранились в тайне, чтобы OEM-производители и поставщики услуг связи могли протестировать и проверить исправления, а также подготовить необходимые обновления для своих клиентов.
Как теперь сообщает Intel, проблема не влияет на Alder Lake, Raptor Lake и Sapphire Rapids, но представляет угрозу для следующих семейства процессоров:
- семейство Skylake (Skylake, Cascade Lake, Cooper Lake, Amber Lake, Kaby Lake, Coffee Lake, Whiskey Lake, Comet Lake);
- семейство Tiger Lake;
- семейство Ice Lake (Ice Lake, Rocket Lake).
При этом инженеры Intel полагают, что попытка использовать уязвимость за пределами контролируемой лабораторной среды будет сложной задачей.
Теперь пользователям продуктов Intel предлагают ознакомиться с руководством по оценке рисков и самостоятельно принять решение об использовании или неиспользовании предлагаемых микрокодов. Дело в том, что существуют определенные опасения по поводу того, что применение исправлений может быть чревато потенциальными проблемами с производительностью.
В целом для устранения проблемы Downfall потребуется модернизация аппаратной составляющей, за которую отрасль пока не готова платить. Могими пишет, что существуют и софтверные альтернативы, однако все они имеют минусы и являются лишь временным решением проблемы. Исследователь перечисляет четыре таких альтернативы, три из которых имеют явные недостатки:
- отключение одновременной многопоточности (SMT) может частично смягчить проблемы GDS и GVI, однако отказ будет сопровождаться потерей производительности на 30%, а утечки при переключении контекста все равно будут происходить;
- запрет проблемных инструкций через ОС и компилятор для предотвращения утечки секретов в gather, но тогда работа некоторых приложений может быть нарушена, и утечки все равно могут происходить;
- отключение функции gather так же может помочь, но приложения, использующие эту инструкцию, будут работать медленнее или прекратят работать вообще;
- предотвращение пересылки данных после gather (например, добавлением инструкции lfence) поможет снизить риски, связанные с Downfall, и именно это решение в итоге использует Intel в своих обновленных микрокодах.
Могими уже выложил связанные с Downfall наработки на GitHub, а также представит доклад о проблеме на конференции Black Hat на этой неделе. Кроме того, эксперт успел дать интервью официальному каналу Intel на YouTube, в котором тоже рассказал о проблеме Downfall в деталях.