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