GoFretch — уязвимость, которая позволяет злоумышленникам открыть доступ к конфиденциальным данным пользователя.
Группа американских исследователей обнаружила уязвимость в процессорах Apple M1, M2 и M3. Ее назвали GoFetch — пойди-принеси. Эта уязвимость позволяет злоумышленникам отгадывать ключи шифрования, наблюдая за изменениями в кэше — и, в теории, получать доступ к некоторым конфиденциальным данным пользователя.
В отличие от большинства уязвимостей, эту полностью устранить нельзя: она была найдена не в программах Apple, а в самих процессорах М-серии всех трех поколений.
В основе проблемы — механизм предварительной загрузки данных DMP (Data Memory-dependent Prefetcher). Он обеспечивает загрузку данных в память еще до того, как они понадобятся.
Исследователи сумели заставить DMP работать как «индикатор»: кэшировать данные в тот момент, когда им удается отгадать фрагмент криптографического ключа. Перебор ключей шифрования может занимать миллионы или даже миллиарды лет, но с такой «подсказкой» это требует гораздо меньше времени — то есть, это выполнимая задача.
Важно понимать: ресурсы вашего устройства — компьютера, смартфона, планшета или даже умных часов — делятся между множеством программ, работающих одновременно. В том числе делится и оперативная память, в которой программы хранят необходимые в процессе работы данные.
Чтобы одна программа не могла украсть данные из памяти другой, многозадачные устройства используют различные методы защиты памяти.
Авторам вредоносных программ приходится искать способы обхода этой защиты. Способ, который используется в GoFetch — это атака по сторонним каналам.
Допустим, вы детектив, и вам надо найти похитителя, который позвонил семье своей жертвы и потребовал выкуп. На записи звонка слышно, что у него за окном отправляется поезд. Значит, он прячется где-то неподалеку от железнодорожной станции. Сам преступник не говорил вам, где его искать — но вы сумели это узнать, наблюдая за сторонними явлениями.
Атаки по сторонним каналам работают похожим образом: злоумышленники получают нужные им данные, наблюдая за измеримыми побочными эффектами работы программ и аппаратуры — например, за изменениями в кэше. Именно так работает GoFetch.
Да. Авторы GoFetch на практике смогли взломать только 4 алгоритма: DHKX в библиотеке OpenSSL, RSA в стандартной библиотеке языка Go, а также пост-квантовые алгоритмы Kyber и Dilithium в библиотеке CRYSTALS.
Возможно, другие алгоритмы тоже подвержены этой уязвимости, но разработчики предлагают несколько способов защиты, которым которыми могут воспользоваться разработчики криптографического ПО, чтобы обезопасить свои продукты. Например, на некоторых моделях процессоров можно отключить DMP на время работы с криптографией.
Главный совет, который дают авторы GoFetch — регулярно устанавливать обновления и пользоваться самыми новыми версиями программ и операционной системы.
Напоминания об обновлениях могут раздражать, но их все равно стоит устанавливать: они часто содержат в себе исправление известных уязвимостей.