15 Августа, 2018

Усиливаем броню Windows против уязвимостей Meltdown и Spectre

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

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

Последние новости (Jule 2018)
1. Браузерную защиту от Spectre удалось обойти

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

Proof-of-concept эксплоиты специалистов сумели обмануть защиту Edge, Chrome и Safari, а затем, эксплуатируя оригинальную уязвимость Spectre ( CVE-2017-5753 ), извлечь через браузеры пользовательские данные. Так как инженеры Mozilla реализовали свою версию защиты иначе, тот же трюк не удалось повторить с браузером Firefox. Исходные коды эксплоитов уже опубликованы на GitHub .

«Заплатки» и принцип их работы разнятся от продукта к продукту. Так, разработчики применяли отключение SharedArrayBuffer, изоляцию сайтов (в браузерах на базе Chromium), снизили точность таймеров performance.now(), добавили больший разброс значений для performance.now().
Исследователи Aleph Security пишут, что им удалось обойти практически все эти средства защиты и извлечь данные из памяти уязвимой машины на скорости примерно 1 бит в секунду. Напомню, что эксплуатация Spectre вариант 1, как правило, позволяет извлечь информацию, которой делятся между собой различные страницы и процессы браузеры. Это могут быть куки HttpOnly, куки из других источников, сохраненные пароли и так далее.
Хотя в итоге скорость атаки оказалась совсем невелика, эксперты объясняют, что они создавали свои эксплоиты не для реальных атак, а чтобы помочь разработчикам браузеров подготовить более надежные патчи.


2. Обнаружен новый вариант уделенной атаки используя уязвимость Spectre

Ранее в этом году уже были показаны типы атак Spectre и Meltdown .
Сейчас появилась информация о новом типе атаки. Ее предоставили исследователи из Грацского технологического университета имени Карла и Франца. В раскрытии нового типа атаки принимал участие и специалист по кибербезопасности Дэниэл Грасс, который обнаружил исходную атаку Meltdown. Что касается новинки, то она получила название NetSpectre. Ее особенность в том, что злоумышленник может удаленно считать данные памяти без выполнения какого-либо кода на системе жертвы.

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

Если процессор допустит ошибку, то загрузка будет выполнена по-новой, на этот раз с правильным адресом. «Угадываемое» значение будет проигнорировано и сохранится архитектурно-определенное поведение. Но ошибка затронет другие элементы, в частности, содержимое кеша. Такие нарушения могут быть обнаружены и идентифицированы вредоносной программой. Такой способ получения данных известен как сторонний канал. А вернее — как атака по сторонним (или побочным) каналам.
Это вовсе не новый тип атаки, о них знали с 80-х годов прошлого века, а широко распространенными они стали после освещения Полом Кохером в 96-м году. NetSpectre основывается на этих хорошо известных принципах осуществления атаки, но разработчики привнесли и кое-что свое. В частности, атака позволяет инициировать утечку данных из памяти посредством манипуляции с сетевыми пакетами, которые отправляются по сети.

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

Атаку можно было бы считать очень опасной, если бы не ее низкая производительность. В оптимальных условиях новый метод может определить 15-60 бит в час. В день — не больше 45-180 байт. Но оптимальными условия бывают очень редко, так что в обычных условиях скорость атаки минимальная — всего 1-3 байта за 3-8 часов атаки. Для проверки одного бита в этом случае требуется выполнить около 20 млн проверок.

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


Для предотвращения атак NetSpectre достаточно уже существующих мер защиты, рекомендуемых для оригинальной уязвимости Spectre. К тому же, поскольку NetSpectre – сетевая атака, средствам защиты от DDoS-атак не составит труда ее обнаружить.

Днями ранее исследователи из Калифорнийского университета опубликовали подробности о новом методе SpectreRSB, эксплуатирующем компонент Return Stack Buffer, вовлеченный в процедуру спекулятивного выполнения. Одна из его основных особенностей заключается в возможности обхода патчей против атак класса Spectre. Хотя на сегодняшний день нет информации о реальных атаках с использованием уязвимостей Spectre/Meltdown, эксперты в области безопасности усиленно работают над методами защиты от подобных атак.


Еще раз коротко о Meltdown и Spectre

1.Базовая информация об уязвимости Meltdown

Уязвимость Meltdown (CVE-2017-5754) затрагивает только процессоры Intel и ARM (процессоры AMD уязвимости не подвержены).

Реализация уязвимости Meltdown позволяет нарушить изоляцию между пользовательскими приложениями и ядром ОС. Атакующий может получить доступ к защищенным данным, обрабатывающимся ядром ОС. Данной уязвимости подвержены практически все модели процессоров Intel, выпущенные за последние 13 лет (кроме процессоров Intel Itanium и Intel Atom до 2013 года)

2.Базовая информация об уязвимости Spectre
Уязвимость Spectre (CVE-2017-5753 и CVE-2017-5715). Данная уязвимость присутствует как на процессорах Intel с ARM, так и AMD. При реализации уязвимости из одной программы можно получить доступ к памяти другой программы или сервиса (украсть пароли, персональные данные и т.д.). Реализовать атаку через уязвимость Spectre намного сложнее, чем через Meltdown, но, соответственно, и защитится от нее сложнее.

3.Как проверить, уязвима ли ваша система

Microsoft выпустила специальный Powershell модуль SpeculationControl для тестирования наличия процессорной уязвимости в вашей системе (проверяется как наличие обновления прошивки BIOS/firmware, так и патча для Windows).

Модуль SpeculationControl можно установить через менеджер пакетов из галереи Powershell:
Save-Module -Name SpeculationControl -Path c:\tmp\SpeculationControl
Install-Module -Name SpeculationControl
Или скачать в виде zip архива с TechNet.
$SaveExecutionPolicy = Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned -Scope Currentuser
Import-Module .\SpeculationControl.psd1
Get-SpeculationControlSettings

Как вы видите, в данном случае компьютер уязвим и к Meltdown (CVE-2017-5754), и к Spectre (CVE-2017-5715). Отсутствуют как аппаратное обновление прошивки, так и для патч Windows.

Не забудьте вернуть политику исполнения на изначальную:
Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser
Защита своими силами

1.Обновления безопасности Windows для защиты от уязвимости Meltdown и Spectre
Microsoft довольно оперативно опубликовала обновления безопасности, которые должны защитить операционную систему Windows от реализации атак через уязвимости Meltdown и Spectre.

Были выпущены обновления как для Windows 10, так и для Windows 7 / Windows Server 2008 R2 (KB4056897 ) и Windows 8.1/ Windows Server 2012 R2 (KB4056898).

Обновления должны автоматически установиться на компьютере через Windows Update / WSUS.
Для ручного скачивания и установки обновления, можно воспользоваться следующими ссылками на каталог обновлений Windows Update.
2.Что делать, если патч никак не устанавливается?

Некоторые сторонние антивирусы могут блокировать установку обновлений, закрывающих уязвимости Meltdown и Spectre. В этом случае рекомендуется в ветке реестра
HKLMSOFTWAREMicrosoftWindowsCurrentVersionQualityCompat найти ключ cadca5fe-87d3-4b96-b7fb-a231484277cc,

изменить его значение на 0 и перезагрузить компьютер.

reg add “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionQualityCompat” /v cadca5fe-87d3-4b96-b7fb-a231484277cc /t REG_DWORD /d 0 /f

cadca5fe-87d3-4b96-b7fb-a231484277cc

После перезагрузки нужно попробовать установить обновление еще раз.