ФУНДАМЕНТАЛЬНЫЕ УЯЗВИМОСТИ В ПРОЦЕССОРАХ Intel — MeltDown и Spectre

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

КОРЕНЬ ПРОБЛЕМЫ

Изначально в блоге Google Project Zero сообщалось об успешной реализации трех вариантов атаки на кеш процессора:

• злонамереннаязагрузкаданныхвкеш;
• обходграницмассива;
• инъекцияцелевойветви.

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

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

Уязвимости имеют много сходных черт на концептуальном уровне. Обе делают возможным проведение атаки по стороннему каналу, используя недостатки физической реализации процессоров. Впервые данный класс атак подробно описал Пол Кёхер (Paul Köcher) еще в 1996 году применительно к популярным криптосистемам. Он также выступил соавтором исследования Meltdown и Spectre.

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

[ad name=»Responbl»]

Обрати внимание: зловред не считывает сами данные (он не может читать кеш в произвольном месте). Вместо этого он вычисляет ошибочно закешированные байты уже в своем адресном пространстве, просто измеряя задержки чтения в разных строках заранее созданного массива.

По сути Meltdown и Spectre — это разновидность атаки по времени.

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

БОМБА ЗАМЕДЛЕННОГО ДЕЙСТВИЯ

Сама идея внеочередного исполнения инструкций была предложена IBM в 1963 году. Рядовые пользователи столкнулись с ней только в 1995 году, когда появился первый Pentium Pro. С тех пор линейный конвейер канул в Лету, а все современные процессоры используют архитектуру с внеочередным (out‐of‐order) и одновременно упреждающим (или спекулятивным — speculative) механизмом исполнения команд.

Как же это работает? Для программиста все выглядит просто. Он отправил очередь инструкций на вход и получил ее исполнение на выходе. Однако внутри процессора творится своя магия. Современное процессорное ядро использует многоуровневый конвейер с нелинейными путями. Все входящие инструкции в нем кешируются и декодируются по нескольку штук за такт. Они дробятся на микрооперации, которые переупорядочиваются в собственном буфере (ROB, Re‐Order Buffer). Ни одна из них не работает с реальными адресами памяти и физическими регистрами процессора. Блок управления памятью транслирует виртуальные адреса и определяет параметры доступа к ним.

После ROB микрооперации отправляются в станцию резервации, где обрабатываются параллельно на разных исполнительных блоках. Вдобавок современные процессоры используют разные типы кешей для ускорения обработки данных, изначально загружаемых в не слишком быструю оперативную память. Простейший кеш для инструкций применялся еще в 1982 году, а кеш данных используется с 1985 года. Сейчас они оба относятся к базовому кешу первого уровня (L1), помимо которого появились L2 и L3 общего назначения.

Все эти архитектурные навороты создавались для уменьшения времени простоя отдельных исполнительных блоков процессора. Пока один блок ожидает загрузки данных из оперативной памяти для своей инструкции, другой параллельно обрабатывает следующие. В этом ему помогает MMU (Memory Management Unit) и общая архитектура конвейера, который старается работать на упреждение и постоянно подгружает наиболее востребованные данные в кеш.

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

В большей мере задержками в проверке условий и длинным забеганием вперед по ветвям инструкций грешат процессоры Intel с длинным конвейером (кроме Itanium и первых Atom), но AMD и даже ARM это тоже касается — просто в эксплоитах для них потребуется более точный таймер, другие размеры массивов и техники забивания кеша. Если Meltdown для них пока не смогли убедительно воспроизвести, то Spectre — вполне.

Целых 27 лет ведущие разработчики считали, что скорость обработки инструкций важнее безопасности, а все проверки можно делать уже после пробного исполнения команд «на выходе» из конвейера. В том или ином виде внеочередное исполнение сегодня реализовано во всех процессорах. Из‐за параллельной работы исполнительных блоков задержка в обработке исключения, лаг MMU и очистки кеша тоже есть всегда, просто в случае микроархитектуры Core они заметнее и ими проще воспользоваться.

MELTDOWN

Эту уязвимость независимо друг от друга описали специалисты из Google Project Zero, Cyberus Technology и Грацского технического университета (Австрия), а также упомянутый выше криптограф Пол Кёхер. Вместе они обнаружили универсальный способ, позволяющий обойти разграничение адресов пользовательских и системных процессов в памяти.

3 января 2018 года они опубликовали описание уязвимости «злонамеренная загрузка данных в кеш» CVE‐2017‐5754, которая и получила название Meltdown из‐за того, что «расплавляет» разграничение доступа к страницам памяти. Она нарушает базовый механизм безопасности из‐за внеочередного исполнения процессорных инструкций и упреждающей загрузки данных в кеш.

Суть атаки такова.

  1. Зловред запускается и очищает процессорный кеш.
  2. Он создает в оперативной памяти массив из 256*4096 элементов. Номера строк массива отражают все возможные значения одного байта (0 – 255). Массив точно не попадает в кеш из‐за размера и потому, что к нему еще не обращались.
  3. Троян объявляет переменную tmp и просит записать в нее значение бай‐ та, хранящегося по закрытому для него адресу другого процесса. Так делать нельзя, но, пока MMU это выяснит, конвейер обработает инструкцию на упреждение и подтянет запрошенные данные в кеш.
  4. Затем троян начинает выборку из своего массива, подставляя в качестве номера строки значение переменной tmp. Так тоже делать нельзя, но про‐ верка условия вновь отложена, а запрошенная строка кешируется.
  5. Две последние операции в итоге заблокируются, и вернется исключение, но прежде из‐за внеочередного исполнения инструкций будут обработаны запрещенные команды трояна и кешированы запрошенные им данные.
  6. Процессор просто откажется затем транслировать их трояну, узнав от MMU о ссылке на защищенную область памяти, но не удалит их из кеша. 7. До обработки исключения троян успеет выполнить легальную операцию — чтение из ранее созданного массива, замеряя время получения каждой строки. Только строка, чей номер соответствует кешированному зна‐ чению, прочитается быстрее других. Остальные будут загружаться из оперативной памяти в разы медленнее.

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

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

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

SPECTRE

Уязвимость Spectre была совместно описана десятью авторами. Среди них есть исследователи Meltdown, работу которых дополнили эксперты из отдела криптографии Rambus и разных университетов.

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

1. Проверка обхода границ массива CVE‐2017‐5753. 2. Инъекция целевой ветви CVE‐2017‐5715.

Вспоминая выше устройство процессора, мы намеренно пропустили важные элементы: модуль предсказания ветвлений (branch prediction unit) и блок предсказания адреса (branch target predictor), как несущественные для понимания механизма атаки Meltdown. Однако на манипуляциях с ними основаны разные сценарии использования Spectre.

Если среди инструкций встречается условный переход (if, switch), а в конвейере есть свободные исполнительные блоки (практически всегда), то варианты ветвления начинают обрабатываться еще до реальной проверки условия. Это экономит время, потому что обычно для проверки требуется потратить сотни процессорных тактов на загрузку данных, которые находятся где‐то в оперативной памяти или вообще лежат в свопе на диске.

[ad name=»Responbl»]

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

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

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

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

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

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

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

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

[ad name=»Responbl»]

Вторая разновидность атаки Spectre выглядит очень похоже. Разница лишь в том, что вместо модуля предсказания ветвлений «тренируется» блок предсказания адреса с собственным буфером. Фактически атака идет на кеш через branch target buffer. Он подставляет виртуальные адреса, которые нужны для выполнения косвенных переходов. Они выполняются по какому‐то типовому условию, которое мы имитируем в своей программе.

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

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

КОНСПИРОЛОГИЧЕСКИЕ ТЕОРИИ

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

Авторы исследования допускают, что они далеко не первые, кто обнаружил эту особенность. К примеру, осенью 2008 года Николай Лихачёв (известный под псевдонимом Крис Касперски) готовился выступить на конференции Hack In The Box с докладом о найденной им уязвимости, позволяющей взламывать компьютеры на базе процессоров Intel вне зависимости от используемой операционной системы. Звучит похоже, не правда ли?

«Процессоры содержат недоработки, которые позволяют использовать уязвимости как непосредственно сидя за компьютером, так и дистанционно, вне зависимости от установленных обновлений и приложений», — писал он в анонсе. Однако доклад так и не был представлен. Крис улетел в США, стал работать на подконтрольную Intel компанию McAfee, а позже разбился при странных обстоятельствах.

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

Следующие кольца с номерами один и два менее привилегированные. Они отданы драйверам, а также гипервизорам, эмуляторам, песочницам и прочим системам виртуализации. Что именно там будет выполняться — зависит от ОС. Например, Windows 7 вообще не использует первое и второе кольцо, ограничиваясь нулевым и третьим.

[ad name=»Responbl»]

В любой ОС все пользовательские процессы запускаются в непривилегированном (обычно последнем) кольце защиты. В реальной ОС они обра‐ щаются к системным процессам и физическим устройствам через драйверы, а в виртуальной — через гипервизоры, когда им нужно выполнить какую‐то из зарезервированных инструкций. Ядро ОС проверяет легитимность системных вызовов (syscalls) и выполняет либо отклоняет запросы приложения. Чтобы далеко не бегать за данными для проверки, их часто помещают в соседний диапазон виртуальной памяти, выделяемой пользовательскому процессу. Просто у него стоит бит‐идентификатор привилегий уровня ядра, и прочитать их напрямую процесс из userspace не может.

Например, ядро заблокирует для приложения trojan.exe или malware.js чтение из оперативной памяти по адресам, ранее выделенным для chrome. exe. Троян останется в своей песочнице и не прочитает пароли из браузера

с наскока. Чтобы сделать это, ему пришлось бы использовать какой‐то обходной путь. Например, отдельный лоадер, который внедрит DLL в процесс chrome.exe, повысит привилегии трояна в обход sandbox, UAС и прочих

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

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

РЕАКЦИЯ ВЕНДОРОВ И ПАТЧИ-КОСТЫЛИ

Реакция на известие о фундаментальных уязвимостях в процессорах оказалась удивительной. Исполнительный директор Intel Брайан Кржанич (Brian Krzanich) узнал о проблеме летом 2017 года и начал продавать большую часть акций своей компании. К ноябрю 2017 года у него осталась только обязательная доля, которую нельзя продать по условиям контракта. Предста‐ вители Intel долго отрицали наличие каких‐либо проблем с процессорами, потом называли их несущественными, а еще позже — неохотно признали, опубликовав пополняемый список процессоров, на которых уязвимость подтвердилась.

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

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

Про KB4056892 уже пишут, что оно вызывает зависание при загрузке многих компьютеров с процессорами AMD (в частности, серии Athlon 64 X2). Его можно откатить (если ранее была создана точка восстановления), а затем отключить автоматическое обновление через gpedit.

В Linux проблему Meltdown частично решили набором патчей KPTI. Их не рекомендуется устанавливать для систем с процессорами AMD… а то мало ли.

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

[ad name=»Responbl»]

Apple сделала лаконичное заявление о том, что «…все системы Mac и iOS уязвимы, однако пока не наблюдалось реальных атак. На всякий случай загружайте софт только из доверенных источников, таких как App Store». Рекомендация выглядела бы логично, если бы не трояны, которых уже находили в App Store.

Обновления готовы для iOS 11.2, macOS 10.13.2 и Safari, однако после установки свежих апдейтов на macOS 10.3.2 эксплоит для Spectre по‐прежнему работает.

Считается, что WatchOS не требует патчей, поскольку в Apple Watch используется процессор Apple S1, на котором пока не удалось реализовать ни один из вариантов атаки Meltdown и Spectre.

Google сослалась на свой проект Zero и выпустила обновления для Android. Как обычно, когда они станут доступны пользователям смартфонов и планшетов вне серий Nexus и Pixel — остается на совести сторонних производителей. При этом компания отложила исправления в браузере Chrome до 23 января — даты выхода версии за номером 64.

ARM представила список уязвимых SoC, указав в таблице модели с под‐ твержденными сценариями атак и ссылки на патчи.

Легко видеть, что в этот список не входят старые ядра ARM без внеочередного исполнения инструкций. Они ожидаемо оказались иммунными к Meltdown и Spectre, поскольку атаки такого рода не работают без внеочередного исполнения команд. Например, это популярные Cortex‐A7, Cortex‐ A53 и семейство ARM 11. На A7 построен популярный одноплатный компь‐ ютер Raspberry Pi 2B, а на A53 — его более новая версия 3B. Другие версии «малины» используют ARM 11, который также исполняет инструкции по оче‐ реди.

Среди мобильных устройств ядра Cortex‐A7 используются в однокристалках Qualcomm (MSM8226, MSM8626, Snapdragon 200, 210 и 400), Mediatek (MT6572, MT6582, MT6589 и MT6592), Broadcom (BCM23550, BCM2836), Allwinner (A20, A31, A83T).

На Cortex‐A53 основаны Qualcomm Snapdragon 410, 412, 415, 425, 430, 435, 610, 615, 616 и 625 и другие популярные чипы нижнего и среднего ценового сегмента. Более шустрые SoC всех производителей уже используют комбинацию из старых (иммунных) и новых уязвимых ядер. Например, Snapdragon 808 — это сочетание A53 + A57. На последних удалось воспроизвести оба сценария Spectre и модифицированный вариант Meltdown, который в ARM назвали «вариант 3а».

IBM признала проблему и пообещала выпустить 9 января обновления прошивок для систем с процессорами серии Power.

Nvidia выпустила обновления драйверов GPU для Windows, Linux, FreeBSD, Solaris.

Mozilla подготовила хотфикс для Firefox, но честно предупреждает, что это полумера. Аналогичный «костыль», затрудняющий эксплуатацию уязвимостей через браузер, уже готовят и разработчики Chrome. Пока пользователям рекомендуют включить функцию Site Isolation.

Один из способов проверить, уязвим ли твой компьютер к Meltdown и Spectre, — это запустить готовый командлет для Windows PowerShell или аналогичный скрипт на Python в Linux.

Вот еще одна простая проверялка под Linux.

ПРОБЛЕМЫ С АНТИВИРУСАМИ

Патчи для Windows конфликтуют со многими антивирусами и защитными решениями, что приводит к неполадкам в работе системы, BSOD и другим неприятным последствиям. Дело в том, что разработчики ряда антивирусов использовали для работы своих продуктов весьма спорные техники — их можно приравнять к эксплуатации проблем, с которыми и призваны бороться новые патчи. Так, антивирусы различными способами обходят Kernel Patch Protection, внедряют свои гипервизоры для перехвата системных вызовов (syscalls) и строят предположения об адресах ячеек памяти.

В итоге разработчики Microsoft решили проблему интересным способом — обязали производителей антивирусного ПО добавлять в реестр запись, которая даст Windows Update понять, что «все чисто» и проблем не возникнет:

Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Windows\Curren
tVersion\QualityCompat" Value="cadca5fe‐87d3‐4b96‐b7fb‐a231484277cc"
Type="REG_DWORD"

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

Список совместимых и несовместимых с Windows антивирусов, регулярно обновляемый ИБ‐специалистами, можно найти здесь.

ПОЧЕМУ ВСЕ ПАТЧАТ ОС, ДРАЙВЕРЫ И ПРИЛОЖЕНИЯ, ЕСЛИ ПРОБЛЕМА В ПРОЦЕССОРАХ?

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

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

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

В зависимости от особенностей конкретной системы существующие патчи вызывают замедление производительности всех операций с обращениями к ядру. У домашних пользователей их доля невелика, поэтому замедление наблюдается небольшое (2–3% в большинстве сценариев). У корпоративных клиентов, работающих с базами данных и системами виртуализации, падение производительности может достигать 30%.

Компании Intel и Microsoft долго избегали официальных комментариев по этому вопросу, но в конце концов все‐таки признали существование проблемы. Официальное сообщение в блоге Microsoft, написанное исполнительным вице‐президентом Windows and Devices Group Терри Майерсоном (Terry Myerson), гласит, что хуже всего придется пользователям старых ОС и про‐ цессоров.

  • Пользователи Windows 10 и новейших процессоров (2016 года, Skylake, Kaby Lake и новее) практически не ощутят никакой потери производитель‐ ности, так как ухудшение исчисляется считаными миллисекундами.
  • Некоторые пользователи Windows 10 и более старых процессоров (2015 года, включая Haswell и более старые CPU) могут обнаружить в ряде тестов заметное ухудшение показателей и даже увидеть потерю произво‐ дительности системы.
  • Пользователи Windows 8 и Windows 7 (использующие процессоры 2015 года, включая Haswell и более старые модели), в свою очередь, столкнутся со значительной потерей производительности практически гарантированно.
  • В случае Windows Server (на любых процессорах), особенно если речь идет о работе приложений, активно использующих IO, потеря произво‐ дительности тоже будет весьма существенной.

Также данный вопрос затронул и глава Intel Брайан Кржанич, выступая на кон‐ ференции Consumer Electronics Show в Лас‐Вегасе. Он подчеркнул, что потеря производительности существует, но она сильно зависит от загрузки процессора и конкретных задач, которые CPU выполняет. Кржанич заверил, что инженеры Intel делают все возможное, чтобы минимизировать эти «потери».

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

Разработчики Red Hat оценивают потерю производительности в 1–20%, и конкретная цифра будет зависеть от множества факторов.

Компании Epic Games и Branch Metrics пожаловались, что патчи для Meltdown и Spectre уже вызвали серьезные проблемы в их работе. Так, график ниже показывает, как после установки обновлений нагрузка на один из серверов популярного сетевого шутера  Fortnite возросла с 20 до 60%.

О похожих проблемах сообщили и разработчики Housemarque Games: нагрузка на серверы игры Nex Machina возросла в 4–5 раз.

Тем не менее многочисленные исследователи уверяют, что простые пользователи вряд ли заметят, что их система стала работать сколь‐нибудь медленнее. В частности, очень многих пользователей волнует возможное «проседание» FPS в играх. Но согласно свежему тестированию Eurogamer, потери будут совсем незначительными. К похожим выводам также пришли тестировщики портала Dark Side of Gaming.

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

ВЫВОД

Сейчас различные примеры PoW найденных уязвимостей быстро появляются на GitHub. К примеру, вот вариант эксплоита Meltdown на С, а вот хорошо откомментированный эксплоит для Spectre

[ad name=»Responbl»]

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

Click to rate this post!
[Total: 12 Average: 3.6]

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

1 comments On ФУНДАМЕНТАЛЬНЫЕ УЯЗВИМОСТИ В ПРОЦЕССОРАХ Intel — MeltDown и Spectre

Leave a reply:

Your email address will not be published.