Фикс meltdown и spectre что это

Отключение фикса Meltdown и Spectre в Windows

На сайте майкрософт размещена информация о том, как можно проверить подвержена ли ОС атакам meltdown. Там же имеется информация, как можно отключить последнее исправление.

Фикс meltdown и spectre что это

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

Сразу к делу: отключить можно внесением или корректировкой двух параметров в реестре.
С сайта майкрософт:

Включение или отключение фикса отдельно для CVE-2017-5715 и CVE-2017-5754 (Spectre и Meltdown)
Как включить фикс CVE-2017-5715 и CVE-2017-5754

Как отключить фикс CVE-2017-5715 и CVE-2017-5754

Включение или отключение фикса отдельно для CVE 2017-5715 (Spectre)

Как включить фикс CVE-2017-5715

Как отключить фикс CVE-2017-5715

Примечание * Установка значения 3 для FeatureSettingsOverrideMask является одинаковым для обоих случаев.
Примечание.* Отключение и включение посредством изменения параметров реестра потребует перезагрузки компьютера и права администратора.
Примечание.* Изменять MinVmVersionForCpuBasedMitigations нет необходимости.

Проверка наличия уязвимости в системе при помощи powershell модуля SpeculationControl

Предполагается, что ExecutionPolicy в powershell настроена на нужный уровень (Bypass или Unrestricted).
Установка модуля PowerShell:

На оба вопроса отвечаем «Y».

Результат в случае полной «защищенности» ПК:

После применения изменения настроек и перезагрузки:

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

Источник

Spectre и Meltdown

Все как всегда, слышим звон, но не знаем где он

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

По какой то неизвестной причине о ней было решено раздуть шумиху, причем дилетантским способом, те кто выпускал официальные пресс-релизы (spectre.pdf и meltdown.pdf) явно плохо представляли как все это работает и где проблема.

А поставщики исходной информации не удосужились подробно объяснить проблему, видимо передали работающий эксплоит и краткое описание для дилетантов…

Доморощенные комментаторы и знатоки ассемблера начали с умным видом обьяснять как все это работает.

Вот например статья, с кучей комментариев. Особенно умиляет это:

Фикс meltdown и spectre что это

«Наивный чукотский парень» не понимает для чего сдвиг на 1000h, да и вообще как все это работает, просто переводит своими словами такой же безграмотный текст оригинального пресс-релиза.

Реальное место расположения уязвимости в аппаратуре

Уязвимость расположена здесь, она выделена красным кружком:

Фикс meltdown и spectre что это

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

Вот как его описывает в документации фирма Интел:

Фикс meltdown и spectre что это

Блок TLB нужен для того чтобы сократить время обращения к ОП за счет исключения процедуры трансляции адресов памяти. Такая трансляция производится единственный раз для всей страницы (размером как раз 4К в случае современных ОС). Все остальные обращения программы к памяти в этой странице уже происходят форсированно, с использованием сохраненного значения в этом буфере. Эти блоки есть во всех современных процессорах, собственно из-за этого все они и подвержены уязвимостям называемым теперь Spectre и Meltdown.

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

Блок TLB не имеет программного (микропрограммного) управления, как обычный кеш. Из него невозможно удалить запись, либо принудительно внести/модифицировать какую-либо запись.

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

Соответственно произведенная спекулятивно операция тоже оставит в блоке TLB cлед в виде записи, нужно только эту запись обнаружить и идентифицировать. А это уже «дело техники», технология давно известна и применяется, она называется «Исследование состояния аппаратуры методом временного прозвона». Не ищите этого названия в Интернете, метод был известен в очень узких кругах совершенно не публичных специалистов.

А вот теперь с ним будут знакомы все…

Единственная возможность программного воздействия на блок TLB, — это полный сброс всех его значений (ну тут я немного лукавлю исключительно для простоты понимания). Все патчи уязвимостей Spectre и Meltdown предложенные производителями ПО это и делают, перезагружая в обработчике исключения GP регистр CR3.

После сброса TLB процессору приходится заново выполнять трансляции всех используемых страниц виртуальной памяти, это и снижает производительность системы.

Как все это эксплуатируется в реальности

Первым делом нужно в программе создать буфер размером 2 мегабайта, причем в этот буфер нельзя писать/читать до проведения атаки и он должен располагаться на границе 4К блока. Этот размер принципиален, в буфере должны разместиться ровно 256 страниц по 4К (специфика пейджинговой адресации).

Затем выполняются команды типа:

Фикс meltdown и spectre что это

В программе после команды Mov al, [адрес ядра ОС]; произойдет прерывание и значение регистра al не изменится (останется нулевым).

А вот в буфере TLB из-за форвардного запроса выполнения операции произойдет запоминание вычисленного соответствия виртуального адреса и физического адреса [ebx+eax].
Сбросить эту конкретную запись, как это делается в обычном Кеше, в блоке TLB невозможно и она останется…

Соответственно если мы узнаем адрес страницы размером 4К в буфере размером 2М, запомненный в блоке TLB, то мы узнаем и значение прочитанное из ядра ОС в регистр al.
Это уже дело техники, «прозвоним» блок TLB. Для этого нужно по одному разу прочитать все его страницы по 4К, их ровно 256, выполним 256 операций чтения (одну на каждый 4К блок). При этом будем измерять время выполнения операции чтения. Та страница, которая будет читаться быстрее остальных, и будет иметь номер в буфере размером 2М соответствующий прочитанному значению байта из ядра ОС.

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

В «прозвоне» конечно не все так просто, там много нюансов, но это вполне возможно.
Делали, знаем…

Источник

Как в реальности патч от уязвимостей Meltdown и Spectre влияет на производительность

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

Так получилось, что у меня под рукой оказались две близких по характеристикам системы:
i5 7600K + Z270 и i7 3770K + Z77. На обеих системах установлена Windows 10 Pro с последним набором обновлений. Операционная система установлена на SSD, для тестов использовался отдельный NVME SSD, один и тот же в обоих случаях. Графические тесты проводились по принципу «гулять так гулять», на GTX 1080Ti, но, вместе с тем, в реалистичных для такой видеокарты сценариях. То есть никакого понижения настроек графики для выявления чистой незамутнённой процессорозависимости не делалось. На этом железе было решено проверить правдивость заявлений Microsoft о влиянии патчей на производительность современного и старого, но ещё не особо и устаревшего, железа.

Исполнительный вице-президент Microsoft по Windows Терри Маерсон (Terry Myerson) в официальном блоге написал:

Резюмируя текущие результаты исследований, можно сказать следующее:

На компьютерах под управлением Windows 10 на современных процессорах (относящихся к поколениям 2016 года или более новым, то есть Skylake, Kabylake и более новые), тесты продемонстрируют замедление от силы на единицы процентов, которое подавляющее большинство пользователей не сможет заметить, так как в абсолютных величинах разница будет измеряться миллисекундами.

Компьютеры с Windows 10 на относительно старых процессорах (относящихся к поколениям до 2015 года включительно, Haswell и более старые) в некоторых тестах могут показать более значительное падение производительности, возможно некоторые пользователи смогут его заметить.

Производительность систем под управлением Windows Server на любых процессорах заметно пострадает, особенно на приложениях интенсивно использующих ввод-вывод, при активации изоляции недоверенного кода.

Для тестирования различных аспектов производительности систем использовались:

Ожидаемый результат: в соответствии с официальными заявлениями Microsoft, деградация производительности на старом CPU должна быть в разы больше. Исходя из анализа публикаций и заявлений представителей Microsoft, больше всего должен пострадать ввод-вывод.

Поехали!

(небольшая ремарка перед скриншотами с результатами)

Полностью равноценные конфигурации с первого раза протестировать не удалось из-за отсутствия M.2 слота на старой материнской памяти и отсутствием в наличии PCI-E->M.2 рэйзера. Он был заказан на одной всем известной китайской торговой площадке, а я тем временем прогнал тесты на NVME SSD (A-Data XPG SX8000 512GB) на Kaby Lake и на SATA (Silicon Power S55 240GB (Phison) на Ivy Bridge. Результаты получились напрямую несопоставимые, но любопытные.

Фикс meltdown и spectre что это

Фикс meltdown и spectre что это

Фикс meltdown и spectre что это

Фикс meltdown и spectre что это

Хм… результаты получились даже более чем интересные. Производительность самих CPU в сложных расчётах менялась в пределах погрешности. Пострадал больше всего, как и опасались в Microsoft, именно ввод-вывод. А дальше начинаются расхождения с тем, что ожидалось.

Падение производительности ввода-вывода на новом процессоре (Kaby Lake, i5 7600K) после активации патча в худшем случае, в сценарии CrystalMark Write 4K, составило более 70%. Семьдесят два процента! Если так себя введёт IO на новом процессоре, то что будет с откровенно старым?! А на старом i7 3770K 2011 года выпуска падение производительности составило в худшем случае около 6%. Да и абсолютные цифры для таких разных накопителей при активированном патче разнятся не сказать чтобы в разы. Неужели Microsoft и Intel кривят душой? Или мы чего-то не заметили?

Вот результаты прогона тестов:

Фикс meltdown и spectre что это

Фикс meltdown и spectre что это

Сводная таблица результатов:

Фикс meltdown и spectre что это

Плохие новости

Быстрые накопители даже на современных CPU после установки патча теряют до 70% производительности в ряде сценариев.

Источник

FAQ по Meltdown и Spectre для чайников: обновитесь и молитесь!

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

⇡#Коротко о главном

Да, Meltdown и Spectre — это действительно серьёзные аппаратные уязвимости. Нет, стопроцентной защиты от них нет. Лучше всего установить обновления для всех-всех программ, прошивок, ОС и драйверов и надеяться, что вас эти уязвимости не коснутся. В общем, обновитесь и молитесь!

⇡#Что такое Meltdown и Spectre?

Meltdown и Spectre или, говоря «по-научному», CVE-2017-5754, CVE-2017-5753 и CVE-2017-5715, — это легко запоминающиеся имена близких по своим особенностям аппаратных (подчеркнём этот момент) уязвимостей в очень и очень многих современных процессорах. Да, это действительно настолько серьёзные уязвимости, что для них пришлось придумать собственные «бренды» для облегчения продвижения и распространения информации о них. На текущий момент это, пожалуй, самые серьёзные проблемы в сфере информационных технологий если не за всю историю IT, то уж в XXI веке точно.

⇡#Что подвержено этим уязвимостям?

⇡#Какие устройства в опасности?

Неспециалисту трудно сказать, какие именно устройства уязвимы, так что лучше всего на всякий случай подозревать их все. А вообще, потенциально уязвимы почти все компьютеры, ноутбуки (и их потомки нетбуки, хромбуки, ультрабуки и всякие другие «буки»), планшеты, смартфоны, NAS или DAS, ТВ-приставки и даже современные smart-телевизоры, а также серверы и куча другого оборудования. В общем, уязвимой может оказаться почти вся «умная» техника, которая всё больше нас окружает.

⇡#В чём суть этих уязвимостей?

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

⇡#Кто виноват?

Все в целом и никто в частности. Все — потому что всем же хочется побольше производительности, и прямо сейчас. Никто — потому что механизм, в реализации которого и нашли уязвимости, является логичным продолжением развития мирового процессоростроения. Благодаря ему (но не только) современные процессоры столь быстры. При этом опасения, что в конкретных воплощениях этой идеи могут быть проблемы, высказывались очень и очень давно. Однако до прошлого года все они были мысленными экспериментами в духе «А что если… Чисто гипотетически можно представить, что… Но вряд ли это можно реализовать не в лабораторных условиях…». Это как головоломка или, скорее, математическая задача, которая с виду очень сложная и даже немного скучная, но для которой есть очень простое и неочевидное решение, после объявления которого все сразу хватаются за голову и причитают: «Как же мы раньше-то сами не догадались?»

⇡#Но спецслужбы-то/хакеры/разработчики/рептилоиды (нужное подчеркнуть) наверняка всё знали и скрывали?

Однозначного ответа на это нет. Даже если напрямую спросить их, то ответ будет стандартный: «Мы не можем ни подтвердить, ни опровергнуть эту информацию». Хотя некоторые божились, что ни сном ни духом. Однако в данном случае, с учетом почтенного по меркам IT возраста уязвимости, вряд ли кто-то действительно осознанно эксплуатировал её ранее. Некоммерческие организации, как правило, не очень хорошо следят за своими секретами, так что за столько лет информация наверняка бы утекла. Разработчики же давно бы уже втихую всё исправили, стараясь избегать огласки.

⇡#Чем опасны эти уязвимости?

Тем, что потенциально могут быть украдены ваши важные данные: пароли, банковская информация, личные данные и так далее. За последний месяц компании, занимающиеся информационной безопасностью, отметили резкий рост числа образцов вредоносных приложений, которые пытаются использовать Meltdown и Spectre. Счёт идёт на сотни! Более того, пользователю даже необязательно что-то скачивать и/или устанавливать — есть варианты атак, которые работают прямо в браузере, то есть достаточно зайти на веб-сайт. Даже на знакомых сайтах могут оказаться вредоносные блоки (рекламные, например). К тому же сейчас есть много приложений, которые мимикрируют под настоящие программы, но на самом деле тоже работают в специально созданном браузере. Так что установить защиту от Meltdown и Spectre всё же стоит, но решать вам.

⇡#Как узнать, есть ли эти уязвимости на моём устройстве?

Неполный список уязвимых процессоров можно посмотреть здесь (там 7 страниц). Обратите внимание, что он постоянно обновляется и там представлены только модели, выпущенные после начала 2000-х. Для определения процессора на устройстве можно использовать утилиту CPU-Z (для Windows и Android). Если у вас Windows, то можно поступить проще: скачать и запустить утилиту InSpectre. Она почти мгновенно протестирует систему и скажет, есть ли уязвимости, а также сообщит о возможном снижении производительности (об этом позже). YES означает, что проблем нет. NO! означает, что проблема есть.

Фикс meltdown и spectre что это

Защита от Meltdown есть, от Spectre нет. Производительность в норме

Фикс meltdown и spectre что это

Защита от Meltdown есть, от Spectre нет. Производительность может быть пониженной

Фикс meltdown и spectre что это

Защита от Meltdown и Spectre есть. Производительность в норме

Фикс meltdown и spectre что это

Проблем со Spectre в браузере нет.

⇡#Как защититься от Meltdown и Spectre в Linux, iOS и Mac OS, Android?

Пользователям продукции Apple повезло больше всего — для обеспечения безопасности им надо обновить операционную систему на всех устройствах до macOS 10.13.2, iOS 11.2 и tvOS 11.2 (или старше), а также обновить Safari как минимум до версии 11.0.2. Увы, старые устройства, которые не получили обновления своих ОС до этих версий, так и останутся уязвимыми. Следуйте инструкциям Apple.

С Android ситуация гораздо печальнее. Исправления для операционной системы выпускают производители устройств. А они и так-то далеко не всегда обновляют ОС на аппаратах вовремя, а уж патчи для устройств старше пары лет появляются совсем редко. Так что они тоже останутся уязвимыми. Проверить наличие обновлений можно, как правило, в настройках, в разделе About: «Об устройстве» или «О телефоне/планшете». Иногда имеется и отдельная встроенная программа, которая называется «Обновление ОС» или как-нибудь ещё в том же духе.

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

⇡#Как защититься от Meltdown и Spectre в Windows?

Здесь ситуация сложнее. Обновления выпущены только для Windows 7 SP1, Windows 8.1 и Windows 10, а также для браузеров Internet Explorer и Edge. Обновления можно поставить вручную. На этой странице выложены ссылки на обновления для всех версий ОС и браузеров: Security Update, Monthly Rollup и IE Cumulative. По ссылке на страницу придётся пройти дважды, так как в первый раз надо будет согласиться с условиями работы, поставив галочку Please read and acknowledge our terms of service и затем нажав Accept. Версию ОС можно узнать, кликнув правой кнопкой мыши по значку «Компьютер» в проводнике Windows и выбрав пункт «Свойства».

Если обновления ОС включены, то они наверняка уже были установлены. Но на всякий случай можно проверить. В Windows 7 в Панели управления нужно выбрать пункт Центр обновления Windows, в меню слева нажать Поиск обновлений, подождать, выбрать галочками все обновления и установить их. В Windows 10 в меню Пуск в разделе Параметры выбрать пункт Обновления и безопасность и так же проверить наличие патчей. Желательно также включить функцию обновления других продуктов Microsoft, если это не было сделано ранее.

⇡#Что ещё надо сделать для защиты от Meltdown и Spectre?

После всех манипуляций надо снова проверить ОС на уязвимости утилитой inSpectre. Скорее всего, вы увидите, что защиты от Spectre как не было, так и нет. Это связано с тем, что для устранения этой уязвимости мало программной заплатки, нужно ещё и обновление микрокода процессора. А ответственны за это производители оборудования! И вот с этим тоже есть проблема. Для старых версий практически наверняка никаких обновлений прошивки или BIOS/UEFI выпущено не будет. Но всё же стоит поискать информацию на официальных сайтах производителей где-нибудь в разделах News («Новости»), Support («Поддержка») и Downloads («Загрузки»). Увы, простого рецепта нет. Это касается вообще всех ваших «умных» устройств.

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

Кроме того, вне зависимости от устройства и ОС крайне желательно установить и/или обновить антивирус. Все остальные программы, а в особенности браузеры, так же стоит обновить до самой последней версии. Желательно сделать это до установки обновлений самой ОС — чтобы избежать проблем с совместимостью. Из прочих простых мер защиты можно, как обычно, порекомендовать не посещать незнакомые сайты, установить блокировщик рекламы, а также не скачивать и не запускать файлы от неизвестных людей или из подозрительных источников.

В Google Chrome также есть экспериментальная функция, помогающая в защите от Spectre. Для её включения нужно перейти в раздел настроек (адрес chrome://flags/), включить (Enable) опцию Strict site isolation и перезапустить браузер.

Фикс meltdown и spectre что это

⇡#Каковы последствия установки обновлений для защиты от уязвимостей?

Самое неприятное, что может произойти, — это зависания и невозможность загрузки устройства. В случае Windows Microsoft утверждает, что самые серьёзные проблемы устранены, но на всякий пожарный даёт инструкции по отключению защиты. А вообще, в последние два месяца везде происходит какая-то чехарда: производители выпускают патчи, пользователи жалуются на проблемы, производители убирают старые патчи, выпускают новые — и далее по кругу.

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

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

⇡#Что делать, если у меня старое устройство, которое не получало обновлений?

Сложный вопрос. Очевидно, что его не надо использовать. Не менее очевидно, что это, мягко говоря, далеко не всегда возможный вариант. Изолировать такое устройство от Сети — тоже так себе затея. Покупать вместо него новое сейчас вроде бы и смысла нет, потому что уязвимости в нём всё равно будут, пусть и с частичной защитой от них. При этом ждать новые аппаратные платформы без этих уязвимостей придётся долго. Вряд ли они станут массово доступными в течение хотя бы года.

Источник

Спектрология: аппаратные уязвимости процессоров в 2019 году

2018-й год для процессоров прошел под знаком аппаратных уязвимостей Spectre и Meltdown. Каким в этом плане обещает быть 2019-й?

Фикс meltdown и spectre что это

Фикс meltdown и spectre что это

На 35-м Chaos Communications Congress, спустя почти год после первой публикации об аппаратных уязвимостях процессоров, получивших названия Meltdown и Spectre, группа исследователей из технологического университета Граца (Австрия) рассказала о том, как сейчас обстоят дела с аппаратными уязвимостями в процессорах. Спойлер: теперь их известно намного, намного больше.

Кратко объясняем суть Meltdown и Spectre

Для начала немного напомним, что это за звери такие — Meltdown и Spectre —и чем они различаются.

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

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

Уязвимость Spectre похожа на Meltdown, но имеет другую причину, впрочем, тоже относящуюся к способам ускорения вычислений в процессоре — она возникла из-за наличия в современных процессорах предсказания ветвлений. По сути, процессор умеет предсказывать с определенной точностью, что после действия A обычно идет действие B, и успевает сделать действие B еще до того, как будут ясны результаты действия A. Если и правда надо было делать B, то все хорошо, ну а если результаты A оказываются такими, что после A нужно было выполнять не B, а C, то процессор забрасывает ту ветвь, где он сделал операцию B, и переходит к другой ветви, где надо делать C.

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

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

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

Год спустя

После обнаружения первых Meltdown и Spectre исследователи стали намного активнее копать в этом направлении и вскоре нашли похожие проблемы, но чуть отличающиеся в деталях. Оказалось, что разработчики процессоров используют и другие оптимизации, которые приводят к появлению Meltdown-подобных или Spectre-подобных уязвимостей. Исследователи из университета Граца упоминают 14 вариаций Meltdown-подобных уязвимостей и 13 Spectre-подобных уязвимостей, итого целых 27 штук разных аппаратных уязвимостей в процессорах — против всего двух из тех же семейств на начало 2018 года.

Фикс meltdown и spectre что это

Классификация найденных за год вариаций Meltdown и Spectre

Более того, хотя раньше, например, AMD заявляла, что ее процессоры не подвержены уязвимостям класса Meltdown, исследователи смогли обнаружить вариант Meltdown (его назвали Meltdown-BR), который очень даже работал на процессорах AMD. То есть на текущий момент процессоры трех крупнейших мировых разработчиков — AMD, ARM и Intel — подвержены как Meltdown, так и Spectre. Ну или как минимум каким-то из вариаций обоих семейств уязвимостей.

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

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

Например, одна из «заплаток» была реализована в ядре операционной системы Linux, но, поскольку она очень сильно замедляла работу компьютера, через некоторое время ее удалили из кода системы — с обещаниями, что появится более эффективный патч.

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

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

Фикс meltdown и spectre что это

Радикальный способ решения проблемы — удаление уязвимой части процессора с помощью высверливания в отмеченном месте (на самом деле это шутка)

Будущее Spectre и Meltdown

В октябре 2018-го Intel объявила о том, что в новых процессорах (речь про поколение, которое появится в 2019 году) на аппаратном уровне будет реализована защита от Spectre и Meltdown. Правда, речь шла всего про две «базовые» версии уязвимостей, а их, как мы выяснили выше, куда больше. AMD также собирается залатать одну из вариаций Spectre в новом поколении процессоров с архитектурой Zen 2, которое должно выйти в 2019-м. ARM тоже обещает исправления на аппаратном уровне, заявляя, что «все грядущие процессоры будут защищены от Spectre-подобных атак».

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

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *