Выявлен новый вариант атаки Zombieload на процессоры Intel

Исследователи из Грацского технического университета (Австрия) раскрыли сведения о новом методе атаки по сторонним каналам ZombieLoad 2.0 (CVE-2019-11135), позволяющем извлечь конфиденциальную информацию из других процессов, операционной системы, виртуальных машин и защищённых анклавов (TEE, Trusted Execution Environment). Проблема затрагивает только процессоры Intel. Компоненты для блокирования проблемы предложены во вчерашнем обновлении микрокода.

Проблема относится к классу MDS (Microarchitectural Data Sampling) и является модернизированным вариантом обнародованной в мае атаки ZombieLoad. 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. Обновления с ядром и микрокодом также уже выпущены для основных дистрибутивов Linux (Debian, SUSE/openSUSE, Ubuntu, RHEL, Fedora). Проблема была выявлена в апреле и исправление было скоординировано 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». Атака в том числе может быть совершена из гостевой системы.

Источник: http://www.opennet.ru/opennews/art.shtml?num=51852