Атака по побочному каналу на процессоры Apple: история Intel повторятся
Эксперты описали возможность извлечения ключей шифрования из кэша процессоров Apple M1, M2 и M3, используя их аппаратные особенности. Причиной уязвимости стало нарушение требований к безопасности разработки.
Иди и достань
Эксперты по информационной безопасности из нескольких исследовательских университетов в США опубликовали работу, посвящённую проблемам с процессорами Apple M1, M2 и M3. Речь идёт о возможности атаки через побочный канал, которая позволяет извлекать ключи шифрования из кэша процессора. К сожалению, как и в случае с аналогичными уязвимостями в процессорах Intel, выявленными в прошлые годы, технические исправления возможны только за счёт снижения производительности процессоров.
Атака нацелена на реализации алгоритмов шифрования с постоянным временем, использующие средства предвыборки, зависимые от памяти данных. Это позволяет воссоздавать частные криптографические ключи для различных алгоритмов, включая OpenSSL Diffie-Hellman, Go RSA, CRYSTALS Kyber и Dilithium, из кэша современных процессоров Apple.
Атака получила название GoFetch («Иди и достань»).
Эксперты передали все сведения в Apple 5 декабря.
Средства предвыборки, зависимые от памяти данных (Memory-Dependent Prefetchers) - это механизм оптимизации производительности процессора при выполнении кода. DMP «обучается» на основе предыдущих вызовов к памяти при извлечении данных, что позволяет ему «прогнозировать», какие данные машина потребует в следующий момент. Эти данные извлекаются заранее из менее производительных областей памяти и помещаются в более производительные, в частности, кэш центрального процессора.
Если прогноз оказывается верным, данные уже доступны и компьютер их оперативно обрабатывает, что положительно сказывается на производительности системы. Если прогноз ошибочен, процессор запрашивает корректные данные в штатном режиме.
Атака нацелена на новое поколение средств предвыборки, именуемых data memory-dependent prefetcher (DMP); от прежних версий DMP отличается способностью оценивать значения данных в памяти, чтобы более корректно определять, что необходимо переносить в кэш.
Ошибочные нововведения
DMP появились в 13 поколении процессоров Intel - Raptor Lake, а также последних процессорах Apple. Intel, обжегшись на прежних атаках спекулятивного исполнения - Spectre, Downfall и других, - сделал свою реализацию DMP более ограниченной по возможностям, что предотвращает атаки.
В Apple этих ограничений нет.
Предметом атаки является реализация алгоритмов шифрования, выполнение которых занимает одинаковое количество времени независимо от ввода. С одной стороны, это мера безопасности для предотвращения утечек конфиденциальных данных. Однако в процессорах Apple исследователи обнаружили ошибку, которая нарушает рекомендации по постоянству времени исполнения: «Мы провели обратную разработку DMP в процессорах Apple серии M и обнаружили, что DMP активирует и пытается разыменовать (dereference) данные, загружаемые из памяти, которые "выглядят" как указатель», - говорится в кратком описании атаки.
Это открыто нарушает основные требования парадигмы программирования с постоянством времени исполнения, согласно которым смешивание шаблонов доступа к данным и памяти недопустимо.
При использовании определённых величин ввода можно заставить DMP разыменовать специфические данные, если правильно угаданы определённые фрагменты секретного ключа. И, наблюдая за тем, как и когда активируется DMP, можно добиться полной реконструкции ключа шифрования.
История повторяется
Исследователи полностью подтвердили, что процессор M1 уязвим. Учитывая, что те же DMP реализованы в M2 и M3, атаки, скорее всего, выполнимы и в системах на базе этих процессоров.
В процессорах M3 предварительную выборку можно отключить, но не в M1 и M2. Поскольку DMP реализованы на аппаратном уровне, не существует возможности устранить уязвимость напрямую. Есть вероятность выпуска патча на уровне операционной системы, но он приведёт к снижению производительности систем. Это уже наблюдалось в отношении систем на базе процессоров Intel, уязвимых перед атаками по побочному каналу.
Разработчики программ могут лишь реализовать маскировку ввода и активации, так что потенциальный атакующий не сможет воспользоваться приёмами GoFetch.
Что касается конечных пользователей, то им лишь остаётся придерживаться правил компьютерной гигиены и избегать ненужных рисков.
«Системы Apple (macOS и другие) сами по себе куда более закрытые, чем другие, что повышает их защищённость, хотя и не делает их неуязвимыми», - говорит Анастасия Мельникова, директор по информационной безопасности компании SEQ. По ее словам, чтобы произвести атаку GoFetch, потенциальному злоумышленнику сперва надо получить возможность запускать произвольный код в целевой системе (т.е. сперва заразить ее вредоносом). «В большинстве случаев это возможно лишь при определённом соучастии конечного пользователя, например, неосторожно установившего себе что-то постороннее в систему, но при таком сценарии злоумышленникам и не будет смысла изощряться с извлечением ключа шифрования: система, где они могут запустить вредоносный код, и так уже под их контролем. Так что ни переоценивать, ни недооценивать опасность данной уязвимости не стоит, а ключевой проблемой с ней является невозможность исправить без замены процессора», - подытожила Анастасия Мельникова.