Spectre (уязвимость безопасности)

редактировать
уязвимость системы безопасности процессора
Spectre
Логотип Spectre с text.svg Логотип, созданный для уязвимости, с изображением призрака с ветвью
идентификаторы CVE CVE- 2017-5753 (Spectre-V1),. CVE- 2017-5715 (Spectre-V2)
Дата обнаруженияянварь 2018 г.; 2 года назад (2018-01)
Затронутое оборудованиеВсе микропроцессоры до 2019 года, использующие предсказание переходов
Веб-сайтSpectreattack.com

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

Два Common Vulnerabilities and Exposures ID, связанных со Spectre, CVE -2017-5753 (обход проверки границ, Spectre-V1, Spectre 1.0) и CVE- 2017-5715 (внедрение целевой ветви, Spectre-V2). Было обнаружено, что JIT-движки, используемые для JavaScript, быть уязвимым. Веб-сайт может считывать данные, хранящиеся в браузере, для другого веб-сайта или в память самого браузера.

В начале 2018 года Intel сообщила, что переработает свои процессоры ( потери производительности подлежат определению) для защиты от Spectre и связанных с ним уязвимостей Meltdown (особенно, Spectre вариант 2 и Meltdown, но не Spectre вариант 1). Сообщается, что 8 октября 2018 года Intel добавила аппаратные и микропрограммные средства защиты от уязвимостей Spectre и Meltdown для своих последних процессоров. В октябре 2018 года исследователи Массачусетского технологического института предложили новый подход к смягчению последствий, названный DAWG (Dynamically Allocated Way Guard), который может обеспечить лучшую безопасность без ущерба для производительности.

Содержание

  • 1 История
  • 2 Механизм
    • 2.1 Удаленное использование
  • 3 Воздействие
  • 4 Смягчение
    • 4.1 Специальное программное обеспечение
    • 4.2 Общие подходы
    • 4.3 Противоречие
  • 5 Иммунное оборудование
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки

История

В 2002 и 2003 годах Юкиясу Цуну и его коллеги из NEC показали, как атаковать MISTY и DES шифры с симметричным ключом соответственно. В 2005 году Дэниел Бернштейн из Университета Иллинойса, Чикаго сообщил об извлечении ключа OpenSSL AES с помощью атаки по времени кэширования, и Колин Персиваль провел рабочую атаку на ключ OpenSSL RSA с использованием кеша процессора Intel. В 2013 году Юваль Яром и Катрина Фолкнер из Университета Аделаиды показали, как измерение времени доступа к данным позволяет гнусному приложению определять, была ли информация прочитана из кеша или нет. Если бы он был прочитан из кеша, время доступа было бы очень коротким, то есть считанные данные могли бы содержать закрытый ключ алгоритмов шифрования.

Этот метод использовался для успешной атаки GnuPG, AES и других криптографических реализаций. В январе 2017 года Андерс Фог выступил с докладом на Рурском университете Бохума об автоматическом обнаружении скрытых каналов, особенно на процессорах с конвейером, используемым более чем одним ядром процессора.

Сам Spectre был обнаружен независимо. Авторы: Янн Хорн из Google Project Zero и Пол Кохер в сотрудничестве с Даниэлем Генкиным, Майком Гамбургом, Морицем Липпом и Ювалем Яромом. Microsoft Vulnerability Research распространила его на JIT-движки JavaScript в браузерах. Она была обнародована в связи с другой уязвимостью, Meltdown, 3 января 2018 года, после того как поставщики оборудования уже были осведомлены о проблеме 1 июня 2017 года. Уязвимость была названа Spectre, потому что она была " основано на основной причине, спекулятивном исполнении. Поскольку это нелегко исправить, оно будет преследовать нас в течение некоторого времени ».

28 января 2018 года сообщалось, что Intel поделилась новостями о Meltdown и Spectre перед тем, как уведомить правительство США об уязвимостях в системе безопасности китайских технологических компаний.

29 января 2018 года было сообщено, что Microsoft выпустила обновление Windows, которое отключило проблемное исправление Intel Microcode - который в некоторых случаях вызывал перезагрузку, нестабильность системы и потерю / повреждение данных - выпущенный ранее Intel для атаки Spectre Variant 2. Сообщалось об опасениях по поводу установки нового патча Microsoft.

После раскрытия Spectre и Meltdown в январе 2018 года было проведено множество исследований уязвимостей, связанных со спекулятивным выполнением. 3 мая 2018 года было сообщено о восьми дополнительных недостатках класса Spectre, предварительно названных Spectre-NG от c't (немецкий компьютерный журнал), затрагивающих процессоры Intel и, возможно, AMD и ARM. Intel сообщила, что готовит новые исправления для устранения этих недостатков. Затронуты все процессоры Core-i и Xeon, производные от Nehalem (2010) и процессоры на базе Atom с 2013 года. Intel отложила их выпуск обновлений микрокода до 10 июля 2018 года.

21 мая 2018 года Intel опубликовала информацию о первых двух уязвимостях побочного канала класса Spectre-NG CVE- 2018 -3640 (Чтение несанкционированного доступа к системе, вариант 3a) и CVE- 2018-3639 (Обход спекулятивного хранилища, вариант 4), также называемый Intel SA -00115 и HP PSR-2018-0074 соответственно.

Согласно Amazon Deutschland, Cyberus Technology, SYSGO и Колину Персивалю (FreeBSD ), Intel раскрыла подробности о третьем Spectre- Вариант NG CVE- 2018-3665 (Ленивое восстановление состояния FP, Intel SA-00145) 13 июня 2018 г. Он также известен как Ленивая утечка состояния FPU (сокращенно «LazyFP») и «Spectre-NG 3».

10 июля 2018 г. корпорация Intel раскрыла подробности еще одной уязвимости класса Spectre-NG под названием «Bounds Check Bypass Store» (BCBS), также известной как «Spectre 1.1» (CVE- 2018-3693 ), который мог писать, а также читать за пределами допустимого диапазона. Также упоминался другой вариант, названный «Spectre 1.2».

В конце июля 2018 года исследователи из университетов Саара и Калифорнии обнаружили ret2spec (также известный как «Spectre v5») и SpectreRSB, новые типы уязвимостей выполнения кода с использованием (RSB).

В конце июля 2018 года исследователи из Университета Граца раскрыли NetSpectre, новый тип удаленной атаки, похожий на Spectre V1, но для которого не нужен код, управляемый злоумышленником. быть запущенным на целевом устройстве.

8 октября 2018 г., как сообщается, Intel добавила аппаратные средства и средства защиты микропрограмм в отношении уязвимостей Spectre и Meltdown для своих последних процессоров.

В ноябре 2018 г. Выявлено пять новых вариантов атак. Исследователи попытались скомпрометировать механизмы защиты ЦП, используя код для использования таблицы истории шаблонов ЦП , целевого буфера ветвления, буфера стека возврата и таблицы истории ветвлений.

В августе 2019 года связанный о временной уязвимости ЦП, Spectre SWAPGS (CVE- 2019-1125 ).

Механизм

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

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

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

В документе Spectre атака представлена ​​в виде четырех основных этапов:

  1. Во-первых, она показывает, что логика предсказания ветвлений в современных процессорах может быть обучена надежно попадать или пропадать на основе внутренней работы вредоносной программы.
  2. Затем он показывает, что последующее различие между попаданиями в кэш и промахами может быть надежно синхронизировано, так что то, что должно было быть простым нефункциональным различием, на самом деле может быть превращено в скрытый канал, который извлекает информацию из внутренняя работа несвязанного процесса.
  3. В-третьих, в статье результаты синтезируются с помощью эксплойтов ориентированного на возврат программирования и других принципов с помощью простого примера программы и запуска фрагмента JavaScript в песочнице браузере ; в обоих случаях показано, что все адресное пространство процесса-жертвы (то есть содержимое запущенной программы) доступно для чтения путем простого использования спекулятивного выполнения условных переходов в коде, сгенерированном стандартным компилятором или механизмом JavaScript присутствует в существующем браузере. Основная идея состоит в том, чтобы найти в существующем коде места, где спекуляция затрагивает иным образом недоступные данные, перевести процессор в состояние, при котором спекулятивное выполнение должно коснуться этих данных, а затем рассчитать время побочного эффекта того, что процессор работает быстрее, если он к настоящему времени -prepared механизм предварительной выборки действительно загрузил строку кэша.
  4. Наконец, статья завершается обобщением атаки на любое нефункциональное состояние процесса-жертвы. В нем кратко обсуждаются даже такие крайне неочевидные нефункциональные эффекты, как bus арбитраж задержка.

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

В документе Meltdown две уязвимости различаются следующим образом: «Meltdown отличается от атак Spectre несколькими способами, в частности тем, что Spectre требует адаптации к программной среде процесса жертвы, но в более широком смысле применяется к процессорам и не устраняется посредством KAISER."

Удаленное использование

В то время как Spectre проще эксплуатировать с помощью скомпилированного языка, такого как C или C ++, локально выполняя машинный код, он также может быть удаленно использован с помощью кода, размещенного на удаленных вредоносных веб-страницах, например интерпретируемых языках, например JavaScript, который запускается локально с помощью веб-браузера. Запрограммированная вредоносная программа затем получит доступ ко всей памяти, сопоставленной с адресным пространством работающего браузера.

Эксплойт, использующий удаленный JavaScript, следует тому же алгоритму, что и эксплойт локального машинного кода: очистить кэш → Mistrain Branch Predictor → Timed Reads (отслеживание попаданий / промахов).

Отсутствие возможности использовать инструкцию clflush(cache-line flush) в JavaScript требует альтернативного подхода. Существует несколько политик автоматического вытеснения кеша, которые может выбрать ЦП, и атака основана на возможности заставить это вытеснение для работы эксплойта. Было обнаружено, что использование второго индекса в большом массиве, который сохранялся на несколько итераций после первого индекса, приведет к использованию политики , которая использовалась не так давно, (LRU). Это позволяет эксплойту эффективно очищать кеш, просто выполняя инкрементное чтение большого набора данных.

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

Тогда потребуется высокоточный таймер, чтобы определить, привел ли набор чтений к попаданию в кэш или промаху в кэше. В то время как такие браузеры, как Chrome, Firefox и Tor (на основе Firefox), наложили ограничения на разрешение таймеров (требуется в эксплойте Spectre для определения попадания в кеш / miss), во время создания технического документа автор Spectre смог создать высокоточный таймер, используя функцию web worker в HTML5.

Тщательное кодирование и анализ Машинный код, выполняемый компилятором JIT-компиляции (JIT), требовался для обеспечения того, чтобы очистка кеша и операционные чтения не были оптимизированы.

Воздействие

По состоянию на 2018 год Spectre затрагивает почти все компьютерные системы, включая настольные компьютеры, ноутбуки и мобильные устройства. В частности, было показано, что Spectre работает на процессорах Intel, AMD, на базе ARM и IBM. Корпорация Intel ответила на обнаруженные уязвимости системы безопасности официальным заявлением. AMD первоначально признала уязвимость одного из вариантов Spectre (GPZ вариант 1), но заявила, что уязвимость другого (вариант 2 GPZ) не была продемонстрирована на процессорах AMD, утверждая, что это создает «почти нулевой риск эксплуатации »из-за различий в архитектуре AMD. В обновлении, выпущенном девятью днями позже, AMD заявила, что «вариант 2 GPZ… применим к процессорам AMD», и определила предстоящие шаги по снижению угрозы. Несколько источников восприняли новость AMD об уязвимости в варианте 2 GPZ как изменение по сравнению с предыдущим заявлением AMD, хотя AMD утверждала, что их позиция не изменилась.

Исследователи указали, что уязвимость Spectre может затронуть некоторых Процессоры Intel, AMD и ARM. В частности, эти уязвимости подвержены процессорам со спекулятивным исполнением .

ARM сообщила, что большинство их процессоров не уязвимы, и опубликовала список конкретных процессоров, на которые влияет Уязвимость Spectre: Cortex-R7, Cortex-R8, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17, Cortex-A57, Cortex-A72, Cortex-A73 и ARM Cortex-A75 ядер. Сообщается, что пользовательские ядра ЦП других производителей, реализующие набор инструкций ARM, такие как те, что используются в новых процессорах серии Apple A, также уязвимы. В целом, высокопроизводительные процессоры, как правило, имеют интенсивное спекулятивное выполнение, что делает их уязвимыми для Spectre.

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

Смягчение

Поскольку Spectre представляет собой целый класс атак, скорее всего, для него не может быть одного патча. Хотя работа по устранению особых случаев уязвимости уже ведется, на исходном веб-сайте, посвященном Spectre и Meltdown, говорится: «Поскольку [Spectre] нелегко исправить, он будет преследовать нас еще долгое время. " В то же время, согласно Dell : «На сегодняшний день [7 февраля 2018 года] не поступало сообщений о« реальных »эксплойтах этих уязвимостей [например, Meltdown и Spectre], хотя исследователи представили доказательства - of-concept. "

Было опубликовано несколько процедур, помогающих защитить домашние компьютеры и связанные с ними устройства от уязвимости. Сообщается, что патчи Spectre значительно снижают производительность, особенно на старых компьютерах; на более новых платформах Core восьмого поколения было измерено падение производительности на 2–14%. 18 января 2018 года поступили сообщения о нежелательных перезагрузках даже для новых чипов Intel из-за исправлений Meltdown и Spectre.

Было высказано предположение, что стоимость смягчения последствий может быть снижена с помощью процессоров, которые имеют выборочную очистку резервного буфера трансляции (TLB), функцию, которая называется идентификатором контекста процесса (PCID) в архитектуре Intel 64 и в Alpha, номер адресного пространства (ASN). Это связано с тем, что выборочная очистка позволяет изолировать поведение TLB, критически важное для эксплойта, между процессами без постоянной очистки всего TLB - основной причины затрат на смягчение последствий.

В марте 2018 г. Intel объявила, что они разработал аппаратные исправления только для Meltdown и Spectre-V2, но не для Spectre-V1. Уязвимости были устранены с помощью новой системы разделов, которая улучшает разделение процессов и уровней привилегий.

8 октября 2018 г. сообщается, что Intel добавила аппаратные средства и средства защиты микропрограмм в отношении уязвимостей Spectre и Meltdown в свой Coffee Lake-R процессоры и более поздние версии.

2 марта 2019 года сообщается, что Microsoft выпустила важное программное средство защиты Windows 10 (v1809) от уязвимости ЦП Spectre v2.

Сводка средств защиты от уязвимости Microsoft Windows
CVEИмя эксплойтаОткрытое имя уязвимостиИзменения WindowsИзменения прошивкиИсточник
Spectre2017-5753Вариант 1Обход проверки границ (BCB)Перекомпиляция с новым компилятором. Защищенный браузер для предотвращения эксплойтов JavaScriptNo
Spectre2017-5715Вариант 2Внедрение целевой ветви (BTI)Новые инструкции ЦП, устраняющие предположения о переходахЕ s
Meltdown 2017-5754Вариант 3Незаконная загрузка кэша данных (RDCL)Изолировать таблицы страниц ядра и пользовательского режима No
Spectre-NG2018-3640Вариант 3aЧтение несанкционированного системного реестра (RSRR)Да
Spectre-NG2018-3639Вариант 4Обход спекулятивного хранилища (SSB)Да
Spectre-NG2018-3665Ленивое восстановление состояния FP
Spectre-NG2018-3693Вариант 1.1Хранение обхода проверки границ (BCBS)
SpectreВариант 1.2Обход защиты только для чтения ( RPB)
SpectreRSBReturn Mispredict

Определенное программное обеспечение

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

Первоначальные меры по устранению последствий не предпринимались совершенно без происшествий. Сначала сообщалось, что патчи Spectre значительно снижают производительность, особенно на старых компьютерах. На более новых платформах Core восьмого поколения было измерено падение производительности на 2–14 процентов. 18 января 2018 г. сообщалось о нежелательных перезагрузках даже для более новых чипов Intel.

Поскольку использование Spectre с помощью JavaScript, встроенного в веб-сайты, возможно, по умолчанию планировалось включить меры защиты от атаки в Chrome 64. Пользователи Chrome 63 могут вручную смягчить атаку, включив функцию изоляции сайта (chrome: // flags # enable-site-per-process).

Начиная с Firefox 57.0.4, Mozilla уменьшала разрешение таймеров JavaScript, чтобы предотвратить атаки по времени, при этом в будущих выпусках запланирована дополнительная работа над методами фаззинга времени.

Общие подходы

4 января 2018 г. подробно описали в своем блоге по безопасности новую технику под названием "Retpoline" (return trampoline ), которая может преодолеть уязвимость Spectre с незначительными затратами процессора. Она включает в себя управление на уровне компилятора косвенного переходов к другой цели, что не приводит к уязвимому спекулятивному выполнению вне очереди. Хотя он был разработан для набора инструкций x86, инженеры Google считают, что этот метод также могут быть переданы другим обработчикам.

25 января 2018 г. текущее состояние и возможные будущие Были представлены недостатки в устранении уязвимостей Meltdown и Spectre.

18 октября 2018 года исследователи Массачусетского технологического института предложили новый подход к смягчению последствий, названный DAWG (Dynamically Allocated Way Guard), который может обеспечить лучшую безопасность без ущерба для производительности.

16 апреля 2019 года исследователи из Калифорнийского университета в Сан-Диего и Университета Вирджинии предложили Context-Sensitive Fencing, механизм защиты на основе микрокода, который хирургическим путем вводит ограждения в динамический поток выполнения, защищая от ряда вариантов Spectre всего за 8 % снижения производительности.

Противоречие

Когда Intel объявила, что защита от Spectre может быть включена как «функция безопасности» вместо постоянного исправления ошибок, создатель Linux Линус Торвальдс назвал патчи "полным и полным мусором". Инго Мольнар затем предложил использовать функцию трассировки оборудования в ядре Linux, чтобы исправить Spectre без предположений с косвенным ограничением ветви ( IBRS) поддержка микрокода. В результате это повлияет на производительность только процессоров на базе Intel Skylake и более новых архитектур. Это оборудование на основе ftrace и retpoline было включено в Linux 4.15 в январе 2018 года.

Иммунное оборудование

См. Также

Ссылки

Дополнительная литература

Внешние ссылки

Последняя правка сделана 2021-06-09 02:12:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте