L1DES (CacheOut) и VRS — новые уязвимости в микроархитектурных структурах CPU Intel

Компания Intel раскрыла сведения о двух новых уязвимостях в CPU Intel, вызванных утечкой данных из кэша L1D (CVE-2020-0549, L1DES — L1D Eviction Sampling) и векторных регистров (CVE-2020-0548, VRS — Vector Register Sampling). Уязвимости относятся к классу MDS (Microarchitectural Data Sampling) и основываются на применении методов анализа по сторонним каналам к данным в микроархитектурных структурах. AMD, ARM и другие процессоры проблемам не подвержены.

Наибольшую опасность представляет уязвимость L1DES, которая допускает оседание блоков прокэшированных данных (cache line), вытесняемых из кэша первого уровня (L1D), в буфере заполнения (Fill Buffer), который на данном этапе должен быть пустым. Для определения осевших в буфере заполнения данных применимы методы анализа по сторонним каналам, ранее предложенные в атаках MDS (Microarchitectural Data Samping) и TAA (Transactional Asynchronous Abort). Суть ранее реализованной зашиты от
MDS и TAA в очистке микроархитектурных буферов перед переключением контекста, но, как оказалось, при некоторых условиях данные спекулятивно сбрасываются в буферы после операции очистки, поэтому методы MDS и TAA остаются применимы.

L1DES (CacheOut) и VRS - новые уязвимости в микроархитектурных структурах CPU Intel

В итоге атакующий может добиться определения вытесненных из кэша первого уровня данных, которые были изменены в ходе выполнения приложения, до этого занимавшего текущее ядро CPU, или приложений, параллельно выполняющихся в других логических потоках (hyperthread) на том же ядре CPU (отключение HyperThreading сводит на нет эффективность атаки). В отличие от атаки L1TF, L1DES не позволяет выбирать конкретные физические адреса для проверки, но даёт возможность пассивно отслеживать активность в других логических потоках, связанную с загрузкой или сохранением в память значений.

На базе L1DES различные команды исследователей разработали несколько вариантов атак, которые потенциально позволяют извлечь конфиденциальную информацию из других процессов, операционной системы, виртуальных машин и защищённых анклавов SGX.

  • Команда VUSec адаптировала метод атаки RIDL для уязвимости L1DES. Доступен прототип эксплоита, который в том числе обходит предложенный Intel метод защиты от MDS, основанный на использовании инструкции VERW для очистки содержимого микроархитектурных буферов в момент возвращения из ядра в пространство пользователя или при передаче управления гостевой системе (исследователи изначально настаивали, что VERW (очистки микроархитектурных буферов) для защиты недостаточно и требуется полный сброс кэша L1 при каждом переключении контекста).
  • Команда ZombieLoad обновила свой метод атаки c учётом уязвимости L1DES.
  • Исследователи из Мичиганского университета разработали собственный метод атаки CacheOut (PDF), позволяющий извлечь конфиденциальную информацию из ядра операционной системы, виртуальных машин и защищённых анклавов SGX. Метод базируется на манипуляциях с механизмом асинхронного прерывания операций (TAA, TSX Asynchronous Abort) для определения содержимого буфера заполнения после утечки данных из кэша L1D.

    L1DES (CacheOut) и VRS - новые уязвимости в микроархитектурных структурах CPU Intel

Вторая уязвимость VRS (Vector Register Sampling) связана с утечкой в буфер хранения (Store Buffer) результатов операций чтения из векторных регистров, изменённых при выполнении векторных инструкций (SSE, AVX, AVX-512) на том же ядре CPU. Утечка возникает при достаточно редком стечении обстоятельств и вызвана тем, что спекулятивно выполняемая операция, приводящая к отражению состояния векторных регистров в буфере хранения, запаздывает и завершается после очистки буфера, а не до неё. По аналогии с уязвимостью L1DES, содержимое буфера хранения затем может быть определено при помощи методов атак MDS и TAA.

Исследователи из группы VUSec подготовили прототип эксплоита, позволяющего определять значения векторных регистров, полученных в результате вычислений в другом логическом потоке того же ядра CPU. Компания Intel оценила уязвимость VRS как слишком сложную для осуществления реальных атак и присвоила минимальный уровень опасности (2.8 СVSS).

Сведения о проблемах были переданы Intel в мае 2019 года командой Zombieload из Грацского технического университета (Австрия) и группой VUSec из Амстердамского свободного университета, и позднее, после анализа других векторов применения атаки MDS, уязвимости были подтверждены некоторыми другими исследователями. В первый отчёт MDS информация о проблемах L1DES и VRS не была включена из-за отсутствия исправления. Исправление недоступно и сейчас, но оговорённые сроки неразглашения истекли.
В качестве обходных методов защиты рекомендуется отключить HyperThreading. Для блокирования уязвимости на стороне ядра предлагается сбрасывать кэш L1 при каждом переключении контекста (MSR бит MSR_IA32_FLUSH_CMD) и отключить расширение TSX (MSR биты MSR_IA32_TSX_CTRL и MSR_TSX_FORCE_ABORT).

Intel обещает выпустить обновление микрокода с реализацией механизмов для блокирования проблем в ближайшее время. Intel также отмечает, что применение предложенных в 2018 году методов защиты от атаки L1TF (L1 Terminal Fault) позволяет блокировать эксплуатацию уязвимости L1DES из виртуальных окружений. Атаке подвержены процессоры Intel Core, начиная с шестого поколения (Sky, Kaby, Coffee, Whiskey, Amber Lake и т.п.), а также некоторые модели Intel Xeon и Xeon Scalable.

Дополнительно можно отметить усовершенствование эксплоита, позволяющего применить методы атаки RIDL для определения содержимого хэша пароля root из /etc/shadow при периодических попытках аутентификации. Если изначально предложенный эксплоит определял хэш пароля за 24 часа, а после применения утечки при работе механизма асинхронного прерывания операций (TAA, TSX Asynchronous Abort) выполнял аналогичную операцию за 36 секунд, то новый вариант совершает атаку за 4 секунды.

Источник: opennet.ru

Добавить комментарий