Обнаружены новые варианты уязвимостей Meltdown и Spectre

Исследователи в области компьютерной безопасности создали программное обеспечение, которое в полуавтоматическом режиме ищет реализации использования уязвимостей в процессорных архитектурах. С его помощью они обнаружили новые варианты использования уязвимостей Meltdown и Spectre, основанные на особенностях работы кэша в многоядерных процессорах. Авторы отмечают, что программные «заплатки» для закрытия этих уязвимостей могут быть практически такими же, как и для оригинальных уязвимостей, но для аппаратного исправления могут потребоваться сильные изменения в архитектуре, сообщается в препринте, опубликованном на arXiv.org.

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

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

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

С помощью этой программы исследователи обнаружили два новых варианта использования уязвимостей Meltdown и Spectre, основанные на атаке типа Prime+Probe, которая устроена следующим образом. Атакующий заполняет весь доступный кэш данными. После этого программа-жертва производит свои вычисления и вытесняет часть данных злоумышленника из кэша. Затем злоумышленник снова обращается к кэшу и по скорости получения данных узнает, к каким адресам обращалась программа, потому что в случае, если данные были перезаписаны программой-жертвой, процессору придется запрашивать данные в обычной, более медленной чем кэш, памяти.

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

Обнаруженные уязвимости используют особенности этого механизма для того, чтобы перезаписывать данные в кэше других ядер. Это происходит с помощью особенностей спекулятивного исполнения, на которых основана исходная уязвимость Spectre. Спекулятивное исполнение позволяет процессору в определенных случаях предположить, какую операцию ему нужно будет производить дальше, еще до того, как он действительно получил соответствующую инструкцию. В случае, если процессор ошибся с прогнозом, он отбросит результаты своих вычислений, но, поскольку он помещал результаты в кэш, их все равно можно косвенно считать, анализируя время доступа к данным.

Исследователи опубликовали код примера реализации атаки SpectrePrime в своей работе. Они отмечают, что, программная защита от таких атак не будет сильно отличаться от уже имеющихся обновлений для уязвимостей, обнаруженных в январе, однако, из-за того, что новые атаки основаны на особенностях многоядерных систем, аппаратное исправление уязвимостей в будущих процессорах нужно будет разрабатывать отдельно.

На днях Intel запустила новую программу, в рамках которой сторонние специалисты могут получить до 250 тысяч долларов за находку уязвимости, основанной на атаке по сторонним каналам.

Григорий Копиев

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.
Новая этика

Сможете ли вы создать ответственный ИИ?