Уязвимость обнаружена в механизме контекстно-зависимой предварительной выборки данных (data memory-dependent prefetcher, или DMP). Это достаточно новая технология, внедренная пока лишь в новейших чипах Apple и процессорах Intel начиная с 13-го поколения (в последних механизм работает по-другому и данная атака для них не актуальна). DMP входит в набор оптимизаций, направленных на повышение производительности вычислений: в целом такие технологии ранее неоднократно становились источником проблем. Атака была продемонстрирована на ноутбуках под управлением Mac OS с процессорами Apple M1 и M2. Самые современные чипы M3 также содержат эту уязвимую оптимизацию, но в них предусмотрена инструкция, позволяющая отключить DMP для криптографических вычислений. Для более ранних процессоров придется обновлять код более сложными методами, чтобы исключить утечку по стороннему каналу.
Исследование основано на предыдущей
В результате создается ситуация, когда обращение к определенному участку оперативной памяти «выдает» данные, обрабатываемые алгоритмом шифрования. Это ломает главный принцип защиты криптографических алгоритмов, известный как constant-time programming. В любых алгоритмах шифрования пытаются исключить ситуацию, когда ход вычислений зависит от вводимых данных. Потенциальный атакующий работает с алгоритмом шифрования как с «черным ящиком»: особенности работы ему неизвестны. Но он может подавать на вход алгоритма произвольные данные, которые требуется зашифровать. Если скорость работы алгоритма меняется в зависимости от входящих данных, это позволяет в некоторых случаях извлечь приватный ключ, который должен оставаться секретом. В случае DMP происходит похожая ситуация: вредоносная программа не видит данные, обрабатываемые алгоритмом шифрования. Точно так же она не видит и данные, к которым ошибочно обращается механизм предварительной выборки. Но чтение данных из кэш-памяти процессора происходит быстрее, чем из оперативной памяти, и именно этот сторонний канал обеспечивает утечку секретной информации.
Практически атака выглядит следующим образом. Вредоносная программа со стандартными привилегиями в системе обращается к алгоритму шифрования и создает условия для утечки данных. Данные, которые необходимо зашифровать, формируются определенным образом, так, чтобы вызвать срабатывание оптимизации DMP. Оптимизация создает условия для утечки данных, что со временем делает возможным реконструкцию приватного ключа шифрования. Так как мы имеем дело со сторонним каналом, таких обращений должно быть очень много. Утечка 2048-битного ключа шифрования с помощью алгоритма RSA занимает около часа, в случае алгоритма Diffie-Hellman при той же длине ключа атака займет уже два часа. Примечательно, что атака работает даже с новейшими алгоритмами шифрования, защищенными от квантовых вычислений. Для алгоритма Kyber-512 атака также займет час, а вот на реконструкцию ключа для алгоритма Dilithium-2 уйдет около 10 часов. Это данные для процессора Apple M1, и учитывается только время, затраченное на сбор необходимых данных. Их последующая обработка также потребует временных затрат, например еще 4,5 часа для Dilithium-2. Еще одно небольшое ограничение: атакующая программа должна выполняться на одном кластере процессорных ядер с алгоритмом шифрования. В Apple M1 в отдельные кластеры сгруппированы производительные и энергоэффективные ядра.
Задачи «приставить атаку к делу», то есть создать условия, при которых украденный ключ шифрования может быть использован для доступа к другим приватным данным или вообще для какого-то нанесения ущерба жертве, у исследователей не было. Очевидно, что запуск произвольного кода на атакуемом компьютере само по себе является проблемой для пользователя, в таком сценарии вовсе не обязательно эксплуатировать именно эту уязвимость. По смыслу атака похожа на ранее обнаруженные уязвимости Spectre. Все эти аппаратные уязвимости можно рассматривать в контексте обработки особо чувствительных данных. Они также более опасны для виртуального окружения, где клиенты имеют возможность запуска произвольного кода в своей «песочнице». В случае пользовательских (а не серверных) устройств Apple потенциальный ущерб может заключаться в доступе к приватным зашифрованным данным (хранимым как в самой операционной системе, так и в приложениях). Но практическую возможность атаки такого типа еще нужно показать.
Как и в случае Spectre, разработчикам криптографических алгоритмов (в работе, например, исследовались реализации для языка программирования Go и библиотеки OpenSSL) придется обновлять код так, чтобы исключить возможность подобной атаки. Это единственный способ избавиться от уязвимости. Закрыть патчем эту аппаратную проблему сразу для всех алгоритмов не получится. Одно из решений заключается в обфускации данных, обрабатываемых алгоритмом, при сохранении в оперативную память. Очевидно, что это приведет к падению производительности. В случае методов противодействия уязвимостям семейства Spectre падение производительности в некоторых тестах
Уязвимость условно «закрыта» в процессорах Apple M3. Оптимизация DMP работает на них так же, но для разработчиков алгоритмов шифрования предусмотрен специальный флаг, отключающий возможность срабатывания этой технологии. Скорее всего, мы узнаем больше о практических последствиях данной проблемы, когда начнут появляться релевантные патчи для Mac OS. Пока же компания Apple в традиционном для нее стиле воздерживается от комментариев и не раскрывает, в отличие от Intel и AMD, собственную оценку этой аппаратной уязвимости.
Что еще произошло
Свежая публикация экспертов «Лаборатории Касперского»
Исследователи нашли
Крайне интересно
Исследователи из американского университета Колорадо