Опять! Всего две недели назад мы рассказывали о новых вариантах атаки Spectre, использующих метод спекулятивной записи. Самая важная новость прошлой недели снова посвящена семейству Spectre, и теперь все гораздо круче. Исследователи из Технического университета города Грац в Австрии нашли способ извлекать данные по стороннему каналу удаленно, отсюда название атаки.
Хотелось бы сказать, что атака NetSpectre не требует выполнения какого-либо кода на атакуемой системе (в отличие, например, от браузерной атаки на JavaScript), но это не совсем так. В контексте NetSpectre «кодом» оказывается рутинная работа с другими компьютерами по сети, которую атакующий напрямую не контролирует, но может на нее влиять. Впечатляет именно возможность удаленного детектирования микроскопической разницы между разными режимами работы процессора. Как в случае с другими исследованиями по Spectre, работа носит (пока) теоретический характер, а новая атака отличается невероятно медленной скоростью извлечения данных: единицы бит в минуту. Обзор новой атаки (человеческим языком) опубликован здесь, хотя все равно лучше читать оригинальное исследование.
До публикации исследования NetSpectre в качестве показательной удаленной атаки на механизм спекулятивного выполнения кода обычно предлагался код JavaScript, выполняемый в браузере. Этот метод, по мнению авторов новой работы, обеспечивал возможность достаточно точного измерения задержек между запросом и получением данных. Как это в принципе происходит в атаках типа Spectre (а их уже очень много), разница во времени отклика позволяет реконструировать данные, доступ к которым у выполняемой программы отсутствует.
NetSpectre не требует от атакующего непосредственного выполнения кода на целевой системе. Вместо этого используется обычный обмен данных по сети, например загрузка файлов с атакуемого сервера и передача единичных сетевых пакетов. Исследователями была создана искусственная конструкция из уязвимого сервера (в одном из примеров это был компьютер с процессором Intel Core i5-6200U), в сетевом ПО которого присутствовали два гаджета. Под гаджетами подразумевается определенный механизм, реализующий определенные необходимые нам свойства, софтовая часть уязвимости. «Гаджет утечки» создавал условия для спекулятивного запроса секретных данных более-менее стандартным для Spectre-подобных атак путем:
Термин для второго гаджета немного сбивает с толку. Естественно, «гаджет передачи» — это не уязвимость, которая напрямую передает атакующему секреты из оперативной памяти или кэша центрального процессора, как это происходит в более простой атаке Heartbleed (четыре года уже прошло, надо же!). «Гаджет передачи» создает условия, когда атакующий сможет проанализировать задержку в передаче данных, из которой можно реконструировать необходимую информацию.
Исследователи предложили два сторонних канала утечки данных для атаки NetSpectre. Первый практически полностью повторяет механизм оригинального Spectre и использует кэш процессора. Второй вообще не использует кэш: вместо этого задействуется блок вычислений инструкций из набора AVX2. Так как данные блоки отличаются высоким энергопотреблением, при отсутствии нагрузки они отключаются. При поступлении инструкции из набора их включение происходит с небольшой задержкой, которую также можно измерить удаленно. Такой метод оказывается в несколько раз быстрее «традиционных» манипуляций с кэш-памятью: реконструкция данных через кэш происходила в условиях гигабитной локальной сети на скорости 4 бита в минуту, а с помощью AVX2 за минуту удавалось передавать уже 8 байт.
Почему так медленно? Понять можно, например, по этой картинке из исследования:
Оригинальная атака Spectre, выполняемая непосредственно на атакуемой системе, требует измерения задержек в реакции процессора на инструкции порядка миллисекунд. Она также довольно медленная — «кража данных» возможна на скорости в единицы килобит в секунду. На задержку при передаче сетевых пакетов может повлиять что угодно, поэтому NetSpectre «замеряет» — то есть, по сути, проводит успешную атаку — много раз подряд, чтобы из усредненных значений получить требуемый бит или байт с высокой достоверностью.
Так вот, разумная точность атаки достигается при сотнях тысяч и миллионах измерений. В каждом из них нужно провести сложную операцию, которая включает, например, сброс кэш-памяти путем загрузки файла размером 590 килобайт. Кстати, при обработке данных не использовались алгоритмы машинного обучения: они, очевидно, помогут уменьшить количество измерений, необходимых для точной реконструкции данных. Когда атакующий и жертва находятся не в одной локальной сети, такие алгоритмы понадобятся, иначе один байт будет «передаваться» за 160 миллионов измерений (!) в течение 8 часов (3 часа с помощью метода AVX2).
Исследователи успешно провели атаку, используя компьютеры и ноутбуки на процессорах Intel, устройства на процессорах с ядром ARM Cortex A75, а также на платформе Google Cloud Platform (между двумя виртуальными машинами). Еще раз повторю, атака совершенно теоретическая. Для ее реализации в реальных условиях нужно найти соответствующие «гаджеты» в конкретной версии ПО (например, ядра Linux), установленной на конкретном сервере. Нужно обеспечить условия для взаимодействия с сервером, которые не всегда выполнимы. В частности, исследователи прямо указывают, что любое средство для защиты от DDoS-атак забанит атакующего практически моментально — из-за количества запросов и объема передаваемых данных. Даже модель процессора внутри линейки имеет значение: для использованного в работе Core i5 с тремя мегабайтами кэша будет работать, а для какого-то другого (с другим объемом кэша), возможно, нет.
Но все равно впечатляет! Это покруче каких-нибудь «лазерных» микрофонов, снимающих вибрации с окон в помещении. Дополнительных рисков NetSpectre не привносит: Intel прокомментировала работу в том ключе, что уже известные методы митигации Spectre работают и для сетевой инкарнации. Буду исходить из скорости разработки новых методов атаки — и предположу, что самые интересные способы кражи данных через открытую форточку еще впереди. Как бы они не обошлись в копеечку всем нам — в контексте вынужденного падения производительности и необходимости капитальных затрат со стороны вендоров.
Disclaimer: Мнения, изложенные в этом дайджесте, могут не всегда совпадать с официальной позицией «Лаборатории Касперского». Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом.
Автор: Kaspersky_Lab