Каковы различия между Meltdown и Spectre?
Каковы основные различия между недавно обнаруженными аппаратными уязвимостями Meltdown и Spectre? Я знаю, что они оба полагаются на умозрительное исполнение, но как они отличаются друг от друга?
3 ответа
Каковы основные различия между недавно обнаруженными аппаратными уязвимостями Meltdown и Spectre?
привидение
Атака Призрака имеет два вида. Наиболее опасный вариант Spectre использует ошибочное предсказание ветвления и побочные эффекты кэша для чтения любого байта в виртуальной памяти текущего процесса. Он работает на различных процессорах, включая мобильные телефоны, столы и т. Д.
Итак, почему мы не можем просто прочитать ни одного байта в текущем процессе, без какого-либо Призрака? Чем Призрак опасен? Существует множество языков, в которых создаются песочницы (JavaScript) или виртуальные машины (Java) для изоляции локального компьютера от потенциально опасного кода, загруженного из Интернета.
Благодаря Spectre такой изоляции больше нет, поэтому JavaScript, загруженный с веб-сайта, может читать любые данные в браузере. Потенциально могут быть некоторые пароли, номера кредитных карт и другая конфиденциальная информация.
расплавление
Расплавление - это аппаратная проблема на некоторых процессорах (Intel, ARM, IBM POWER), которые параллельно читают память и проверяют привилегии. Это открывает возможность чтения памяти, к которой у вас нет прав доступа. Например, пользовательский процесс может читать память ядра из-за Meltdown.
Почему Meltdown опасен? Ядро хранит ключи шифрования, пароли или даже физические страницы других процессов, которые из-за распада потенциально могут быть прочитаны любым пользовательским процессом в системе.
Призрак против Расплавления
Основное различие между Specter и Meltdown заключается в том, что благодаря Spectre вы можете читать или обманывать другие процессы, чтобы утечка памяти на том же уровне привилегий, а с помощью Meltdown вы можете читать память, к которой у вас нет прав доступа.
Доказательство концепции
Вот мое доказательство основанного на призраке Linux (то есть 2-в-1) доказательства концепции всего за 99 строк кода:
https://github.com/berestovskyy/spectre-meltdown
Это позволяет читать пространство ядра (например, Meltdown) с помощью обхода проверки границ (например, Spectre).
Чтобы начать это...
Работы по Meltdown (Мориц Лапп и др.) И Spectre (Пол Кочер и др.) Будут улучшены путем корректуры... В последнем разделе 1.4 сравниваются Spectre и Meltdown. Это "расплавляет" барьер, сохраняя содержимое ядра недоступным, так что значения времени выполнения могут считываться со скоростью 100 КБ в секунду с низкой ошибкой. Запрещенный доступ к памяти вызывает "ловушку", но до того, как ловушка сработает, спекулятивное предварительное выполнение дополнительного кода изменило состояние кэша (потому что призрак осуществил фактический доступ к памяти), который переживает отмену других эффектов призрачная казнь. Эти изменения могут быть обнаружены.
Однако Spectre полагается на ввод в заблуждение предсказания ветвления в микрокоде, представляя несколько безобидных использований IF ... THEN ...; оператор типа, затем специально выбранные данные, так что результат теста будет ложным, но, если обычный результат был истинным, выполнение-призрак продолжит доступ к некоторому интересующему местоположению и изменит местоположение в памяти на основе его значения. Тогда "ложный" результат вызывает отмену всех изменений - кроме состояния кэша. В качестве альтернативы целевой буфер ветвления может быть введен в заблуждение, так что будет случайное выполнение кода, который получит доступ к чему-то интересному, что должно быть недоступно, и снова результаты будут подавлены, но побочные эффекты останутся.
Кажется, что более сотни команд могут находиться на разных этапах спекулятивного выполнения, поэтому возможен относительно сложный пробный код.
расплавление
Расплавление разрушает самую фундаментальную изоляцию между пользовательскими приложениями и операционной системой. Эта атака позволяет программе получить доступ к памяти и, следовательно, к секретам других программ и операционной системы.
Если ваш компьютер имеет уязвимый процессор и работает без исправленной операционной системы, работать с конфиденциальной информацией небезопасно без возможности утечки информации. Это относится как к персональным компьютерам, так и к облачной инфраструктуре. К счастью, есть исправления программного обеспечения против Meltdown.
привидение
Spectre разрушает изоляцию между различными приложениями. Это позволяет злоумышленнику обманным путем заставить хитроумные программы, которые следуют передовым методам, раскрыть свои секреты. Фактически, проверки безопасности упомянутых лучших практик на самом деле увеличивают поверхность атаки и могут сделать приложения более восприимчивыми к Spectre.
Спектр сложнее эксплуатировать, чем Meltdown, но его также сложнее смягчить. Однако можно предотвратить определенные известные эксплойты, основанные на Spectre, с помощью программных исправлений.
Источник:
Чтобы лучше понять, вы также хотите посмотреть это прекрасное видео на Spectre & Meltdown от Computerphile: