Выяснилось, что технология SMT в процессорах Ryzen и EPYC позволяет красть конфиденциальные данные
Группа исследователей опубликовала информацию о новой уязвимости, которая затрагивает все процессоры AMD с архитектурами Zen, Zen 2 и Zen 3. Уязвимость получила название SQUIP (Scheduler Queue Usage via Interference Probing — использование очереди планировщика через анализ помех), эксплуатация которой позволяет злоумышленникам получить доступ к чувствительным данным.
Современные суперскалярные процессоры, способные выполнять несколько инструкций одновременно, используют несколько способов для дополнительного повышения производительности. Одним из наиболее эффективных способов является многопоточность (SMT) — она разделяет ядро процессора на несколько логических ядер для выполнения независимых потоков инструкций.
Однако реализация SMT в современных процессорах AMD оказалась уязвима к атаке по сторонним каналам, названной SQUIP. Её суть заключается в анализе исполняемых процессом инструкций за счёт наблюдения за тем, как он конкурирует за ресурсы с исполняемым на том же ядре другим процессом. Подверженность этой проблеме процессоров Zen, Zen 2 и Zen 3 обусловлена тем, что в них используется несколько очередей планировщиков — по одному на каждое исполнительное устройство. Планировщики Zen, Zen 2 и Zen 3 с поддержкой SMT создают соперничество между рабочими нагрузками, что открывает возможность для наблюдения за конкуренцией очередей планировщика через счётчики производительности на одном аппаратном ядре.
Исследователи из Технологического университета Граца, Технологического института Джорджии и некоммерческого исследовательского центра Lamarr Security Research установили, что поток злоумышленника, который благодаря SMT исполняется на том же аппаратном ядре, что и поток жертвы, может проанализировать работу планировщика для получения доступа к конфиденциальным данным. Исследователи продемонстрировали практическую реализацию атаки SQUIP на разных системах с процессорами Ryzen и EPYC. В рамках демонстрации они смогли восстановить ключ шифрования RSA-4096, используемый процессом, который работал в другой виртуальной машине, но на том же ядре CPU.
«Злоумышленник, запустивший свой процесс на том же хосте и ядре CPU, что и вы, может следить за тем, какие типы инструкций вы выполняете. Это возможно из-за разделённого планировщика в процессорах AMD», — рассказал Даниэль Грусс (Daniel Gruss), сотрудник Технологического университета Граца и один из авторов исследования.
Отметим, что похожая схема с отдельными планировщиками на каждое исполнительное устройство используется в процессорах Apple M1 и M2. Однако их уязвимость SQUIP не затрагивает, поскольку в процессорах Apple не поддерживается многопоточность. Проблема может стать актуальной, если в них будет реализован аналог SMT.
Согласно имеющимся данным, AMD была проинформирована о проблеме SQUIP в декабре 2021 года, ей присвоили идентификатор CVE-2021-46778 и рейтинг серьёзности «средний». На этой неделе AMD опубликовала бюллетень с информацией о существовании уязвимости в процессорах с архитектурами Zen, Zen 2 и Zen 3. «Для смягчения уязвимости AMD рекомендует разработчикам программного обеспечения использовать существующие передовые подходы, такие как алгоритмы с постоянным временем выполнения и отказ от зависимых от секретных данных потоков управления», — сказано в рекомендации AMD.