Каковы уязвимости Spectre и Meltdown?

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

Обзор

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

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

Уязвимость Meltdown основана на некоторых методах работы с памятью, а также на упомянутой выше системе спекулятивного исполнения. Он использует «состояние гонки» между выполнением процесса и проверкой привилегий и позволяет вредоносной программе получать доступ к памяти других приложений и операционной системы.

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

Эффекты

В середине 2017 года несколько команд независимо друг от друга обнаружили и сообщили о Meltdown и Spectre в частном порядке производителям процессоров, которые разработали исправления. Из-за исправлений, нацеленных на оптимизацию производительности, они в конечном итоге снизили производительность процессоров до 30% в наихудшем сценарии, при этом снижение производительности на 2–14% более репрезентативно для людей опыты.

Уязвимости затронули многие процессоры x86, процессоры IBM POWER и некоторые процессоры на базе ARM. Расплавление влияет на оборудование, которое обычно находится на персональных компьютерах, а также на облачных серверах. Spectre влияет на персональные компьютеры, облачные серверы и мобильные устройства. Все процессоры Intel с 1995 по середину 2018 г. были уязвимы для этих проблем (за исключением линеек Itanium и Atom до 2013 г.). Процессоры AMD не пострадали от Meltdown, но были уязвимы для Spectre.

Исправления для защиты программного обеспечения были разработаны и выпущены поставщиками операционных систем, которые решают большинство проблем. С середины 2018 года Intel обновила дизайн своих процессоров, включив аппаратные средства устранения проблем.

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