Что такое meltdown и spectre
Спектрология: аппаратные уязвимости процессоров в 2019 году
2018-й год для процессоров прошел под знаком аппаратных уязвимостей Spectre и Meltdown. Каким в этом плане обещает быть 2019-й?
На 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
Более того, хотя раньше, например, AMD заявляла, что ее процессоры не подвержены уязвимостям класса Meltdown, исследователи смогли обнаружить вариант Meltdown (его назвали Meltdown-BR), который очень даже работал на процессорах AMD. То есть на текущий момент процессоры трех крупнейших мировых разработчиков — AMD, ARM и Intel — подвержены как Meltdown, так и Spectre. Ну или как минимум каким-то из вариаций обоих семейств уязвимостей.
По счастью, немалая часть из всех многочисленных найденных вариаций вообще не работает ни на ARM, ни AMD, ни на Intel — по крайней мере исследователям не удалось заставить их работать. Впрочем, большая часть все же работает хоть где-то.
Еще в январе 2018-го компании начали выпускать патчи для микрокода процессоров, операционных систем и отдельных программ, которые в теории должны были закрыть эти уязвимости. Но к сожалению, Spectre и Meltdown — это аппаратные уязвимости, они существуют на уровне компьютерного «железа», и программными заплатками их полностью просто не исправишь.
Например, одна из «заплаток» была реализована в ядре операционной системы Linux, но, поскольку она очень сильно замедляла работу компьютера, через некоторое время ее удалили из кода системы — с обещаниями, что появится более эффективный патч.
Ну и в целом проблема со Spectre состоит в том, что уязвимыми оказываются разные микроархитектурные компоненты, и для каждого нужно изобретать свой патч. А каждый такой патч негативно влияет на производительность, поскольку требует либо отключения каких-то функций, либо выполнения дополнительных действий.
Собственно, во многих случаях патчи влияют на производительность настолько катастрофическим образом, что система с патчами работает медленнее, чем система, в которой вообще отключены уязвимые компоненты процессора.
Радикальный способ решения проблемы — удаление уязвимой части процессора с помощью высверливания в отмеченном месте (на самом деле это шутка)
Будущее Spectre и Meltdown
В октябре 2018-го Intel объявила о том, что в новых процессорах (речь про поколение, которое появится в 2019 году) на аппаратном уровне будет реализована защита от Spectre и Meltdown. Правда, речь шла всего про две «базовые» версии уязвимостей, а их, как мы выяснили выше, куда больше. AMD также собирается залатать одну из вариаций Spectre в новом поколении процессоров с архитектурой Zen 2, которое должно выйти в 2019-м. ARM тоже обещает исправления на аппаратном уровне, заявляя, что «все грядущие процессоры будут защищены от Spectre-подобных атак».
Это все, конечно, хорошо, вот только речь идет именно о новых устройствах. Тем же, кто приобрел компьютер, смартфон или какое-то другое устройство на базе процессоров Intel, AMD или ARM в 2018 году или раньше, остается устанавливать патчи для всего на свете, которые ощутимо снижают производительность. Вероятно, делать это будут далеко не все.
Производители слишком долго игнорировали уязвимости на аппаратном уровне, оптимизируя процессоры исключительно для повышения производительности, но все такие оптимизации оказываются не совсем бесплатными — что-то удалось улучшить, но где-то при этом добавились проблемы. Теперь же устранять эти уязвимости будет довольно тяжело — слишком уж на глубинном уровне они находятся. Впрочем, и эксплуатировать такие уязвимости довольно непросто — и на это вся надежда. По крайней мере до выхода новых поколений процессоров.
Что такое Meltdown и Spectre? Уязвимость процессоров intel и AMD
Meltdown и Spectre — это недавно обнаруженные уязвимости процессоров Intel, AMD, Apple и ARM. Эти уязвимости являются результатом серьезной ошибки проектирования в соответствующих микросхемах, и обнаружение этой проблемы привело к принудительной перепроектировке программного обеспечения операционной системы Windows, Mac и Linux, чтобы смягчить уязвимость и предотвратить ее использование злоумышленниками.
Эти уязвимости были обнаружены исследователями в Google Project Zero, командой, которая посвящена поиску недостатков безопасности, прежде чем они могут быть использованы злоумышленниками. На данный момент нет известных Meltdown или Spectre эксплойтов в существовании. Команды безопасности в крупных технологических компаниях, таких как Apple, Intel и Microsoft, а также разработчики Linux с открытым исходным кодом теперь выделяют большие ресурсов, чтобы попытаться обеспечить безопасность своих процессоров и операционных систем перед любыми вредоносными эксплойтами.
На кого влияют уязвимости Meltdown и Spectre
За некоторыми исключениями, все, у кого есть компьютер или смартфон, подвергаются риску. По данным Google, они влияют на каждое устройство с процессором Intel, созданным после 1995 года. AMD и ARM чипы сложнее эксплуатировать, но они также подвержены риску.
Почему патч Meltdown замедляет производительность
Изменения в патче Meltdown включает в себя более резкое разделение памяти ядра от пользовательских процессов. Это делается с помощью метода KPTI. KPTI перемещает операции режима ядра в совершенно отдельное адресное пространство от операций пользовательского режима. Это означает, что переключение между режимом ядра и пользовательским режимом занимает значительно больше времени.
Чтобы проиллюстрировать это, можно представить грузовик с едой, который продает только две вещи: хот-доги и холодный лимонад. Работник внутри тележки с едой может довольно легко добраться как до контейнера, содержащего хот-доги, так и охладителя, содержащего холодные лимонады, и бизнес довольно быстро движется. Теперь нужно представить, что инспектор здоровья приходит и требует, чтобы горячие и холодные продукты хранились в отдельных помещениях. Теперь сотрудник все еще может добраться до хот-догов, но должен выйти из грузовика и прогуляться по улице, чтобы принести каждый лимонад. Это приведет к тому, что линия продовольственного грузовика будет двигаться намного медленнее, особенно если люди заказывают много лимонадов. Это похоже на то, как KPTI может замедлить производительность операционной системы.
В чем разница между Meltdown и Spectre
И Meltdown, и Spectre — это уязвимости, созданные тем, как процессоры обрабатывают спекулятивное выполнение, но они несколько отличаются в том, как они работают и какие типы процессоров затронуты.
Meltdown влияет только на процессоры Intel и Apple и может использоваться для утечки информации, которая становится доступной в результате кода, который процессоры выполняют во время спекулятивного выполнения. Meltdown легче использовать, чем Spectre, и эксперты по безопасности назвали его большим риском. К счастью, Meltdown также легче и проще патчить.
Spectre влияет на процессоры Intel, Apple, ARM и AMD, и его можно использовать, чтобы на самом деле обмануть процессоры в запущенном коде, что они не должны быть разрешены для запуска. По словам экспертов по безопасности в Google, Spectre гораздо труднее использовать, чем Meltdown, но это также гораздо труднее смягчить.
На видео: Уязвимость в процессорах Intel, AMD и ARM. Разбираемся с Meltdown и Spectre
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 есть. Производительность в норме
Проблем со 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 и перезапустить браузер.
⇡#Каковы последствия установки обновлений для защиты от уязвимостей?
Самое неприятное, что может произойти, — это зависания и невозможность загрузки устройства. В случае Windows Microsoft утверждает, что самые серьёзные проблемы устранены, но на всякий пожарный даёт инструкции по отключению защиты. А вообще, в последние два месяца везде происходит какая-то чехарда: производители выпускают патчи, пользователи жалуются на проблемы, производители убирают старые патчи, выпускают новые — и далее по кругу.
Другая проблема касается программ, которые после обновления перестают работать или работают неправильно. Особенно неприятно, когда к таким относятся антивирусы и прочие средства защиты. Попутно выяснилось, что некоторые такие утилиты используют в своей работе механизмы, в чём-то похожие (но не точно такие же) на те, которые характерны для этих уязвимостей.
Наконец, ещё одна проблема, которая почему-то больше всех взволновала обычных пользователей, — это снижение производительности. На самом деле она актуальна для серьёзных приложений, в первую очередь серверных (базы данных, например). А те же игры, браузеры, офисное ПО и прочий пользовательский набор утилит на практике не страдают от этого, за редкими исключениями. Ирония в том, что эти уязвимости косвенно показали уровень профессионализма программистов — больше всего проблем с производительностью у того ПО, которое было лучше всего оптимизировано под конкретные аппаратные платформы, то есть максимально использовало возможности железа.
⇡#Что делать, если у меня старое устройство, которое не получало обновлений?
Сложный вопрос. Очевидно, что его не надо использовать. Не менее очевидно, что это, мягко говоря, далеко не всегда возможный вариант. Изолировать такое устройство от Сети — тоже так себе затея. Покупать вместо него новое сейчас вроде бы и смысла нет, потому что уязвимости в нём всё равно будут, пусть и с частичной защитой от них. При этом ждать новые аппаратные платформы без этих уязвимостей придётся долго. Вряд ли они станут массово доступными в течение хотя бы года.
Разбираемся с Meltdown и Spectre: что нужно знать о новых уязвимостях, которые обнаружены практически во всех CPU
Похоже, производители процессоров получили серьезный удар: за несколько дней все новостные сайты заговорили сразу о двух хардварных уязвимостях под названием Meltdown и Spectre. Должен сказать, что это очень горячая неделя, какую давно не видели в технологической отрасли. Но не буду спешить, так что разберемся со всем по порядку.
Исследователи безопасности, работающие в группе Google Project Zero, наряду с другими исследовательскими группами и академическими институтами, обнаружили ряд угроз безопасности, связанных с спекулятивным выполнением. Спекулятивное выполнение является одним из краеугольных камней высокой производительности современных процессоров и, по существу, все процессоры имеют более высокую производительность, чем встроенный микроконтроллер. В результате практически каждый современный высокопроизводительный процессор на рынке, выпущенный за последние несколько десятилетий, уязвим для одного или более эксплойтов.
В данный момент главную опасность представляет эксплойт, называемый Meltdown. Он затрагивает в первую очередь процессоры Intel, хотя есть подтверждение об уязвимости нескольких процессоров ARM. С помощью Meltdown вредоносный код может злоупотреблять реализациями спекулятивного выполнения Intel и ARM, что приведет к утечке информации из других процессов — напрямую из всезнающего ядра операционной системы. В результате Meltdown можно легко использовать для отслеживания других процессов и похищения информации, которая должна быть изолирована ядром, другими программами или другими виртуальными машинами.
Между тем второй тип эксплойта называется Spectre, а число процессоров, подверженных риску эксплуатации, еще шире. По сути, каждый высокопроизводительный процессор, когда-либо созданный — Intel, AMD, ARM и POWER — считается уязвимым. Подобно Meltdown, атака Spectre злоупотребляет спекулятивным выполнением, чтобы получить информацию, которая должна быть изолирована. Однако особенность Spectre заключается в том, что это более сложная и гораздо коварнейшая атака; в то время как Meltdown основан на злоупотреблении конкретной реализацией спекулятивного выполнения, Spectre можно рассматривать как (ранее неизвестную) фундаментальную уязвимость спекулятивного исполнения, которую теперь можно использовать для атак. Spectre требует больше усилий по подготовке, чтобы принудить целевое приложение к утечке информации, но фундаментальная природа риска означает, что уязвимость Spectre намного сложнее устранить, и она еще не полностью исследована.
Meltdown разрушает наиболее фундаментальную изоляцию между приложениями и операционной системой. Эта атака позволяет программе получить прямой доступ к памяти, а значит к секретным данным других программ и оперативной системы.
Если процессор вашего компьютера подвержен уязвимости, и вы пользуетесь непропатченной операционной системой, работать с секретной информацией небезопасно. Высок шанс утечки информации. Это касается как персональных компьютеров, так и облачной инфраструктуры. К счастью, выпущены софтварные патчи для защиты от Meltdown.
Spectre нарушает изоляцию между различными приложениями. Это позволяет атакующему получить данные даже из программ, которые соблюдают все правила безопасности и работают без ошибок. Фактически, проверки безопасности упомянутых программ увеличивают поверхность атаки и могут сделать приложения более восприимчивыми к Spectre. Эксплойт Spectre применить более сложно, чем Meltdown, однако нивелировать угрозу такой атаки, соответственно, намного сложнее. Тем не менее возможно предотвратить некоторые уже известные варианты эксплойта установкой последних софтварных патчей.
Поспешный релиз не раскрыл всю ситуацию
В информационное пространство обрушился не спланированный поток новостей о Meltdown и Spectre, и в результате исследователи, поставщики hardware и software, да и общественность в целом пытались понять, что же произошло и что с этим делать. Теперь мы знаем, что упомянутые уязвимости были обнаружены прошлым летом, с тех пор вектор действий поставщиков и исследователей безопасности нацелен на понимание последствий эксплойтов и разработку необходимых исправлений и рекомендаций. Было принято решениео том, что информация о Meltdown и Spectre не должна публиковаться до вторника, 9 января – даты выхода первого патча этого года.
Вместо этого произошло следующее: поскольку исправления для эксплойтов были зафиксированы в хранилище ядра Linux, у пользователей возникло подозрение, что произошло что-то серьезное. В связи с быстрым развитием всевозможных спекуляций на этой почве, поставщики софта и железа перенесли дату оповещения общественности и выпуска патчей на 3 января. Результат преждевременной публикации, как и можно было ожидать, был несколько случайным: я внимательно прочитал различные источники и вижу, что даже теперь не все опубликовали советы (или, зачастую, не опубликованы полный список рекомендаций).
В результате я все еще собираю информацию, и, вероятно, к тому времени, когда я закончу писать, что-то в этой статье будет устаревшим или неправильным. Но на данный момент это все, что мы знаем с момента релиза новостей.
НЕ ПАНИКУЙ
Говорят, что, несмотря на множество вопиющих (а иногда и фатальных) неточностей, путеводитель «Автостопом по Галактике» превзошел по популярности «Галактическую Энциклопедию», потому что он немного дешевле и потому, что имеет слова «НЕ ПАНИКУЙ», написанные большими веселыми буквами на обложке.
Прежде чем погрузиться в некоторые из глубоких технических аспектов Meltdown и Spectre, я думаю, что лучше начать с обзора сложившейся ситуации на более высоком уровне. Это включает в себя риски, связанные с новыми эксплойтами, как с ними бороться, и что отдельные пользователи должны делать (если есть такая возможность) перед лицом опасности.
Для начала хорошая новость: если вы не поставщик облачных услуг, непосредственный риск от этих атак очень низок. Плохая новость заключается в том, что, поскольку эти эксплойты основаны на уязвимости hardware, потребуется некоторое время для исправления. И есть очень много устройств, на которых работает множество различных ОС, и все это необходимо исправлять.
Что нам известно:
Это локальные атаки: и Meltdown, и Spectre — локальные атаки, требующие выполнения вредоносного кода на целевой машине. Это означает, что эти атаки не являются (напрямую) атакой удалённого запуска кода – как были Nimda или Code Red – а значит, системы нельзя атаковать, просто подключившись к сети. Понятно, что они ближе к атакам эскалации привилегий, классу атак, которые помогают глубже проникнуть в систему (к которой у вас уже есть доступ). Однако, исследователи показали, что они могут выполнять атаки на основе Spectre, используя JavaScript, поэтому веб-браузер может запустить вредоносный файл JavaScript, и таким образом позволить атаку.
Это read-only атаки (доступ к информации). Хотя мы и упомянули, что атаки не могут быть проведены удаленно, в случае если Meltdown и Spectre удалось запустить в локальной системе, характер эксплойта заключается в том, что это read-only атаки. То есть, все что они могут – это прочитать информацию из системы. Они не могут напрямую принудительно произвести выполнение кода в ядре ОС, других виртуальных машинах или других программах. И все же атаки раскрытия информации могут быть очень разрушительными в зависимости от того, какая информация получена. Всегда есть риск использования этой информации для проведения успешной атаки уже путем выполнения кода, а значит, угроза все же существует. Но реальный риск заключается именно в использовании этих уязвимостей злоумышленниками для похищения информации, а не для контроля над системой.
Чем является / не является обнаруженная уязвимость:
— способ, с помощью которого злоумышленник может наблюдать содержимое привилегированной памяти, обходя существующие уровни привилегий
— вредоносный код, использующий уязвимости и запущенный локально, способен получить критическую информацию, такую как пароли и ключи шифрования.
— атака отключения сервисов
— сетевая атака
— способ инъекции измененного кода или подмены содержимого памяти.
В основном это угроза для распределенных сред размещения. Учитывая вышеизложенное, эти атаки наиболее опасны для общедоступных хостинговых сред, где несколько пользователей могут выполнять код в одной системе. В результате провайдеры облачных сервисов, такие как Amazon и Microsoft, уже принимают меры по защите своих сервисов от атак. Отдельные системы и устройства, в сравнении с облачными, имеют гораздо меньший практический риск. Злоумышленнику по-прежнему необходимо запустить вредоносный код в отдельной системе, прежде чем он сможет начать атаку; но если злоумышленник все же сможет это сделать, то указанная отдельная система окажется в очень незавидном положении.
Защититься от Meltdown и Spectre можно софтварно: поскольку корень проблемы Meltdown и Spectre находится на аппаратном уровне, в идеале, это оборудование стоило бы заменить. Однако замена всех систем, выпущенных за 20 лет уж никак не выглядит привлекательной затеей. Как и другие ошибки процессора, ее можно смягчить комбинацией микрокода процессора и обновлений операционной системы. Поставщики, такие как Microsoft, Apple и дистрибутивы Linux, уже находятся в процессе развертывания этих исправлений, в том числе мы наблюдали ультра-редкое внеплановое обновление от Microsoft в среду вечером.
… но это займет некоторое время: однако, поскольку информация об эксплоите была выпущена раньше запланированного, не все меры обеспечения безопасности будут готовы. Полнный комплекс мер требует как обновления программного обеспечения, так и микрокодов. Как отметила Intel, усилия по смягчению последствий потребуют нескольких дней и недель.
Защита от Meltdown будет иметь влияние на производительность: в двух словах, меры по защите от Meltdown включают в себя лучшее разделение программ пользовательского пространства от ядра ОС. В результате переключение контакта между пользовательским пространством и ядром происходит с серьезными задержками. Однако фактическое влияние этого процесса на производительность будет зависеть от рабочей нагрузки и архитектуры процессора.
Это плохая неделя для Intel: Intel является доминирующим поставщиком ЦП для провайдеров облачных услуг, которые, в свою очередь, подвергаются наибольшему риску от Meltdown и Spectre. В сочетании с тем фактом, что Intel гораздо сильнее подвержена влиянию более насущной угрозы Meltdown, чем любой другой поставщик, означает, что клиенты высокооплачиваемых серверов Intel в первую очередь оказываются в зоне риска таких атак. А это, в свою очередь, плохо отражается на репутации Intel.
Касательно процессоров, уязвимых к атаке: Intel подтвердила, что это все Core-based архитектуры, включая первое поколение (Nehalem). Стоит обратить внимание, что нельзя исключать и более ранние процессоры.
Для AMD эта неделя получше (но тоже не подарок): AMD, наоборот, имеет и хорошие новости.
Если говорить коротко, их процессоры не уязвимы для атак Meltdown – и это единственный поставщик среди Big 3, которого разрушительная новость обоша стороной. Учитывая, что Meltdown является более насущным риском, это означает, что AMD и ее пользователи несут риски несравнимо меньшие, чем пользователи Intel. Однако процессоры AMD по-прежнему уязвимы для атак Spectre, и в долгосрочной перспективе все еще остается слишком много неизвестных моментов: насколько опасен Spectre, и насколько вообще возможно от него защититься.
И что неизвестно:
Когда полные обновления для защиты будут доступны для каждой платформы: как отмечалось выше, развертывание обновлений для защиты от эксплойтов займет несколько дней или недель. С точки зрения ПК, обновление Microsoft — это всего лишь одна часть головоломки, хотя, возможно, самая важная, поскольку она может снизить риск Meltdown без обновления микрокода. Однако мы все еще ожидаем обновления микрокодов, чтобы повысить защиту от Spectre на процессорах Intel (это в равной мере касается процессоров AMD).
С другой стороны, Google объявила о том, что они уже выпустили обновления Android с рекомендованными ARM защитными мерами для поддерживаемых устройств Nexus и Pixel, но эти обновления не содержат всех необходимых исправлений для ядра Linux.
Наши меры безопасности:
Мы принимаем комплекс мер, чтобы предоставить наиболее безопасные платформы. Это включает в себя комбинацию из патчей для операционных систем и прошивок, разработанных в сотрудничестве с партнерами по индустрии, поставщиками операционных систем и OEM поставщиками.
Ожидается, что весь комплекс защитных мер будет доступен для пользователей в период от нескольких дней до нескольких недель.
Неясно, как повлияют такие меры безопасности на производительность: возвращаясь к вопросу комплекса мероприятий по защите от Meltdown, неясно, каково будет влияние на производительность. Чисто теоретически, отдельные операции и рабочие нагрузки могут быть замедлены на 30%, но в значительной степени это будет зависеть от того, насколько часто задача переключается на ядро. На практике все же ожидается, что средний эффект в реальности менее «пагубный», особенно для пользователей настольных компьютеров. А вот пользователям серверов (что касается производительности) менее повезло.
Между тем влияние на производительность защит от Spectre практически неизвестно, отчасти потому, что поиск защиты от Spectre продолжается. Основываясь на том, что опубликовали поставщики оборудования, воздействие должно быть минимальным.
С нашей стороны, мы все еще ждем обновление микрокода, и даже после этого нам прийдется методом проб и ошибок выяснять все возможные последствия. Это определенно то, во что нам стоит в будущем углубиться в стиле AnandTech, как только будут получены все необходимые обновления.
Наконец, со своей стороны, группа Azure от Microsoft опубликовала свои собственные данные в рекомендациях для клиентов, отметив, что влияние на производительность весьма незначительно.
Большинство пользователей Azure не увидят заметного влияния на производительность после обновления. Мы работали над оптимизацией путей передачи данных между процессором и диском и не обнаружили особого влияния на производительность после того, как исправление было применено. Хотя некоторые клиенты все же могут столкнуться с некоторым падением производительности сети.
До сих пор неясны масштабы угрозы уязвимости Spectre: в то время как Meltdown — это более насущная угроза, уже ясно, как это работает и что нужно сделать для защиты. Spectre, однако, попросту переменная с неизвестным значением. Существует множество доказательств таких атак, но, в более широком смысле, атаки Spectre — это новый класс атак, не совсем похожих на то, что мы встречали ранее. В результате никто не уверен, что полностью понимает возможные последствия применения эксплойта. Существует риск того, что атаки Spectre могут использоваться гораздо более широко, чем мы себе это представляем.
Также неясно, насколько вообще можно защититься от Spectre. Не понимания всего диапазона применения Spectre, до конца не понятны и способы защиты от него. Исследователи, работающие над уязвимостью, совсем не уверены в том, что для полного решения проблемы обновлений программного обеспечения или микрокода будет достаточно. Скорее на данный момент эти меры должны рассматриваться как временные решения. Конкретные уже известные типы атак Spectre могут быть предотвращены, но защита может оказаться бесполезной против других атак Spectre. Это та область, требующая гораздо больше исследований.
Что могут пользователи сделать сейчас?
Наконец, возникает вопрос, какие меры предпринять владельцам компьютеров и гаджетов перед лицом угрозы атаки Meltdown и Spectre. Фундаментальная уязвимость, которая допускает атаки спекулятивного выполнения, находится в самом hardware, поэтому проблема не может быть действительно решена без замены устройств. Единственное, что можно сделать прямо сейчас, — это снизить угрозу с помощью программных и микрокодовых патчей, которые пытаются хоть как-то закрыть дыру в безопасности.
Кумулятивное обновление Windows 10 Version 1703 для x64 систем (KB4056891)
Была обнаружена проблема с безопасностью в продуктах Microsoft, которая может влиять на вашу систему. Вы можете помочь нам защитить вашу систему, установив обновление от Microsoft. Чтобы просмотреть полный список исправлений, обратитесь к соответствующей главе в Базе Знаний Microsoft. После установки обновления понадобится перезагрузка.
Ответ на вопрос «что же делать пользователю» как бы простой, но не особо полезный: мало что можно сделать в принципе. Обновления программного обеспечения и микрокода для защиты от этих эксплойтов будут распространяться обычным путем, поэтому обновление ваших систем и мобильных устройств до последней версии ОС — самый важный шаг, который можно предпринять. Как упоминалось ранее, все поставщики уже выпустили или находятся в процессе развертывания необходимых обновлений программного обеспечения. Но в случае, если для атаки будет применен специально разработанный узконаправленный инструмент, пользователю попросту будет нечем защититься. Задача производителей как можно быстрее найти решение данной проблемы.
Обязательно держите себя в курсе событий, читайте дополнительную информацию об этих атаках. В частности, я хочу продолжить изучение важности спекулятивного выполнения и почему атака на него может иметь существенные последствия для проектирования ЦП. Спекулятивное выполнение — довольно важная функция для повышения производительности на современных процессорах, но, как показали эти атаки, даже (казалось бы) идеально реализованная, она имеет некоторые нерешенные проблемы с безопасностью, что в нынешнюю эпоху вычислений, увы, неприемлемо.
Необходимо глубже рассматривать Meltdown и Spectre, и, хотя обе они являются атаками на спекулятивное исполнение, представляют собой очень разные виды атак. Сейчас Meltdown является самой большой проблемой из-за его относительной простоты в использовании. Но, как отмечают авторы публикации о Spectre, Spectre — более фундаментальная уязвимость, которая останется с нами надолго. Нам еще предстоит увидеть, что это означает для безопасности систем. А с точки зрения компьютерной науки, я ожидаю, что эти открытия окажут большое влияние на всю разработку будущих процессоров.
На правах рекламы. Успейте воспользоваться в новом году интересным предложением и получить скидку в размере 25% на первый платеж при заказе на 3 или 6 месяцев!