The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"SWAPGS - новая уязвимость в механизме спекулятивного выполне..."
Отправлено opennews, 07-Авг-19 09:58 
Исследователи из компании Bitdefender выявили (https://www.bitdefender.com/business/swapgs-attack.html) новую уязвимость (CVE-2019-1125 (https://security-tracker.debian.org/tracker/CVE-2019-1125)) в механизме спекулятивного выполнения инструкций современных CPU, которая получила имя SWAPGS, соответствующее названию процессорной инструкции, вызывающей проблему. Уязвимость позволяет (https://access.redhat.com/articles/4329821) непривилегированному атакующему определить содержимое памяти ядра, других процессов или виртуальных машин в системе. Проблема подтверждена (https://software.intel.com/security-software-guidance/insigh...) в процессорах Intel (x86_64)  и частично затрагивает (https://www.amd.com/en/corporate/product-security) процессоры AMD, для которых не проявляется основной вектор атаки. Ранее реализованные методы противодействия уязвимостям Spectre и Meltdown не защищают от атаки SWAPGS при использовании процессоров Intel, но для Linux, ChromeOS, Android и Windows уже предложены исправления.

Уязвимость относится к классу Spectre v1 и основывается на идее восстановления данных из процессорного кэша, оставшихся после спекулятивного выполнения инструкций. Блоки предсказания переходов современных CPU для повышения производительности применяют упреждающее выполнение некоторых инструкций, которые вероятнее всего будут выполнены, но не дожидаясь вычисления всех факторов, определяющих их выполнение (например, когда ещё не вычислены условия перехода или параметры доступа). Если прогноз не подтверждается, процессор отбрасывает результат спекулятивного выполнения, но обработанные в его ходе данные оседают в процессорном кэше и могут быть восстановлены при помощи методов определения содержимого кэша по сторонним каналам, анализирующих изменение времени доступа к прокэшированным и не прокэшированным данным.

Особенность новой атаки в использовании утечки, возникающей в ходе спекулятивного выполнения инструкции SWAPGS, которая применяется в операционных системах для замены значения регистра GS при переходе управления из пространства пользователя в ядро ОС (используемое в пространстве пользователя значение GS заменяется на значение, используемое при операциях в ядре). В ядре Linux в GS хранится указатель per_cpu, используемый для доступа к данным ядра, а в пространстве пользователя указатели на TLS (Thread Local Storage).


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


В ядре Linux проблема устранена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...) через изменение логики вызова инструкции SWAPGS (блокирование спекулятивного выполнения), по аналогии с исправлением других уязвимостей класса Spectre v1. Предполагается, что добавленная защита минимально повлияет на производительность типовых рабочих нагрузок. Задержка возникает на этапе переключения между пространством пользователя и ядра, что может привести к снижению производительности, например, при интенсивном выполнении системных вызовов из приложения или частой генерации NMI и прерываний.

Исправление требует установки обновления ядра как в основной системе, так и в гостевых окружениях, с последующей перезагрузкой системы. Для отключения защиты в Linux может быть испорльзована опция "nospectre_v1", которая также отключает меры для блокирования уязвимости SWAPGS. Исправление доступно в виде патча (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...) для ядра Linux, который уже включён в состав выпусков 4.19.65 (https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.65), 5.2.7 (https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.2.7), 4.14.137,  4.9.188 и  4.4.188. Обновления для дистрибутивов Linux пока не выпущены (Debian (https://security-tracker.debian.org/tracker/CVE-2019-1125), RHEL (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-1125), Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=1738285), Arch Linux (https://security.archlinux.org/CVE-2019-1125), SUSE/openSUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-1125), Ubuntu (https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2...)). В Windows проблема без лишней огласки была устранена в июльском обновлении (https://portal.msrc.microsoft.com/en-US/security-guidance/ad...). Компания Google подготовила (https://chromium-review.googlesource.com/c/chromiumos/third_...) исправление для ядра 4.19, поставляемого в ChromeOS и Android (https://android-review.googlesource.com/c/kernel/common/+/10...).

По заявлению исследователей из компании Bitdefender,  Intel был информирован о проблеме ещё в августе прошлого года. Проблему было решено устранить программно, для чего к скоординированной выработке исправления были привлечены разработчики из Microsoft, Google и ядра Linux. Старые процессоры Intel, до Ivy Bridge, атаковать значительно труднее из-за отсутствия поддержки инструкции WRGSBASE, использованной в эксплоите. Системы ARM, POWER, SPARC, MIPS и RISC-V  не подвержены проблеме, так как не поддерживают инструкцию SWAPGS.


Проблема угрожает главным образом обладателям процессоров Intel -
основная техника атаки на системах AMD не проявляется, так как данные процессоры не используют спекулятивное исполнение инструкции SWAPGS. При этом на процессорах AMD удалось воспроизвести неопасный вариант атаки, основанных на извлечении базового значения регистра GS  из кэша. Для блокирования данного варианта атаки достаточно (https://www.amd.com/en/corporate/product-security) существующих методов защиты от уязвимостей Spectre v1.


URL: https://software.intel.com/security-software-guidance/insigh...
Новость: https://www.opennet.ru/opennews/art.shtml?num=51234

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру