Intel: весенний урожай проблем

Как мы помним, разговор об информационной безопасности в прошлом году начался с публикаций об уязвимостях в процессорах Intel, получивших названия Spectre и Meltdown. К сожалению, новости по этой и связанным с ней темам продолжают выходить и по сей день. В этой статье мы расскажем про одну новую уязвимость, получившую название SPOILER, и про нестандартное использование Spectre — прошлогоднего родоначальника всех процессорных бедствий.

Слово «спойлер», вошедшее в русский язык на нашей памяти — всего лишь название для разглашения ключевого поворота сюжета книги или фильма. Происходя от английского корня со значением «портить», спойлеры могут отразиться лишь на нашем настроении. Найденная исследователями в конце 2018 года уязвимость в процессорах Intel, названная SPOILER (это не аббревиатура, такое название выбрано из-за выражаемой угрозы и совпадения первых двух букв с буквами слова speculative), может отразиться на безопасности данных уже сейчас, а на архитектуре процессоров достаточно скоро. Впрочем, всё по порядку.

Опубликованная в первую неделю марта совместная работа исследователей из американского Уорчестерского Политехнического института и Университета Любека из Германии продемонстрировала новый способ заглянуть в ценные данные, загруженные современными процессорами в память для ускорения их обработки. Мишенью оказался механизм распределения памяти, специфичный именно для процессоров Intel.

Для осуществления атаки была использована разница во времени для операций по копированию данных между регистрами процессора и оперативной памятью компьютера в целом. Как обычно при спекулятивном выполнении, часть операций делается в надежде, что в будущем именно эти данные будут востребованы процессом. При этом часть данных может отсутствовать в памяти, и тогда эта ситуация обрабатывается отдельно, отбрасывая неактуальные ветки. Но заполняя внутренний буфер процессора специально подготовленными данными, исследователи смогли точно предсказать соотношение между физической памятью серверов и виртуальной памятью процессов.

Понимая, как соотносятся физические адреса памяти и выделяемые адреса в пространстве процессов операционных систем, можно сделать куда более эффективными атаки наподобие Rowhammer, о которых мы несколько раз писали. Эта атака построена на возможности изменения значений в соседних (в физическом смысле) ячейках памяти при многократной записи нужного значения в одну и ту же ячейку за счёт электромагнитных эффектов. По оценкам исследователей, время для атаки из этого семейства с помощью техники SPOILER сокращается до нескольких секунд. В частности, теперь можно инвертировать биты, управляя физически соседними ячейками оперативной памяти с двух сторон, а не с одной, как это делалось в большинстве текущих реализаций Rowhammer.

Крайне неприятно (и это подтверждают исследования), что атаку можно организовать из браузера с помощью вредоносного JavaScript-а. Хотя бОльшую часть атак на спекулятивное выполнение через JavaScript можно предотвратить, уменьшая точность таймеров, тотальное уменьшение точности имеет свои недостатки и в ряде случаев неприемлемо. Традиционные схемы виртуализации и организации «песочниц» (sandbox) не препятствуют осуществлению атаки. Правда, исследователям не удалось добраться до сенситивных данных, укрытых в защищённых анклавах памяти с помощью расширений SGX.

Вряд ли SPOILER — последняя уязвимость в серии, начатой в январе 2018-го года Spectre и Meltdown. Принципиальным кажется то, что перспективы исправления на данный момент сводятся к разработке новой архитектуры: на программном уровне закрыть уязвимость нельзя. Этот вывод согласуется с более ранней публикацией о невозможности избавления от этого семейства уязвимостей при помощи программных методов. Хорошая новость при этом то, что SPOILER не угрожает процессорам от AMD. Решения на базе ARM тоже неуязвимы по отношению к новой угрозе.

Но и старые угрозы напоминают о себе. Публикация исследователей из Университета Колорадо в конце февраля рассказала о том, что Spectre можно использовать для доставки на компьютер жертвы зловредного кода, который невозможно отследить текущими средствами диагностики. Исследователям удалось спрятать полезную (точнее, потенциально вредную) нагрузку в выполняемые «на всякий случай» ветки программного кода. Продемонстрирована модель исполнения, при которой одно, причём абсолютно добронамеренное приложение, сбивая статистику предсказателю ветвления процессора, тем самым активирует спрятанный в другом приложении вредоносный код. Очень много кода таким образом не спрятать, по оценкам исследователей, речь идёт максимум о паре сотен процессорных инструкций, но полагаться на то, что ситуация не ухудшится, нельзя. Авторы разработали и язык программирования, предназначенный для написания подобного рода программ — SPASM (SPeculative ASM). Собственно вектору атаки присвоили название ExSpectre, где Ex — первые две буквы от слова Execution, среди значений которого в данном случае используется вариант «исполнение».

Принятые много лет назад архитектурные решения принесли много лет роста быстродействия. Сколько времени придётся расхлёбывать открывшиеся последствия принятых тогда решений, пока предсказать невозможно. Если SPOILER — пример ошибок конкретного дизайна, то большинство остальных уязвимостей затрагивают, хотя и в разной степени, процессоры и от Intel, и от AMD, и от ARM.


Автор:  Дмитрий Белявский (ТЦИ)

Возврат к списку