Как работает Spectre


Это вторая часть нашего исследования того, как работают Meltdown и Spectre. Цель состоит не в том, чтобы объяснить, как управлять уязвимостями, а в том, чтобы понять, как они работают и в чем именно заключается недостаток оборудования, которым может воспользоваться программное обеспечение.

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

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

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

Атака Spectre бывает двух видов. Первый — классический эксплойт переполнения буфера. Однако в этом случае буфер защищен от переполнения, но все равно переполняется! Механизм очень похож на Meltdown, но есть несколько отличий.

Учтите следующее:

если (x


Добавить комментарий