Security Week 2413: аппаратная уязвимость в процессорах Apple

Большой новостью прошлой недели стало объявление о научной работе исследователей из ряда университетов США, демонстрирующей аппаратную уязвимость GoFetch в процессорах Apple M1 и M2 (сайт проекта, сама научная работа, подробное описание в статье издания Ars Technica). Уязвимость делает возможной атаку по стороннему каналу на алгоритмы шифрования данных с последующей кражей приватных ключей. Для этого на компьютере жертвы необходимо запустить вредоносный код, который сможет контролировать алгоритм. Сама атака занимает от одного до нескольких часов, и прямо сейчас угрозы пользователям не несет. Последствия от обнаружения уязвимости, тем не менее, будут: проблема в системе подгрузки данных в кэш-память может быть закрыта только программным путем, в конкретных реализациях алгоритмов шифрования, что приведет к снижению производительности.

572ey23bpnragiub8t39emccaak.jpeg

Уязвимость обнаружена в механизме контекстно-зависимой предварительной выборки данных (data memory-dependent prefetcher, или DMP). Это достаточно новая технология, внедренная пока лишь в новейших чипах Apple и процессорах Intel начиная с 13-го поколения (в последних механизм работает по-другому и данная атака для них не актуальна). DMP входит в набор оптимизаций, направленных на повышение производительности вычислений: в целом такие технологии ранее неоднократно становились источником проблем. Атака была продемонстрирована на ноутбуках под управлением Mac OS с процессорами Apple M1 и M2. Самые современные чипы M3 также содержат эту уязвимую оптимизацию, но в них предусмотрена инструкция, позволяющая отключить DMP для криптографических вычислений. Для более ранних процессоров придется обновлять код более сложными методами, чтобы исключить утечку по стороннему каналу.
Исследование основано на предыдущей работе 2022 года, в которой изучалась работа технологии DMP. Тогда была продемонстрирована возможность утечки данных с помощью механизма предварительной выборки данных, но до практической атаки она не была доведена. Задача любого механизма предварительной выборки данных заключается в поиске соответствующих команд в выполняемом коде. При обнаружении указателя на определенную область оперативной памяти данные оттуда загружаются к кэш-память процессора заранее, что ускоряет выполнение программы. DMP можно упрощенно описать как дополнительную оптимизацию данного процесса, которая позволяет предварительно загрузить набор данных в сложных случаях. Классические механизмы предварительной выборки срабатывают только на конкретных инструкциях обращения к памяти. 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 падение производительности в некоторых тестах составляло от 3 до 17 процентов. Как именно замедлятся ноутбуки с процессорами Apple M1 и M2 — пока непонятно. Для неспециализированных пользовательских приложений, таких как браузер, замедление вряд ли будет заметно. Вообще такое падение производительности обычно играет роль в больших масштабах, когда речь идет о десятках тысяч серверов. Для персональных устройств Apple такая логика вряд ли применима. Остается, впрочем, небольшой шанс на появление реально опасной атаки, выполняемой, например, в браузере.

Уязвимость условно «закрыта» в процессорах Apple M3. Оптимизация DMP работает на них так же, но для разработчиков алгоритмов шифрования предусмотрен специальный флаг, отключающий возможность срабатывания этой технологии. Скорее всего, мы узнаем больше о практических последствиях данной проблемы, когда начнут появляться релевантные патчи для Mac OS. Пока же компания Apple в традиционном для нее стиле воздерживается от комментариев и не раскрывает, в отличие от Intel и AMD, собственную оценку этой аппаратной уязвимости.

Что еще произошло

Свежая публикация экспертов «Лаборатории Касперского» описывает типичные виды вредоносных программ для устройств под управлением Android.

Исследователи нашли новый метод проведения DoS-атаки на базовые сетевые сервисы (TFTP, DNS, NTP). Уязвимости подвержены более 300 тысяч серверов.

Крайне интересно исследование безопасности дверных замков Saflok фирмы Dormakaba, используемых в отелях и открываемых с помощью технологии RFID. В предложенном сценарии атаки злоумышленник заселяется в отель, получает ключ-карту от своего номера и на основе данных из него создает универсальный ключ, который открывает все замки в гостинице.

Исследователи из американского университета Колорадо нашли серьезные проблемы в устройствах для отслеживания коммерческих автомобилей и грузовиков. Коммуникация с этими устройствами по Wi-Fi и Bluetooth практически не защищена, и эта проблема может быть использована даже для распространения вредоносного ПО от устройства к устройству.

© Habrahabr.ru