L1DES (CacheOut) и VRS — новые уязвимости в микроархитектурных структурах CPU Intel
28 января 2020 года
Компания 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 остаются применимы.
В итоге атакующий может добиться определения вытесненных из кэша первого уровня данных, которые были изменены в ходе выполнения приложения, до этого занимавшего текущее ядро CPU, или приложений, параллельно выполняющихся в других логических потоках (hyperthread) на том же ядре CPU (отключение HyperThreading сводит на нет эффективность атаки). В отличие от атаки L1TF, L1DES не позволяет выбирать конкретные физические адреса для проверки, но даёт возможность пассивно отслеживать активность в других логических потоках, связанную с загрузкой или сохранением в память значений.
На базе L1DES различные команды исследователей разработали несколько вариантов атак, которые потенциально позволяют извлечь конфиденциальную информацию из других процессов, операционной системы, виртуальных машин и защищённых анклавов SGX.
- Команда VUSec адаптировала метод атаки RIDL для уязвимости L1DES. Доступен прототип эксплоита, который в том числе обходит предложенный Intel метод защиты от MDS, основанный на использовании инструкции VERW для очистки содержимого микроархитектурных буферов в момент возвращения из ядра в пространство пользователя или при передаче управления гостевой системе (исследователи изначально настаивали, что VERW (очистки микроархитектурных буферов) для защиты недостаточно и требуется полный сброс кэша L1 при каждом переключении контекста).
- Команда ZombieLoad обновила свой метод атаки c учётом уязвимости L1DES.
- Исследователи из Мичиганского университета разработали собственный метод атаки CacheOut ( PDF (Архивная копия от 5 августа 2020 на Wayback Machine)), позволяющий извлечь конфиденциальную информацию из ядра операционной системы, виртуальных машин и защищённых анклавов SGX. Метод базируется на манипуляциях с механизмом асинхронного прерывания операций (TAA, TSX Asynchronous Abort) для определения содержимого буфера заполнения после утечки данных из кэша L1D.
Вторая уязвимость 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 секунды.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.