Новая атака ZombieLoad 2.0

Появился новый метод атаки на процессоры Intel — ZombieLoad 2.0. С его помощью атакующий может получить конфиденциальную информацию из процессов, операционных систем, виртуальных машин и защищённых анклавов (TEE). Метод блокировки атаки предложили во вчерашнем обновлении микрокода.

В мае Intel опубликовали отчёты про атаку ZombieLoad, а исследователи из Грацского технического универститета создали модификацию 2.0. Эта атака из класса MDS, а это значит, что она основывается на применении методов анализа по сторонним каналам к данным в микроархитектурных структурах. Например, в буферах заполнения (Line Fill Buffer) и хранения (Store Buffer), в которых временно сохраняются данные, используемые в процессе выполнения операций Load и Store.

Как это работает?

Новый вариант атаки Zombieload основывается на утечке, возникающей при работе механизма асинхронного прерывания операций (TAA, TSX Asynchronous Abort), реализованного в расширении TSX (Transactional Synchronization Extensions), предоставляющем средства для работы с транзакционной памятью, позволяющей повысить производительность многопоточных приложений за счёт динамического исключения лишних операций синхронизации (поддерживаются атомарные транзакции, которые могут быть либо приняты, либо прерваны). В случае прерывания, операции, выполненные с транзакционным регионом памяти, откатываются.

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

Атака сводится к открытию TSX транзакций и созданию условий для их асинхронного прерывания, во время которого возникают условия для утечки содержимого внутренних буферов, спекулятивно заполненных данными из выполняемых на том же ядре CPU операций чтения памяти. Утечка ограничена текущим физическим ядром CPU (на котором выполняется код атакующего), но так как микроархитектурные буферы совместно используются разными потоками в режиме Hyper-Threading, возможно возникновение утечки операций с памятью, выполняемых в других потоках CPU.

Атаке подвержены некоторые модели восьмого, девятого и десятого поколений процессоров Intel Core, а также Intel Pentium Gold, Intel Celeron 5000, Intel Xeon E, Intel Xeon W и второе поколение Intel Xeon Scalable. В том числе атаке подвержены и новые процессоры Intel на базе представленной в апреле микроархитектуры Cascade Lake, изначально не подверженной атакам RIDL и Fallout. Кроме Zombieload 2.0 исследователи также выявили возможность обхода ранее предложенных методов защиты от MDS-атак, основанных на использовании инструкции VERW для очистки содержимого микроархитектурных буферов в момент возвращения из ядра в пространство пользователя или при передаче управления гостевой системе.

В отчёте Intel утверждается, что в системах с разнородной нагрузкой возможность проведения атаки затруднена, так как утечка из микроархитектурных структур охватывает всю активность в системе и атакующий не может влиять на источник извлекаемых данных, т.е. может лишь накапливать всплывающие в результате утечки сведения и пытаться выявить среди этих данных полезную информацию, без возможности целенаправленно перехватить данные, связанные с конкретными адресами памяти. Тем не менее, исследователями опубликован прототип эксплоита, работающий в Linux и Windows, а также продемонстрирована возможность применения атаки для определения хэша пароля пользователя root. Возможно проведение атаки из гостевой системы для накопления данных, которые фигурируют в операциях других гостевых систем, хост-окружения, гипервизора и анклавов Intel SGX.

Что с этим делать?

Исправления для блокирования уязвимости включены в кодовую базу ядра Linux и вошли в состав выпусков 5.3.11, 4.19.84, 4.14.154, 4.9.201 и 4.4.201. Обновления с ядром и микрокодом также уже выпущены для основных дистрибутивов (DebianSUSE/openSUSEUbuntuRHELFedoraFreeBSD). Проблема была выявлена в апреле и исправление было скоординировано Intel с разработчиками операционных систем.

Простейшим методом блокирования Zombieload 2.0 является отключение поддержки TSX в CPU. Предложенное для ядра Linux исправление включает несколько вариантов защиты. Первый вариант предлагает параметр «tsx=on/off/auto», позволяющий управлять включением расширения TSX в CPU (значение auto отключает TSX только для уязвимых CPU). Второй вариант защиты включается параметром «tsx_async_abort=off/full/full,nosmt» и основан на очистке микроархитектурных буферов, во время переключения контекста (флаг nosmt дополнительно отключает SMT/Hyper-Threads). Для проверки подверженности системы уязвимости в sysfs предусмотрен параметр «/sys/devices/system/cpu/vulnerabilities/tsx_async_abort».

Кроме того, в обновлении микрокода устранена ещё одна уязвимость (CVE-2018-12207) в процессорах Intel, которая также блокирована в свежем обновлении ядра Linux. Уязвимость позволяет непривилегированному атакующему инициировать отказ в обслуживании, приводящий к зависанию системы в состоянии «Machine Check Error». Атака в том числе может быть совершена из гостевой системы.

Опубликовано по материалам opennet.ru

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

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