Статьи по теме: «Информационная безопасность»

Чем опасны процессорные уязвимости. Часть 1: Атаки по побочным каналам

Содержание:

Введение

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

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

Процессорные ошибки

Центральный процессор компьютера последние лет двадцать привычно воспринимается потребителем как надежный и защищенный от ошибок «черный ящик», ведь он лежит в основе практически каждой операции, производимой на вычислительном устройстве, при этом надежность процессоров достигла очень высокого уровня. Разработка процессоров сопровождается тщательным тестированием и верификацией. Еще до выпуска чипа компания тестирует новую разработку, используя компьютерную симуляцию. Такое решение позволяет не проходить весь цикл разработки и выпуска устройства для обнаружения проблемы, а отследить и устранить недостаток на ранней стадии. Тестовая партия проверяется повторно для выявления ошибок, не найденных ранее. Тестирование на данном этапе позволяет тщательнее проверить функциональность.

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

Выявление недостатка в процессоре – явление нечастое и необычное, поэтому факт его обнаружения как правило получает широкую огласку, что сильно усугубляет положение компании-производителя. Яркий пример этого – ошибка Pentium FDIV bug, недостаток в модуле вычислений с плавающей точкой в процессорах Intel Pentium, обнаруженная профессором Линчбургского колледжа Томасом Найсли в октябре 1994 г.

Проблема заключалась в появлении ошибок при выполнении операций деления чисел с плавающей точкой, причиной которых являлось отсутствие нескольких вхождений в таблицу поиска, используемую для ускорения вычислений. Этот недостаток, хоть и проявлялся редко и не на всех входных данных, получил широкую огласку и привел к отзыву процессоров, а также большим потерям для Intel в 475 млн долл. Разбор данной истории и ее последствий приведен в статье PVS-Studio.

Наращивание производительности и безопасность в процессорах

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

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

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

Кэш-память

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

Для выравнивания разрыва в скорости работы центрального процессора и ОЗУ применяется иерархическая организация памяти, идея которой была предложена еще в 1946 г. Артуром Бёрксом, Германом Голдстайном и Джоном фон Нейманом. Вместо использования исключительно ОЗУ, между ним и вычислительным устройством помещается несколько более быстрых запоминающих устройств, называемых кэшами.

Кэши хранят в себе результаты прошлых операций: копии данных (или инструкций), загруженных из оперативной памяти, либо же результаты вычислений. При необходимости получения данных из ОЗУ, ЦП сначала по очереди проверяет все уровни кэш-памяти, один за другим, на наличие необходимых данных и, только если данных там не нашлось, обращается к ОЗУ. Современные процессоры используют три уровня кэш-памяти, каждый из которых расположен непосредственно на чипе. Объем и скорость кэш-памяти стали одними из основных процессорных характеристик.

Кэши первого уровня (L1, level 1) находятся на каждом из ядер процессора и подразделяются на: L1d (для данных) и L1i (для инструкций). Время доступа к этому кэшу самое малое, но и информации он вмещает в себя меньше остальных.

Кэш второго уровня (L2, level 2) также в большинстве современных процессоров размещается на ядре, но не подразделяется на данные и инструкции. Он больше и медленнее кэша L1.

Кэш третьего уровня (L3, level 3 или LLC, last level cache) – общий для всех ядер. Он значительно объемнее предыдущих уровней, но и время доступа к нему больше.

Кэш четвертого уровня в современных процессорах обычно не применяется.

Кроме этих кэшей есть еще и кэши специального назначения. Среди них – буфер ассоциативной трансляции (Translation lookaside buffer, TLB), служащий для сохранения информации о трансляции виртуальных адресов в физические.

Кэш-память успешно сглаживает разрыв в скорости работы ОЗУ и ЦП, избавляет от повторения уже выполненных операций. Но при этом текущая реализация ослабляет изоляцию процессов. Данные процессов в оперативной памяти строго изолированы друг от друга, и за проверку доступа к ним отвечают как операционная система, так и сам процессор. Непривилегированный процесс не может считывать или изменять память другого процесса. Для кэшей же разделение памяти не предусматривалось, ведь программа не может явно проверить содержимое кэша или считать оттуда произвольные данные. Процессор не предоставляет таких возможностей. Поэтому данные различных пользовательских процессов, а также процессов ядра ОС, соседствуют в кэше, и никак друг от друга не отделены. Более того, каждому процессу во время его работы кэш предоставляется целиком, со всеми данными других процессов. Далее будет рассмотрено, как это позволяет злоумышленнику извлекать данные других пользователей и ядра ОС из оперативной памяти.

Внеочередное исполнение

В том или ином виде внеочередное исполнение реализовано во всех современных процессорах, так как позволяет получить наибольший выигрыш в производительности за счет параллелизма на уровне команд. Intel стала использовать внеочередное исполнение в процессорах Pentium Pro в 1995 г. Вместо строгого исполнения инструкций в порядке, представленном в программе, механизм внеочередного исполнения меняет порядок инструкций для минимизации времени простоя процессора. Для переупорядочивания инструкций применяется алгоритм Томасуло, который позволяет избежать конфликтов и нарушения целостности информации. Команды выстраиваются в очередь и исполняются по мере готовности своих операндов, не обязательно следуя порядку в программе. Рассмотрим следующий пример:

ld → r1, 0(r2) → // загрузить r1 из адреса r2
add → r2, r1, r3 → // r2 := r1 + r3
add → r4, r3, r5 → // r4 := r3 + r5

Предположим, что операнды r3 и r5 готовы к использованию, в то время как r1 должен быть загружен из оперативной памяти. При поочередном исполнении инструкций для выполнения первой команды процессор останавливается, ожидая готовности операнда (загрузки из оперативной памяти). Но для выполнения третьей инструкции данные в r1 не требуются, а ее операнды готовы к использованию. При внеочередном исполнении эта команда выполнилась бы первой, в то время пока подготавливается операнд для инструкции загрузки данных из памяти. Заметим, что внеочередное исполнение второй команды невозможно, так как она явно зависит от результатов первой.

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

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

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

Спекулятивное исполнение

Программы в своей работе задействуют условные переходы: в зависимости от выполнения или невыполнения определенного условия выполняются разные участки кода. Во многих ситуациях проверка условия – затратная вычислительная операция, к примеру, требующая считывания данных из оперативной памяти. Внеочередное исполнение в таком случае неприменимо, ведь неизвестно наверняка, какая ветвь управления должна быть выбрана. Рассмотрим следующий пример:

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

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

Были выпущены два общих идентификатора уязвимостей и уязвимостей, связанных со 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 года Андерс Фог выступил в Рурском университете Бохума с презентацией об автоматическом поиске скрытых каналов, особенно на процессорах с конвейером, используемым более чем одним ядром процессора.

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

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

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

После раскрытия информации о Spectre и Meltdown в январе 2018 года было проведено множество исследований уязвимостей, связанных со спекулятивным исполнением. С 3 мая 2018 года, восемь дополнительных недостатков Specter класса условно названные Specter-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 ( чтение системного реестра Rogue, вариант 3a) и CVE-2018-3639 ( обход спекулятивного хранилища , вариант 4), а также именуемые Intel SA-00115 и HP PSR-2018-0074 соответственно.

Согласно Amazon Deutschland , Cyberus Technology, SYSGO и Колину Персивалю ( FreeBSD ), 13 июня 2018 года Intel раскрыла подробности о третьем варианте Spectre-NG CVE-2018-3665 ( Lazy FP State Restore , Intel SA-00145). также известен как утечка состояния отложенного 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 , новые типы уязвимостей выполнения кода с использованием Return Stack Buffer (RSB).

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

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

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

Механизм

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

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

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

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

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

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

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

Удаленная эксплуатация

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

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

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

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

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

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

Влияние

По состоянию на 2018 год Spectre затрагивает почти все компьютерные системы, включая настольные компьютеры, ноутбуки и мобильные устройства. В частности, было показано, что Spectre работает с процессорами Intel , AMD , ARM и IBM . Корпорация Intel ответила на обнаруженные уязвимости системы безопасности официальным заявлением. AMD первоначально признала уязвимость одного из вариантов Spectre ( вариант 1 GPZ ), но заявила, что уязвимость другого (вариант 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 может оказать большее влияние на облачных провайдеров, чем Meltdown. В то время как Meltdown позволяет неавторизованным приложениям считывать данные из привилегированной памяти для получения конфиденциальных данных из процессов, запущенных на одном облачном сервере, Spectre может позволить вредоносным программам побудить гипервизор передать данные в гостевую систему, работающую поверх него.

Смягчение

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

Было опубликовано несколько процедур, помогающих защитить домашние компьютеры и связанные с ними устройства от уязвимости. Сообщается, что патчи 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 Изменения прошивки Источник
Призрак 2017-5753 Вариант 1 Обход проверки границ (BCB) Перекомпиляция с новым компилятором
Защищенный браузер для предотвращения эксплойтов из JavaScript
Нет
Призрак 2017-5715 Вариант 2 Целевая инъекция ответвления (BTI) Новые инструкции ЦП, устраняющие спекуляции на ветвях да
Meltdown 2017-5754 Вариант 3 Незаконная загрузка кэша данных (RDCL) Изолировать таблицы страниц ядра и пользовательского режима Нет
Спектр-НГ 2018-3640 Вариант 3а Чтение несанкционированного системного реестра (RSRR) да
Спектр-НГ 2018-3639 Вариант 4 Спекулятивный обход хранилища (SSB) да
Спектр-НГ 2018-3665 Ленивое восстановление состояния FP
Спектр-НГ 2018-3693 Вариант 1.1 Магазин байпаса проверки границ (BCBS)
Призрак Вариант 1.2 Обход защиты только для чтения (RPB)
SpectreRSB Вернуть неверный прогноз

Специальное программное обеспечение

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

Первоначальные меры по смягчению последствий не обошлись без инцидентов. Сначала сообщалось, что патчи 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 года Google подробно описал в своем блоге по безопасности новую технику под названием «Retpoline» (возвратный трамплин ), которая может преодолеть уязвимость 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 без поддержки микрокода Indirect Branch Restricted Speculation (IBRS). В результате это повлияет на производительность только процессоров на базе Intel Skylake и более новой архитектуры. Этот механизм на основе ftrace и retpoline был включен в Linux 4.15 в январе 2018 года.

В процессорах Intel Xeon выявлена уязвимость NetCAT, позволяющая красть данные

В процессорах AMD EPYC этой уязвимости нет

В процессорах Intel есть фирменный механизм повышения производительности, который называется Direct Data I/O или DDIO и позволяет сетевым адаптерам напрямую обращаться к процессорной кэш-памяти третьего уровня, полностью обходя оперативную память, чтобы ускорить работу сетевой платы и уменьшить задержки.

Исследователи в области кибербезопасности из Vrije Universiteit Amsterdam и ETH Zurich опубликовали исследовательскую работу, в которой описана обнаруженная ими критическая уязвимость NetCAT, связанная с DDIO. Она позволяет взломанным серверам красть данные со всех других компьютеров в локальной сети. В частности, это включает возможность получать нажатия клавиш и другие конфиденциальные данные, проходящие через память уязвимых систем. Этот эффект усугубляется в центрах обработки данных, в которых включен не только DDIO, но и RDMA (удаленный прямой доступ к памяти), в котором один сервер может скомпрометировать всю сеть. RDMA является ключевым компонентом повышения производительности в высокопроизводительных вычислениях и суперкомпьютерных средах.

Уязвимость NetCAT создает большие проблемы для провайдеров веб-хостинга. Если хакер арендует сервер в дата-центре с поддержкой RDMA и DDIO, он может скомпрометировать серверы других клиентов и украсть их данные.

Компания Intel попросила пользователей систем на процессорах Xeon отключить DDIO и RDMA на машинах с доступом к ненадежным сетям, пока она работает над исправлением, которое должно устранить уязвимость.

Процессоры AMD EPYC не поддерживают DDIO, поэтому в них нет описанной уязвимости.

Как исследователь взломал собственный компьютер и убедился в реальности самой серьёзной в истории уязвимости процессоров

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

Тогда 31-летний исследователь в области информационной безопасности и постдок в Грацском техническом университете проник в святая святых CPU и извлёк оттуда конфиденциальные сведения.

До этого момента Грасс и его коллеги Моритц Липп и Майкл Шварц полагали, что подобная атака на память ядра процессора, которая должна быть недоступна пользователю, возможна лишь в теории.

«Когда я увидел, как адреса веб-сайтов из Firefox, которые должны быть доступны только мне, были считаны из памяти написанной мной программой, это меня невероятно потрясло», — сказал Грасс в интервью, которое он дал Рейтер по электронной почте, описывая то, как ему удалось раскрыть конфиденциальные данные, которые должны были быть защищены.

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

«Мы часами всё проверяли, не доверяя полученному результату, до тех пор, пока не исключили малейшую возможность ошибки», — сказал Грасс, который в тот день не смог успокоиться и хотя бы немного поспать даже после того, как выключил компьютер.

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

Уязвимость, которая теперь называется Meltdown, была раскрыта в среду. Она влияет на большинство процессоров, произведённых Intel с 1995-го года.

Отдельно была найдена ещё одна «дыра», названная Spectre. Эта уязвимость так же делает доступной память ядра в большинстве компьютеров и мобильных устройств, работающих на процессорах, созданных Intel, AMD и ARM.

И то и другое способно дать злоумышленникам доступ к чему угодно — хоть к паролям, хоть к фотографиям, которые хранятся на настольных ПК, ноутбуках, на облачных серверах или смартфонах. Неизвестно, могли ли хакеры проводить подобные вторжения в системы ранее, так как ни Meltdown, ни Spectre не оставляют следов.

Intel сообщила о том, что она начала предоставлять обновления ПО и прошивок, позволяющие смягчить последствия проблемы. ARM также заявила, что работает, вместе с AMD и Intel, над соответствующими патчами.

Поиск решения проблемы

О находке изначально написал технический интернет-журнал The Register. В результате материал об уязвимости был опубликован на неделю ранее, чем планировали производители, то есть, до того, как у них было время на разработку защитных средств для полного устранения проблемы.

Команда из Граца в то время уже работала над инструментом для защиты систем от попыток украсть секретные данные из памяти ядра.

В документе, опубликованном в Июне прошлого года, они назвали его KAISER (Kernel Address Isolation to have Side-channels Effectively Removed).

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

Эта особенность заключается в том, что процессор поддерживает внеочередное выполнение задач, которые обрабатываются не в той последовательности, в которой процессор их получает. Если, при спекулятивном выполнении кода, выполняется правильная последовательность действий — экономится время. Если предположение оказалось неверным, результаты выполнения внеочередной задачи отбрасываются и время не теряется.

Кроме того, исследователь Андерс Фог опубликовал материал о возможности атаки на память ядра через нарушение режима работы механизма упреждающего выполнения кода. Однако на практике он это осуществить не смог.

Ответственное раскрытие

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

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

По словам Грасса, ключевыми фигурами здесь были независимые исследователи Паул Кохер и его команда из компании Cyberus Technology, в то время как Янн Хорн из Google Project Zero пришёл к похожим выводам самостоятельно.

«Мы, в середине декабря, объединили усилия с командой Паула Кохера и с сотрудниками Cyberus Technology для работы над двумя основательными публикациями по Meltdown и Spectre», — сказал Грасс (источник).

Грасс даже не знал о той работе, которой занимался Хорн.

«Весьма впечатляет то, что Янн Хорн создал это всё самостоятельно», — сказал он. «Мы разработали очень похожую атаку, но в нашем случае речь идёт о команде из 10 исследователей». Группа исследователей сообщила, что патчи, направленные на защиту от уязвимости Meltdown, основанные на KAISER, были подготовлены для операционных систем от Microsoft и Apple, а так же для Linux.

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

Когда Грасса спросили о том, какая из двух уязвимостей опаснее, он ответил: «Проблема сегодняшнего дня — это Meltdown. Дальше придёт черёд Spectre. Эту уязвимость сложнее эксплуатировать, но и исправить её тоже сложнее. В результате, в долгосрочной перспективе, я сделал бы ставку на Spectre».

Уважаемые читатели! Как вы думаете, что изменится в мире информационных технологий после раскрытия уязвимостей Meltdown и Spectre?

Уязвимость в процессорах Intel коснется сотен миллионов пользователей

Эксперты по безопасности обнаружили критическую уязвимость в процессорах Intel. Дефект затрагивает большинство компьютеров и смартфонов, выпущенных за последние 10 лет, в том числе ПК на базе Windows, macOS и Linux. Предполагается, что обновление ПО приведет к замедлению скорости работы устройств на треть. При этом в Intel сообщают, что уязвимости подвержены не только ее процессоры, но и системы от AMD и ARM.

Подробности об обнаруженной аппаратной уязвимости пока держатся в секрете — полный отчет эксперты по безопасности должны представить в конце января. Как пишет The Guardian, дефект затрагивает практически все процессоры Intel в большинстве компьютеров на базе Windows, macOs и Linux. Проблема касается и других гаджетов. Как заявил глава Intel Брайан Крзанич: «Уязвимость затрагивает смартфоны, ПК и все остальные устройства, но степень воздействия будет отличаться в зависимости от продукта».

Как системный администратор из Тюмени стал мировой ИТ-звездой

Ряд компаний, включая Microsoft, начали поспешно разрабатывать защитные обновления ПО. Linux и Windows уже представили первые патчи, но они не устраняют проблему полностью.

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

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

Обновления ПО, возможно, смогут устранить проблему, но это приведет к замедлению работы компьютера. Некоторые операции будут проходить на 30% медленнее, считают эксперты.

В Рождество цены на электричество в Германии стали отрицательными

Предполагается, что Intel и ряд других компаний узнали о критической уязвимости еще несколько месяцев назад. Как сообщает Business Insider, в конце ноября глава Intel Брайан Крзанич продал акции и опционы компании на сумму $24 млн. По сведениям источников, Крзанич получил сведения об уязвимости от экспертов Project Zero (проект Alphabet) еще в июне. Пока неясно, связана ли продажа акций с обнаруженным дефектом.

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

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

GE успешно испытала турбовинтовой двигатель с напечатанными деталями

Microsoft уже подготовила первое обновление, которое будет доступно пользователям устройств на базе Windows 10 — система обновится автоматически. Автоматическое обновление для Windows 7 и Windows 8 появится в ближайший вторник.

Amazon, Microsoft и Google также придется разработать защитные патчи для своих облачных сервисов и некоторых программ. Обновления потребуются и для антивирусов.

Уязвимость в ЦП Intel: затронуты Windows и Linux, закрытие уязвимости приведёт к падению производительности до 30%

Если сообщения верны, Intel допустила весьма серьёзную уязвимость в своих центральных процессорах, и её нельзя исправить обновлением микрокода. Уязвимость затрагивает все процессоры Intel за последние лет десять как минимум.

Закрытие уязвимости требует обновления ОС, патчи для Linux уже вышли, Microsoft планирует закрыть её в рамках традиционного ежемесячного «вторника патчей». На данный момент детали уязвимости не разглашаются, но некоторые подробности всё-таки выплыли наружу благодаря Python Sweetness и The Register.

Уязвимость позволяет программам получать несанкционированный доступ к определённым данным в защищённой области памяти ядра. Предотвратить это можно, внедрив изоляцию памяти ядра (Kernel Page Table Isolation), которая сделает ядро «невидимым» для текущих процессов. Это не идеальное решение проблемы, но грядущие патчи для Windows, Linux и macOS будут использовать именно этот подход.

Однако подобное решение может очень серьёзно ударить по производительности. Падение производительности из-за изоляции может достигать 30 процентов. К счастью, последние модели процессоров Intel с технологией PCID (идентификаторы контекста процесса), возможно, позволяют уменьшить падение производительности, хоть и не избежав его совсем.

Уязвимость может эксплуатироваться в реальных условиях; под удар, в первую очередь, могут попасть компании, использующие виртуализацию.

«Разработка программного решения проблемы ведётся в срочном порядке, и уже недавно оно было внедрено в ядро Linux; в ядрах NT схожее решение начало появляться в ноябре,» — сообщает блок Python Sweetness. — «В худшем случае это повлечёт за собой серьёзное замедление в повседневных задачах.

»Есть повод подозревать, что уязвимы популярные окружения для виртуализации, включая Amazon EC2 и Google Compute Engine.»

Microsoft Azure и Amazon Web Services уже запланировали временное отключение серверов на следующей неделе, хоть и не дают комментариев по поводу причины работ. Однако, вероятно, именно необходимость защититься от возможных атак с использованием найденной уязвимости является его причиной.

Заметьте, что AMD пока не упоминалась ни разу. Всё просто: процессоры AMD не подвержены данной уязвимости — а, следовательно, и не нуждаются в ресурсоёмкой защите от неё.

Томас Лендаки, участник работающей с Linux группы в AMD, сообщает:

«Процессоры AMD не подвержены атакам, от которых защищает изоляция памяти ядра. Архитектура AMD не позволяет получить доступ к данным при отсутствии соответствующих привилегий.»

К тому же, новые серверные чипы EPYC от AMD, а также их десктопные процессоры Ryzen Pro имеют технологию шифрования защищённой памяти, дающую дополнительную защиту от атак подобного рода.

Так или иначе, пока детали патчей не раскрываются, и Intel по понятным причинам предпочитает молчать, нам остаётся только ждать, когда можно будет полностью оценить серьёзность проблемы и угрозу, которую она несёт существующим компьютерным платформам. Но на данный момент всё это выглядит очень серьёзно. Патч с решением (kpti) для Linux добавил в ядро лично Линус Торвальдс.

Phoronix уже протестировали производительность при включённом kpti и пришли к выводу, что возможны просадки до 17-18 процентов.

Также сообщается, что патч для Linux будет по умолчанию включать kpti и на компьютерах с процессорами AMD, вызывая соответствующее падение производительности. AMD не рекомендует использовать kpti на компьютерах с процессорами AMD. Детали решения для Windows пока неизвестны.

Intel: вам не нужно отключать Hyper-Threading для защиты от ZombieLoad

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

ZombieLoad аналогична предыдущим атакам по «побочным каналам» (англ. side-channel attack), вынуждающим процессоры Intel открывать доступ к потенциально конфиденциальной информации, которая обычно изолирована и доступна только для использующих её приложений. Исследователи по безопасности сообщили ранее, что эта уязвимость присутствует в большинстве чипов Intel и может быть использована в Windows, MacOS и Linux.

ZombieLoad уже получила в Сети собственный логотип

Intel со своей стороны не согласна с тем, насколько серьёзным оценивается риск ZombieLoad. Компания даже решила дать ZombieLoad другое название — Microarchitectural Data Sampling (MDS) или Микроархитектурная выборка данных. Согласитесь, это звучит гораздо менее страшно, чем отсылка к каким-то зомби.

«Уязвимость MDS основана на выборке данных, просачивающихся из небольших структур в ЦП при использовании локально выполняемого побочного канала спекулятивного исполнения», — объясняют в компании. «Практическая эксплуатация MDS является очень сложным делом. Сама по себе уязвимость не предоставляет злоумышленнику способ выбрать те данные, которые он желает получить».

«MDS уже устранена на аппаратном уровне во многих наших последних процессорах Intel Core 8-го и 9-го поколения, а также в семействе процессоров Intel Xeon Scalable второго поколения», — говорится в сообщении компании. «Для других затронутых продуктов меры по снижению риска доступны посредством обновления микрокода в сочетании с соответствующими обновлениями операционной системы и программного обеспечения гипервизора, которые доступны с сегодняшнего дня. Мы предоставили больше информации на нашем веб-сайте и продолжаем призывать всех поддерживать свои системы в актуальном состоянии, поскольку это — один из лучших способов обеспечения безопасности».

Представители Intel также указали и на то, что исследовательская группа ZombieLoad работала с компанией и другими специалистами в индустрии ПК, чтобы исправить уязвимость, прежде, чем о ней станет публично известно. «Мы хотели бы выразить нашу благодарность исследователям, которые работали с нами, и нашим партнёрам по отрасли за их вклад в скоординированное решение этой проблемы».

Так что насчёт Hyper-Threading?

Intel заявила, что отключение Hyper-Threading — не обязательный и не единственный вариант для пользователей ПК. На самом деле, по словам Intel, каждый клиент сам решает, что ему делать. Если вы не можете гарантировать безопасность установленного у вас программного обеспечения, тогда да, вероятно, отключить Hyper-Threading — это хорошая идея. Если же программное обеспечение поставляется только из магазина Microsoft, из ИТ-отдела или просто установлено из доверенных, по вашему мнению, источников, вы, вероятно, можете оставить Hyper-Threading включенным. Всё действительно зависит только от того, насколько вы переживаете о своей безопасности.

«Поскольку факторы значительно различаются для разных клиентов, Intel не рекомендует отключать Hyper-Threading, так как важно понимать, что это — не единственный путь обеспечить защиту от MDS и не обеспечивает защиту само по себе», — говорится в заявлении компании.

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

Google выпустил исправление для Chrome OS, которое по умолчанию отключает Hyper-Threading для Chromebook. Люди, которые хотят включить технологию мультипоточности обратно, могут сделать это самостоятельно, считают в компании.

Apple выпустила обновление для MacOS Mojave и сообщила, что клиенты компании, особенно требовательные к безопасности, могут отключить Hyper-Threading самостоятельно.

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

В связи с тем, что по большей части поставщики операционных систем решили оставить Hyper-Threading включённым, угроза ZombieLoad, очевидно, не так серьёзна, как это казалось ещё сутки назад. К тому же, до сих пор нет ни одного известного случая использования уязвимости в реальной атаке.

При этом использование патчей без отключения технологии Hyper-Threading почти не снижает производительность процессоров Intel.

Intel демонстрирует, что частичное исправление уязвимости без отключения Hyper-Threading почти не влияет на производительность

Но вы не поверите, если посмотрите на результаты тестирования Intel влияния патчей безопасности на производительность при отключенном Hyper-Threading. Компания утверждает, что исправления безопасности вместе с отключением Hyper-Threading оказывают подозрительно небольшое влияние на производительность.

Результаты тестирования исправления безопасности при отключенном Hyper-Threading

Портал PCWorld категорически не согласен с мнением Intel о том, что отключение Hyper-Threading не представляет особой проблемы, хотя Intel и демонстрирует в своём документе, что производительность практически не изменилась. Проблема состоит в искусственности тестов Intel при отключении Hyper-Threading, поскольку компания не тестировала специфичные многопоточные нагрузки. Если бы Intel взяла тесты Blender, Cinebench или другие, рассчитанные на многоядерные и многопоточные процессоры, мы бы сразу увидели мощный провал в быстродействии.

Чтобы подчеркнуть, насколько важна технология Hyper-Threading, можно просто посмотреть на процессоры Intel i9-9900K за $500 и i7-9700K за $375, главное отличие которых заключается как раз в поддержке Hyper-Threading. Отключение Hyper-Threading на процессорах Intel — это невероятный удар для всех, кому важна многопоточная производительность.

Но есть и хорошая новость для тех, кто использует новейшие процессоры Intel. Как заявили в компании, многие из её последних процессоров 8-го и 9-го поколения уже имеют исправления аппаратного микрокода, поэтому владельцам i9-9900K нет никаких причин отключать Hyper-Threading. Опасность ZombieLoad, очевидно, выше для более старых процессоров. Владельцы этих систем должны будут полагаться на обновления операционной системы и программного обеспечения, а также на работу используемых ими антивирусных решений, чтобы снизить риск получения вредоносного кода. А также ещё раз напомним тот факт, что до сих пор не известно ни об одной атаке, использующей ZombieLoad.

Intel против AMD: у кого самые безопасные процессоры?

Поделитесь в соцсетях:

  • Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
  • Нажмите здесь, чтобы поделиться контентом на Facebook. (Открывается в новом окне)
  • Нажмите, чтобы поделиться на LinkedIn (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Pocket (Открывается в новом окне)
  • Нажмите, чтобы поделиться в Telegram (Открывается в новом окне)

Многолетняя борьба между Intel и AMD недавно приобрела новое измерение, поскольку всё больше пользователей начинают задаваться вопросом: какие процессоры являются наиболее безопасными – Intel или AMD. Это решил выяснить ресурс Tom’s Hardware, проделав огромную работу по сравнению продуктов обоих производителей и выявив их недостатки.

В январе 2018 года команда исследователей безопасности Google Project Zero и другие независимые эксперты раскрыли уязвимости процессоров, получивших название Meltdown и Spectre . В дальнейшем это привело к возникновению других аналогичных уязвимостей, которые в большей степени затронули чипы Intel, что сделало технологию Hyper-Threading небезопасной. Подавляющее большинство атак на выполнение не влияют на процессоры AMD, за исключением нескольких разновидностей Spectre. Исправления от всех этих уязвимостей замедлило работу систем на базе процессоров Intel примерно в пять раз по сравнению с AMD. Но ещё до обнаружения Meltdown и Spectre у Intel были большие проблемы с подсистемой Management Engine (ME), затронувшие все процессоры компании с 2008 года. Из-за опасений, что это может быть «официальным» бэкдором, некоторые производители компьютеров начали предлагать потребителям ноутбуки с отключенной по умолчанию ME.

У AMD наблюдались похожие проблемы с подсистемой AMD Secure Processor (PSP), которая является аналогом Intel Management Engine. С 2017 года было обнаружено не менее трёх уязвимостей PSP наряду с 13 проблемами безопасности, которые затронули процессоры AMD на базе Zen в последующие годы. Эксперты разделили их на четыре категории: Ryzenfall, Chimera, Fallout и Masterkey. В целом на данный момент процессоры Intel имеют 242 открытых уязвимости, тогда как у AMD их насчитывается всего 16.

Процессоры Ryzen обладают более продвинутыми функциями аппаратного шифрования памяти, такими как Secure Memory Encryption (SME) и Secure Encrypted Virtualization (SEV). Они были созданы в ответ на Software Guard eXtensions (SGX) и Total Memory Encryption (TME) от Intel. С появлением архитектуры Zen компания AMD вырвалась вперёд в плане поддержки новых аппаратных функций шифрования. Intel пытается всё исправить и вернуть расположение потребителей, но сейчас AMD выглядит предпочтительнее. По крайней мере в ближайшей перспективе уж точно. По подсчётам Tom’s Hardware, общий результат составил 5:1 в пользу «красных».

Meltdown (уязвимость в системе безопасности) — Meltdown (security vulnerability)

Meltdown — это аппаратная уязвимость, затрагивающая микропроцессоры Intel x86 , процессоры IBM POWER и некоторые микропроцессоры на базе ARM . Это позволяет мошенническому процессу читать всю память , даже если он не авторизован для этого.

Meltdown влияет на широкий спектр систем. На момент раскрытия это включало все устройства, работающие под управлением любых версий iOS , Linux , macOS или Windows, кроме самых последних и исправленных . Соответственно, пострадали многие серверы и облачные сервисы , а также потенциальное большинство интеллектуальных устройств и встроенных устройств, использующих процессоры на базе ARM (мобильные устройства, интеллектуальные телевизоры, принтеры и другие), включая широкий спектр сетевого оборудования. Чисто программный обходной путь Meltdown был оценен как замедление компьютеров от 5 до 30 процентов при определенных специализированных рабочих нагрузках, хотя компании, ответственные за программную коррекцию эксплойта, сообщают о минимальном влиянии общего тестирования производительности.

В январе 2018 г. Meltdown получил идентификатор общих уязвимостей и уязвимостей CVE — 2017-5754 , также известный как Rogue Data Cache Load (RDCL). Он был раскрыт вместе с другим эксплойтом, Spectre , с которым он разделяет некоторые, но не все характеристики. Аналитики безопасности считают уязвимости Meltdown и Spectre «катастрофическими». Уязвимости настолько серьезны, что исследователи безопасности изначально считали сообщения ложными.

Было опубликовано несколько процедур, помогающих защитить домашние компьютеры и связанные с ними устройства от уязвимостей безопасности Meltdown и Spectre. Исправления Meltdown могут привести к потере производительности. Сообщается, что патчи Spectre значительно снижают производительность, особенно на старых компьютерах; на более новых платформах Core восьмого поколения было измерено падение производительности на 2–14%. 18 января 2018 года сообщалось о нежелательных перезагрузках даже для новых чипов Intel из-за исправлений Meltdown и Spectre. Тем не менее, по словам Делл : «На сегодняшний день [26 января 2018 года] не поступало сообщений о« реальных »эксплойтах этих уязвимостей [например, Meltdown и Spectre], хотя исследователи представили доказательства концепции». Кроме того, рекомендуемые меры предотвращения включают: «быстрое внедрение обновлений программного обеспечения, предотвращение нераспознанных гиперссылок и веб-сайтов, отказ от загрузки файлов или приложений из неизвестных источников . соблюдение протоколов безопасных паролей . [использование] программного обеспечения безопасности для защиты от вредоносных программ (расширенное предотвращение угроз программное обеспечение или антивирус) «.

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

15 марта 2018 г. корпорация Intel сообщила, что переработает процессоры своих ЦП для защиты от Meltdown и связанных уязвимостей Spectre (особенно Meltdown и Spectre-V2, но не Spectre-V1), и планирует выпустить недавно переработанные процессоры позже в 2018. Сообщается, что 8 октября 2018 года Intel добавила аппаратные и микропрограммные средства защиты от уязвимостей Spectre и Meltdown для своих последних процессоров.

Содержание

  • 1 Обзор
  • 2 История
  • 3 Механизм
    • 3.1 Предпосылки — современный дизайн ЦП
    • 3.2 Эксплойт Meltdown
  • 4 Удар
    • 4.1 Затронутое оборудование
  • 5 Смягчение
  • 6 См. Также
  • 7 ссылки
  • 8 Внешние ссылки

Обзор

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

Поскольку многие операционные системы отображают физическую память, процессы ядра и другие запущенные процессы пользовательского пространства в адресное пространство каждого процесса, Meltdown позволяет мошенническим процессам читать любую физическую память, отображаемую память ядра или других процессов — независимо от того, он должен уметь это делать. Для защиты от Meltdown потребуется избегать использования сопоставления памяти способом, уязвимым для таких эксплойтов (например, программное решение), или избегать основного состояния гонки (например, модификации микрокода ЦП и / или пути выполнения).

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

Атака Meltdown не может быть обнаружена, если она проводится.

История

8 мая 1995 года в документе под названием «Архитектура процессора Intel 80×86: подводные камни для безопасных систем», опубликованном на симпозиуме IEEE по безопасности и конфиденциальности 1995 года, содержалось предупреждение о скрытом канале синхронизации в кэше ЦП и резервном буфере трансляции (TLB). Этот анализ был проведен под эгидой Программы оценки доверенных продуктов (TPEP) Агентства национальной безопасности .

В июле 2012 года ядро Apple XNU (используемое , среди прочего, в macOS , iOS и tvOS ) приняло рандомизацию компоновки адресного пространства ядра (KASLR) с выпуском OS X Mountain Lion 10.8. По сути, база системы, включая ее расширения ядра ( kexts ) и зоны памяти, случайным образом перемещается в процессе загрузки, чтобы снизить уязвимость операционной системы к атакам.

В марте 2014 года ядро ​​Linux приняло KASLR для предотвращения утечки адресов.

8 августа 2016 года на конференции Black Hat 2016 Андерс Фог и Дэниел Грюсс представили «Использование недокументированного поведения ЦП для просмотра режима ядра и взлома KASLR в процессе» .

10 августа 2016 года Мориц Липп и др. из технического университета Граца опубликовал книгу «ARMageddon: Cache Attacks on Mobile Devices» в материалах 25-го симпозиума по безопасности USENIX . Несмотря на то, что он был сфокусирован на ARM, он заложил основу для вектора атаки.

27 декабря 2016 года на 33C3 Клементин Морис и Мориц Липп из TU Graz представили свой доклад «Что может пойти не так с ? Побочные эффекты включают атаки по побочным каналам и обход ASLR ядра», в котором уже говорилось, что такое прибывает.

1 февраля 2017 года Intel были присвоены номера CVE 2017-5715, 2017-5753 и 2017-5754.

27 февраля 2017 г. Bosman et al. из Vrije Universiteit Amsterdam опубликовали свои выводы о том, как можно злоупотреблять рандомизацией разметки адресного пространства (ASLR) в архитектурах на основе кеша на симпозиуме NDSS.

27 марта 2017 года исследователи из Австрийского технологического университета Граца разработали доказательную концепцию, которая может получать ключи RSA из анклавов Intel SGX, работающих в той же системе, в течение пяти минут, используя определенные инструкции ЦП вместо точного таймера для использовать побочные каналы кэш-памяти DRAM .

В июне 2017 года в KASLR был обнаружен большой класс новых уязвимостей. Исследование Технологического университета Граца показало, как устранить эти уязвимости, предотвратив любой доступ к неавторизованным страницам. Презентация получившейся техники KAISER была представлена ​​на конгресс Black Hat в июле 2017 года, но была отклонена организаторами. Тем не менее, эта работа привела к изоляции таблицы страниц ядра (KPTI, первоначально известной как KAISER) в 2017 году, что, как было подтверждено, устраняет большой класс ошибок безопасности, включая некоторую ограниченную защиту от еще не обнаруженного Meltdown — факт подтвержден. Авторы Meltdown. В июле 2017 года исследование, опубликованное на веб-сайте CyberWTF исследователем безопасности Андерсом Фогом, описало использование атаки по времени кэширования для чтения данных пространства ядра путем наблюдения за результатами спекулятивных операций, обусловленных данными, полученными с недопустимыми привилегиями.

Meltdown была обнаружена независимо Янн Роге от Google «s Project Zero , Вернер Хаас и Томас Prescher из Cyberus технологии, а также Даниэль Gruss, Moritz Липпом, Стефан Mangard и Майкл Шварц из Граца технологический университет . Те же исследовательские группы, которые обнаружили Meltdown, также обнаружили связанную уязвимость системы безопасности процессора, которая теперь называется Spectre .

В октябре 2017 года в NetBSD-current была добавлена ​​поддержка Kernel ASLR на amd64, что сделало NetBSD первой системой BSD с полностью открытым исходным кодом, которая поддерживает рандомизацию структуры адресного пространства ядра (KASLR). Однако частично открытый код Apple Darwin , который составляет основу macOS и iOS (среди прочих), основан на FreeBSD ; KASLR был добавлен в его ядро XNU в 2012 году, как указано выше.

14 ноября 2017 года исследователь безопасности Алекс Ионеску публично упомянул об изменениях в новой версии Windows 10, которые могут вызвать некоторое снижение скорости, без объяснения необходимости этих изменений, просто сославшись на аналогичные изменения в Linux .

После того, как 28 июля 2017 г. поставщики оборудования и программного обеспечения были проинформированы о проблеме, две уязвимости были совместно обнародованы 3 января 2018 г., за несколько дней до согласованной даты выпуска 9 января 2018 г., когда новостные сайты начали сообщать о фиксации. в ядро ​​Linux и по почте в его список рассылки. В результате патчи не были доступны для некоторых платформ, таких как Ubuntu , когда были обнаружены уязвимости.

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

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

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

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

Механизм

Meltdown полагается на состояние гонки ЦП, которое может возникнуть между выполнением инструкции и проверкой привилегий. Короче говоря, выполнение инструкции оставляет побочные эффекты, которые представляют собой информацию, не скрытую для процесса проверкой привилегий. Затем процесс, выполняющий Meltdown, использует эти побочные эффекты для вывода значений отображаемых данных в памяти , минуя проверку привилегий. Ниже приводится обзор эксплойта и карты памяти, которая является его целью. Атака описывается с точки зрения процессора Intel под управлением Microsoft Windows или Linux , основных тестовых целей, используемых в исходной статье, но она также затрагивает другие процессоры и операционные системы, включая macOS (также известную как OS X), iOS и Android .

Предпосылки — современный дизайн процессора

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

  • Виртуальная (выгружаемая) память , также известная как отображение памяти, используется для повышения эффективности доступа к памяти и для управления тем, какие процессы могут обращаться к каким областям памяти.
    Современный компьютер обычно выполняет несколько процессов параллельно. В операционной системе, такой как Windows или Linux ,создаетсявпечатление, что каждый процесс сам по себе полностью использует физическую память компьютераи может делать с ней все, что хочет. В действительности ему будет выделена память для использования из физической памяти, которая действует как «пул» доступной памяти, когда он впервые пытается использовать любой заданный адрес памяти (путем попытки чтения или записи в него). Это позволяет нескольким процессам, включая ядро илисаму операционную систему , взаимодействовать в одной системе, но сохранять свою индивидуальную активность и целостность, не подвергаясь влиянию других запущенных процессов и не будучи уязвимыми для вмешательства или несанкционированных утечек данных, вызванных мошеннический процесс.
  • Уровни привилегий или домены защиты — предоставляют средства, с помощью которых операционная система может контролировать, какие процессы авторизованы для чтения в какие области виртуальной памяти.
    Поскольку виртуальная память позволяет компьютеру обращаться к гораздо большему объему памяти, чем он когда-либо физически может содержать, систему можно значительно ускорить, «отображая» каждый процесс и их используемую память — фактически всю память всех активных процессов — в каждый виртуальная память процесса. В некоторых системах также отображается вся физическая память для повышения скорости и эффективности. Обычно это считается безопасным, поскольку операционная система может полагаться на элементы управления привилегиями, встроенные в сам процессор, чтобы ограничить, к каким областям памяти разрешен доступ любому данному процессу. Попытка получить доступ к авторизованной памяти будет немедленно успешной, а попытка доступа к неавторизованной памяти вызовет исключение и аннулирует инструкцию чтения, которая завершится ошибкой. Либо вызывающий процесс, либо операционная система определяют, что произойдет, если будет предпринята попытка чтения из неавторизованной памяти — обычно это вызывает состояние ошибки, и процесс, который попытался выполнить чтение, будет завершен. Поскольку несанкционированное чтение обычно не является частью нормального выполнения программы, гораздо быстрее использовать этот подход, чем приостанавливать процесс каждый раз, когда он выполняет какую-либо функцию, требующую доступа к привилегированной памяти, чтобы эта память была отображена в читаемый адрес. пространство.
  • Конвейерная обработка инструкций и спекулятивное выполнение — используются для обеспечения наиболее эффективного выполнения инструкций — при необходимости позволяя им выполняться не по порядку или параллельно между различными процессорами внутри ЦП — до тех пор, пока конечный результат правильный.
    Современные процессоры обычно содержат множество отдельных исполнительных модулей и планировщик, который декодирует инструкции и выбирает во время их выполнения наиболее эффективный способ их выполнения. Это может включать решение о том, что две инструкции могут выполняться одновременно или даже не по порядку на разных исполнительных модулях (известное как «конвейерная обработка команд»). До тех пор, пока достигается правильный результат, это максимизирует эффективность за счет максимально возможного использования всех исполнительных блоков процессора. Некоторые инструкции, такие как условные переходы , приведут к одному из двух разных результатов в зависимости от условия. Например, если значение равно 0, будет выполнено одно действие, в противном случае — другое действие. В некоторых случаях ЦП может еще не знать, какую ветвь выбрать. Это может быть потому, что значение не кэшировано. Вместо того, чтобы ждать, чтобы узнать правильный вариант, ЦП может немедленно продолжить (предположительное выполнение). Если это так, он может либо угадать правильный вариант (прогнозируемое выполнение), либо даже выбрать оба (активное выполнение). Если он выполнит неправильную опцию, CPU попытается отбросить все эффекты своего неправильного предположения. (См. Также: предиктор ветвления )
  • Кэш ЦП — небольшой объем памяти ЦП, используемый для обеспечения его высокой скорости, ускорения доступа к памяти и облегчения «интеллектуального» выполнения инструкций эффективным образом.
    С точки зрения ЦП доступ к физической памяти компьютера осуществляется медленно. Кроме того, инструкции, выполняемые ЦП, очень часто повторяются или обращаются к одной и той же или аналогичной памяти много раз. Чтобы максимально эффективно использовать ресурсы ЦП, современные ЦП часто имеют небольшой объем очень быстрой встроенной памяти, известной как « кэш ЦП ». Когда осуществляется доступ к данным или инструкция считывается из физической памяти, копия этой информации обычно одновременно сохраняется в кэше ЦП. Если позже ЦП снова понадобится та же самая инструкция или содержимое памяти, он может получить их с минимальной задержкой из собственного кеша, а не ждать выполнения запроса, связанного с физической памятью.

Эксплойт Meltdown

Обычно описанные выше механизмы считаются безопасными. Они составляют основу большинства современных операционных систем и процессоров. Meltdown использует способ взаимодействия этих функций, чтобы обойти основные элементы управления привилегиями ЦП и получить доступ к привилегированным и конфиденциальным данным из операционной системы и других процессов. Чтобы понять Meltdown, рассмотрим данные, отображаемые в виртуальной памяти (к большей части которой процесс не должен иметь доступа), и то, как ЦП реагирует, когда процесс пытается получить доступ к неавторизованной памяти. Процесс выполняется в уязвимой версии Windows , Linux или macOS на 64-битном процессоре уязвимого типа. Это очень распространенная комбинация практически для всех настольных компьютеров, ноутбуков, ноутбуков, серверов и мобильных устройств.

  1. ЦП пытается выполнить инструкцию, ссылающуюся на операнд памяти. Режим адресации требует, чтобы адрес операнда, Base + A, был вычислен с использованием значения по адресу A, запрещенного для процесса системой виртуальной памяти и проверкой привилегий. Инструкция планируется и отправляется исполнительному блоку. Затем этот исполнительный модуль планирует как проверку привилегий, так и доступ к памяти.
  2. Проверка привилегий сообщает исполнительному устройству, что адрес A, участвующий в доступе, запрещен для процесса (согласно информации, хранящейся в системе виртуальной памяти), и, следовательно, инструкция должна завершиться ошибкой. Затем исполнительный блок должен отбросить результаты чтения из памяти. Однако одним из этих эффектов может быть кэширование данных в Base + A, которое могло быть завершено как побочный эффект доступа к памяти перед проверкой привилегий — и не могло быть отменено исполнительным блоком (или любым другим часть ЦП). Если это действительно так, то простой акт кеширования сам по себе представляет собой утечку информации. В этот момент вмешивается Meltdown.
  3. Процесс выполняет временную атаку , выполняя инструкции, напрямую ссылающиеся на операнды памяти. Чтобы быть эффективными, операнды этих инструкций должны быть по адресам, которые покрывают возможный адрес, Base + A, операнда отклоненной инструкции. Поскольку данные по адресу, на который ссылается отклоненная инструкция, Base + A, тем не менее были кэшированы, инструкция, напрямую ссылающаяся на тот же адрес, будет выполняться быстрее. Процесс может обнаружить эту разницу во времени и определить адрес Base + A, который был вычислен для отклоненной инструкции, и, таким образом, определить значение по запрещенному адресу памяти A.

Meltdown использует эту технику последовательно для чтения каждого интересующего адреса на высокой скорости, и, в зависимости от других запущенных процессов, результат может содержать пароли, данные шифрования и любую другую конфиденциальную информацию с любого адреса любого процесса, который существует в его карте памяти. . На практике, поскольку атаки по побочному каналу кэша являются медленными, быстрее извлекать данные по одному биту за раз (только 2 × 8 = 16 атак на кэш, необходимых для чтения байта, а не 256 шагов, если он пытался прочитать все 8 бит в один раз).

Влияние

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

  • ЦП — многие из наиболее широко используемых современных ЦП с конца 1990-х до начала 2018 года имеют необходимую эксплуатируемую конструкцию. Тем не менее, это можно уменьшить с помощью дизайна ЦП. ЦП, который мог обнаруживать и избегать доступа к памяти для непривилегированных инструкций, или не был восприимчив к атакам на время кэширования или аналогичным зондам, или удалял записи кэша при обнаружении непривилегий (и не позволял другим процессам обращаться к ним до тех пор, пока не авторизовался) как часть отказ от инструкции не может быть использован таким образом. Некоторые наблюдатели считают, что все программные решения будут «обходными путями», и единственное верное решение — обновить затронутые конструкции ЦП и устранить лежащую в основе слабость.
  • Операционная система. Большинство широко используемых и универсальных операционных систем используют уровни привилегий и отображение виртуальной памяти как часть своей конструкции. Meltdown может получить доступ только к тем страницам, которые отображены в памяти, поэтому влияние будет наибольшим, если вся активная память и процессы будут отображены в памяти в каждом процессе, и окажут наименьшее влияние, если операционная система спроектирована так, что почти ничего нельзя достичь таким образом. Операционная система также может в некоторой степени смягчить воздействие программного обеспечения, гарантируя, что попытки зондирования такого рода не выявят ничего полезного. Современные операционные системы используют отображение памяти для увеличения скорости, поэтому это может привести к потере производительности.
  • Виртуальная машина — атаку Meltdown нельзя использовать для выхода из виртуальной машины, т. Е. На полностью виртуализированных машинах гостевое пространство пользователя все еще может читать из пространства гостевого ядра, но не из пространства ядра хоста. Ошибка позволяет читать память из адресного пространства, представленного той же таблицей страниц , что означает, что ошибка не работает между виртуальными таблицами. То есть не затрагиваются таблицы страниц гостя-хоста, только гость-тот-же-гость или хост-хост, и, конечно, хост-гость, поскольку хост уже может получить доступ к гостевым страницам. Это означает, что разные виртуальные машины на одном и том же полностью виртуализированном гипервизоре не могут получить доступ к данным друг друга, но разные пользователи в одном гостевом экземпляре могут получить доступ к данным друг друга.
  • Встроенное устройство. Среди уязвимых микросхем — микросхемы ARM и Intel, предназначенные для автономных и встроенных устройств, таких как мобильные телефоны, смарт-телевизоры, сетевое оборудование, транспортные средства, жесткие диски, промышленное управление и т. Д. Как и в случае со всеми уязвимостями, если третья сторона не может запустить код на устройстве, его внутренние уязвимости остаются неиспользованными. Например, процессор ARM в мобильном телефоне или«умном» устройстве Интернета вещей может быть уязвим, но тот же процессор, который используется в устройстве, которое не может загружать и запускать новый код, таком как кухонный прибор или контроллер жесткого диска, считается уязвимым. не подлежат эксплуатации.

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

По словам исследователей, « потенциально затронут каждый процессор Intel, который реализует выполнение вне очереди, а это фактически каждый процессор с 1995 года (за исключением Intel Itanium и Intel Atom до 2013 года)». Корпорация Intel ответила на обнаруженные уязвимости системы безопасности официальным заявлением.

Ожидается, что уязвимость затронет основных поставщиков облачных услуг , таких как Amazon Web Services (AWS) и Google Cloud Platform . Облачные провайдеры позволяют пользователям запускать программы на одних и тех же физических серверах, где могут храниться конфиденциальные данные, и полагаются на меры безопасности, предоставляемые ЦП, для предотвращения несанкционированного доступа к привилегированным участкам памяти, где хранятся эти данные, — функция, которую обходит уязвимость Meltdown.

В исходном документе сообщается, что затронута паравиртуализация ( Xen ) и контейнеры, такие как Docker , LXC и OpenVZ . Они сообщают, что атака на полностью виртуализированную машину позволяет гостевому пользовательскому пространству читать из памяти гостевого ядра, но не из пространства хост-ядра.

Затронутое оборудование

Уязвимость Meltdown в первую очередь затрагивает микропроцессоры Intel , но также подвержены микропроцессоры ARM Cortex-A75 и IBM Power. Уязвимость не затрагивает микропроцессоры AMD . Когда эффект Meltdown был впервые обнародован, Intel возражала, что недостатки затрагивают все процессоры, но AMD отрицала это, заявив, что «мы считаем, что процессоры AMD не восприимчивы из-за использования нами защиты уровня привилегий в архитектуре подкачки».

Исследователи указали, что уязвимость Meltdown является эксклюзивной для процессоров Intel, в то время как уязвимость Spectre может затронуть некоторые процессоры Intel , AMD и ARM . Однако ARM объявила, что некоторые из их процессоров уязвимы для Meltdown. Google сообщил, что любой процессор Intel с 1995 года, работающий вне очереди, потенциально уязвим для уязвимости Meltdown (за исключением процессоров Itanium и Intel Atom до 2013 года ). Intel представила спекулятивное исполнение для своих процессоров с микроархитектурой семейства Intel P6 с микропроцессором Pentium Pro IA-32 в 1995 году.

ARM сообщила, что большинство их процессоров не уязвимы, и опубликовала список конкретных процессоров, которые затронуты. ARM Cortex-A75 ядро зависит непосредственно от обоих Meltdown и Specter уязвимостей, а также Cortex-R7 , Cortex-R8 , Cortex-A8 , Cortex-A9 , Cortex-A15 , Cortex-A17 , Cortex-A57 , Cortex-A72 и Cortex -Ядра A73 подвержены только уязвимости Spectre. Это противоречит некоторым ранним заявлениям об уязвимости Meltdown, предназначенной только для Intel.

Большая часть текущих Android- телефонов среднего уровня использует Cortex-A53 или Cortex-A55 в восьмиъядерном исполнении и не подвержена уязвимости Meltdown или Spectre, поскольку они не выполняют внеочередное выполнение. Сюда входят устройства с Qualcomm Snapdragon 630, Snapdragon 626, Snapdragon 625 и все процессоры Snapdragon 4xx на базе ядер A53 или A55. Кроме того, никакие компьютеры Raspberry Pi не уязвимы для Meltdown или Spectre, за исключением недавно выпущенного Raspberry Pi 4, в котором используется процессор ARM Cortex-A72.

IBM также подтвердила, что ее процессоры Power подвергаются обеим атакам. Red Hat публично объявила, что эксплойты также предназначены для систем IBM System Z , POWER8 и POWER9 .

Oracle заявила, что системы SPARC на базе V9 (процессоры T5, M5, M6, S7, M7, M8, M10, M12) не подвержены воздействию Meltdown, хотя старые процессоры SPARC, которые больше не поддерживаются, могут пострадать.

Смягчение

Устранение уязвимости требует изменений в коде ядра операционной системы, включая усиление изоляции памяти ядра от процессов пользовательского режима. Разработчики ядра Linux назвали эту меру изоляцией таблицы страниц ядра (KPTI). КПТИТЕ патчи были разработаны для Linux ядра 4.15, и были выпущены как портировать в ядрах 4.14.11, 4.9.75. Red Hat выпустила обновления ядра для своих дистрибутивов Red Hat Enterprise Linux версии 6 и версии 7. CentOS также уже выпустила обновления ядра для CentOS 6 и CentOS 7.

Apple включила средства защиты в macOS 10.13.2, iOS 11.2 и tvOS 11.2. Они были выпущены за месяц до публикации уязвимостей. Apple заявила, что watchOS и Apple Watch не затронуты. Дополнительные меры были включены в обновление Safari, а также в дополнительное обновление для macOS 10.13 и iOS 11.2.2.

Microsoft выпустила экстренное обновление для Windows 10 , 8.1 и 7 с пакетом обновления 1 (SP1) для устранения уязвимости 3 января 2018 года, а также для Windows Server (включая Server 2008 R2 , Server 2012 R2 и Server 2016 ) и Windows Embedded Industry . Эти исправления несовместимы со сторонним антивирусным ПО, использующим неподдерживаемые вызовы ядра; системы, на которых установлено несовместимое антивирусное программное обеспечение, не будут получать это или любые будущие обновления безопасности Windows, пока они не будут исправлены, а программное обеспечение не добавит специальный ключ реестра, подтверждающий его совместимость. Было обнаружено, что обновление вызывало проблемы в системах с некоторыми процессорами AMD, при этом некоторые пользователи сообщали, что их установки Windows вообще не загружались после установки. 9 января 2018 года Microsoft приостановила распространение обновления в системах с затронутыми процессорами, пока она исследует и устраняет эту ошибку.

Сообщалось, что реализация KPTI может привести к снижению производительности процессора, при этом некоторые исследователи заявляют, что производительность снижается до 30% в зависимости от использования, хотя Intel считает это преувеличением. Сообщалось, что поколения процессоров Intel, поддерживающие идентификаторы контекста процесса (PCID), функция, представленная в Westmere и доступная на всех микросхемах, начиная с архитектуры Haswell и далее, не были так подвержены потерям производительности при KPTI, как более старые поколения, у которых она отсутствует. Это связано с тем, что сброс выборочного резервного буфера трансляции (TLB), включенный с помощью PCID (также называемый номером адресного пространства или ASN в архитектуре Alpha), позволяет изолировать общее поведение TLB, имеющее решающее значение для эксплойта, между процессами, без постоянной очистки всего кеша — основная причина затрат на смягчение последствий.

В заявлении Intel говорится, что «любое влияние на производительность зависит от рабочей нагрузки и для среднего пользователя компьютера не должно быть значительным и со временем будет смягчено». Компания Phoronix протестировала несколько популярных компьютерных игр на системе Linux с установленным процессором Intel Coffee Lake Core i7-8700K и установленными патчами KPTI и обнаружила, что какое-либо влияние на производительность практически отсутствует. В других тестах, включая тесты синтетического ввода-вывода и базы данных, такие как PostgreSQL и Redis , было обнаружено влияние на производительность, составляющее даже десятки процентов для некоторых рабочих нагрузок. Совсем недавно, связанный с участием Testings, AMD , FX и Intel, SandyBridge и Ivybridge процессоров, не поступали.

Было опубликовано несколько процедур, помогающих защитить домашние компьютеры и связанные с ними устройства от уязвимостей безопасности Meltdown и Spectre. Исправления Meltdown могут привести к потере производительности. 18 января 2018 года сообщалось о нежелательных перезагрузках даже для новых чипов Intel из-за исправлений Meltdown и Spectre. Согласно Деллу : «На сегодняшний день [26 января 2018 года] не поступало сообщений о« реальных »эксплойтах этих уязвимостей [например, Meltdown и Spectre], хотя исследователи представили доказательства концепции». Кроме того, рекомендуемые меры предотвращения включают: «быстрое внедрение обновлений программного обеспечения, избегание нераспознанных гиперссылок и веб-сайтов, отказ от загрузки файлов или приложений из неизвестных источников . соблюдение протоколов безопасных паролей . [использование] программного обеспечения безопасности для защиты от вредоносных программ (расширенное предотвращение угроз программное обеспечение или антивирус) «.

25 января 2018 года были представлены текущее состояние и возможные будущие решения по устранению уязвимостей Meltdown и Spectre. В марте 2018 года Intel объявила, что разработала аппаратные исправления для будущих процессоров только для Meltdown и Spectre-V2, но не для Spectre-V1. Уязвимости были уменьшены с помощью новой системы разделения, которая улучшает разделение процессов и уровней привилегий. Компания также объявила, что она разработала обходные пути Intel Microcode для процессоров, начиная с 2013 года, и что у нее есть планы разработать их для большинства процессоров, начиная с 2007 года, включая Core 2 Duo ; однако месяц спустя, в апреле 2018 года, он объявил, что отказывается от этого плана для ряда семейств процессоров и что ни один процессор до 2008 года не будет иметь доступного исправления.

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

В процессорах Intel нашли новую уязвимость, превзошедшую Spectre и Meltdown

Intel классифицировала уязвимость как L1 Terminal Fault или L1TF, она может получить доступ к кэшу процессора первого уровня и защищенной области SGX последних поколений процессоров Intel. Теоретически, Foreshadow может получить доступ ко всем виртуальным машинам и предоставляет большую опасность для облачной инфраструктуры.

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

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

Ссылка на основную публикацию