Исследователи в области компьютерной безопасности создали программное обеспечение, которое в полуавтоматическом режиме ищет реализации использования уязвимостей в процессорных архитектурах. С его помощью они обнаружили новые варианты использования уязвимостей Meltdown и Spectre, основанные на особенностях работы кэша в многоядерных процессорах. Авторы отмечают, что программные «заплатки» для закрытия этих уязвимостей могут быть практически такими же, как и для оригинальных уязвимостей, но для аппаратного исправления могут потребоваться сильные изменения в архитектуре, сообщается в препринте, опубликованном на arXiv.org.
В начале января 2018 года группа специалистов в области компьютерной безопасности раскрыла данные о найденных ранее двух типах критических уязвимостей в современных процессорах — Meltdown и Spectre. Опасность уязвимостей заключается в том, что с их помощью вредоносная программа может читать содержимое кэша процессора, в том числе его областей, в которых хранятся данные других программ. Таким способом злоумышленник может украсть пароли или другую конфиденциальную информацию. Хотя бы одной из этих уязвимостей оказалось подвержено большинство процессоров, используемых в современных компьютерах и смартфонах, независимо от того, какая операционная система на них установлена.
После раскрытия данных об уязвимостях большинство крупных производителей процессоров и программного обеспечения выпустили программные обновления, устраняющие уязвимости или сильно усложняющие их использование. Из-за того, что обнаруженные в январе уязвимости, особенно Spectre, основаны на базовых особенностях процессоров и применимы ко многим архитектурам, исследователи начали искать другие варианты их эксплуатации.
11 февраля группа исследователей из Принстонского университета и NVIDIA опубликовала статью с описанием новых вариантов использования обнаруженных в январе уязвимостей, которые они назвали MeltdownPrime and SpectrePrime. Интересно, что они нашли их не полностью самостоятельно, а с помощью написанной ими программы. На входе она получает описание микроархитектуры процессора, исходя из которой моделирует выполнение команд в ней, а также формальное описание атаки. Имея эти данные, система пишет программу, реализующую описанную атаку на данной микроархитектуре.
С помощью этой программы исследователи обнаружили два новых варианта использования уязвимостей Meltdown и Spectre, основанные на атаке типа Prime+Probe, которая устроена следующим образом. Атакующий заполняет весь доступный кэш данными. После этого программа-жертва производит свои вычисления и вытесняет часть данных злоумышленника из кэша. Затем злоумышленник снова обращается к кэшу и по скорости получения данных узнает, к каким адресам обращалась программа, потому что в случае, если данные были перезаписаны программой-жертвой, процессору придется запрашивать данные в обычной, более медленной чем кэш, памяти.
Помимо этого новые варианты атаки основаны на особенностях работы кэша в многоядерных процессорах. Дело в том, что в одноядерных процессорах читать или записывать данные может только одно ядро, и обычно с этим не возникает проблем. В случае двух или более ядер может происходить ситуация, при которой одно ядро перезапишет данные в памяти и кэше, а другие ядра будут иметь в кэше устаревшую информацию. Для устранения таких проблем используется механизм когерентности памяти.
Обнаруженные уязвимости используют особенности этого механизма для того, чтобы перезаписывать данные в кэше других ядер. Это происходит с помощью особенностей спекулятивного исполнения, на которых основана исходная уязвимость Spectre. Спекулятивное исполнение позволяет процессору в определенных случаях предположить, какую операцию ему нужно будет производить дальше, еще до того, как он действительно получил соответствующую инструкцию. В случае, если процессор ошибся с прогнозом, он отбросит результаты своих вычислений, но, поскольку он помещал результаты в кэш, их все равно можно косвенно считать, анализируя время доступа к данным.
Исследователи опубликовали код примера реализации атаки SpectrePrime в своей работе. Они отмечают, что, программная защита от таких атак не будет сильно отличаться от уже имеющихся обновлений для уязвимостей, обнаруженных в январе, однако, из-за того, что новые атаки основаны на особенностях многоядерных систем, аппаратное исправление уязвимостей в будущих процессорах нужно будет разрабатывать отдельно.
На днях Intel запустила новую программу, в рамках которой сторонние специалисты могут получить до 250 тысяч долларов за находку уязвимости, основанной на атаке по сторонним каналам.
Григорий Копиев
Сможете ли вы создать ответственный ИИ?
Он трудится на производстве, водит такси, днем и ночью работает в службе поддержки, никогда не устает, а еще может прочитать сказку ребенку и напомнить купить молока. Искусственный интеллект призван выручать нас в любой ситуации. Однако к его созданию нужно подходить ответственно, а применять с умом. В прошлом году был разработан Кодекс этики в сфере ИИ, чьи рекомендации помогут избежать ошибок, — документ уже приняли крупнейшие российские технологические компании. Представьте, что вы разработчик, и попробуйте верно ответить на вопросы о нормах этики искусственного интеллекта, которые важно соблюсти.