L1TF

Компания Intel раскрыла сведения о группе уязвимостей в механизме спекулятивного выполнения CPU, представленных под кодовым именем Foreshadow или L1 Terminal Fault (L1TF).

Уязвимости манипулируют тем, что при доступе к памяти по виртуальному адресу, приводящему к исключению (terminal page fault) из-за отсутствия флага Present в таблице страниц памяти, процессоры Intel спекулятивно рассчитывают физический адрес и загружают данные, если они имеются в L1-кэше. Спекулятивное обращение выполняется до завершения перебора таблицы страниц памяти и независимо от состояния записи в таблице страниц памяти (PTE), т.е. до проверки наличия данных в физической памяти и их доступности для чтения. После завершения проверки доступности памяти, в случае отсутствия флага Present в PTE операция отбрасывается, но данные оседают в кэше и их можно извлечь при помощи методов определения содержимого кэша по сторонним каналам (через анализ изменения времени доступа к прокэшированным и не прокэшированным данным).

L1TF присвоен высокий уровень опасности, так как уязвимость позволяет определить данные по любому физическому адресу в системе, независимо от применяемых механизмов изоляции и виртуализации (например, можно атаковать систему из гостевой системы). Ограничением атаки является то, что для восстановления содержимого L1-кэша код для эксплуатации уязвимости должен выполняться на том же физическом ядре CPU, что и код, вызывающий page fault.

Всего предложено три варианта уязвимости:

  • CVE-2018-3615 — извлечение данных из памяти анклавов Intel Software Guard Extensions (Intel SGX);
  • CVE-2018-3620 — извлечение данных из SMM (System Management Mode) и областей памяти ядра ОС;
  • CVE-2018-3646 — утечка данных из виртуальных машин в системах виртуализации.

Проблемам подвержены только процессоры Intel. Отмечается, что уязвимости уже устранены в прошлом обновлении микрокода. Для исправления первой проблемы достаточно обновления микрокода. Исправление второй и третьей проблемы выпущено в виде патча для ядра Linux и исправления для гипервизора Xen. Обновления уже формируются для дистрибутивов Ubuntu, Oracle, RHEL, SUSE и Debian. Суть добавленной в ядро защиты сводится к использованию в записи PTE с пустым флагом Present ссылки на некэшируемую память (инверсия PTE). Для защиты систем виртуализации задействован сброс L1-кэша при переключении контекста виртуальных машин.

По данным Intel негативное влияние исправления на производительность составляет от 0% (клиентские применения) до 7% (при симуляции нагрузки на web-сервер в виртуальной машине). По тестам Red Hat инверсия PTE не создаёт негативного влияния на производительность, а сброс L1-кэша в большинстве применений замедляет работу не более чем не 2-5%, но в отдельных нагрузках замедление достигает 14% (без обновления микрокода — 27%). Как вариант блокирования уязвимости отмечается и отключение
Hyper-Threading, но в этом случае падение производительности может достигать 30-50%.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.