Группа исследователей из Грацского технического университета (Австрия), ранее известная разработкой атак MDS, NetSpectre, Throwhammer и ZombieLoad, раскрыла сведения о новом методе атаки по сторонним каналам (CVE-2021-46778) на очереди планировщика процессоров AMD, применяемые для планирования выполнения инструкций в разных исполнительных блоках CPU. Атака, получившая название SQUIP, позволяет определить используемые при вычислениях в другом процессе или виртуальной машине данные или организовать скрытый канал связи между процессами или виртуальными машинами, позволяющий обмениваться данными в обход системных механизмов разграничения доступа.
Проблеме подвержены CPU AMD на базе микроархитектур Zen первого, второго и третьего поколений (AMD Ryzen 2000-5000, AMD Ryzen Threadripper, AMD Athlon 3000, AMD EPYC) при использовании технологии одновременной многопоточности (SMT). Процессоры Intel атаке не подвержены, так как в них используется одна очередь планировщика, в то время как в уязвимых процессорах AMD для каждого исполнительного блока применяются отдельные очереди. В качестве обходного пути для блокирования утечки информации компания AMD рекомендовала разработчикам использовать алгоритмы, математические вычисления в которых всегда выполняются за постоянное время, не зависимо от характера обрабатываемых данных, а также избегать ветвления на основе секретных данных.
Атака основана на оценке уровня возникновения конфликтов (contention level) в разных очередях планировщика и проводится через измерение задержек при запуске проверочных операций, выполняемых в другом потоке SMT на том же физическом CPU. Для анализа содержимого использован метод Prime+Probe, подразумевающий заполнение очереди эталонным набором значений и определение изменений через измерение времени доступа к ним при повторном заполнении.
В ходе эксперимента исследователям удалось полностью воссоздать закрытый 4096-битовый RSA-ключ, используемый для создания цифровых подписей при помощи криптографической библиотеки mbedTLS 3.0, в которой для возведении числа в степень по модулю применяется алгоритм Монтгомери. Для определения ключа потребовалось выполнить 50500 трассировок. Общее время атаки заняло 38 минут. Продемонстрированы варианты атаки, обеспечивающие утечку между разными процессами и виртуальными машинами, управляемыми гипервизором KVM. Также показано, что метод можно использовать для организации скрытой передачи данных между виртуальными машинами со скоростью 0.89 Mbit/s и между процессами со скоростью 2.70 Mbit/s при уровне ошибок менее 0.8%.