The OpenNET Project / Index page

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



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

Исходное сообщение
"Неверная трактовка документации Intel привела к уязвимости в..."
Отправлено opennews, 10-Май-18 09:48 
Раскрыта (http://openwall.com/lists/oss-security/2018/05/08/4) информация об уязвимости (https://everdox.net/popss.pdf) CVE-2018-8897 (https://security-tracker.debian.org/tracker/CVE-2018-8897), которая вызвана неверной интерпретацией описания поведения инструкций MOV SS/POP SS в документации и может привести к получению доступа к закрытым областям памяти, вызова отказа в обслуживании или повышения привилегий в системе. Проблема проявляется на 64-разрядных процессорах x86 (AMD и Intel) в большинстве операционных систем и гипервизоров, включая Linux, FreeBSD, Windows, macOS, Xen, KVM и VMware.


Причиной возникновения уязвимости является недостаточно ясная трактовка в официальной документации (https://software.intel.com/en-us/articles/intel-sdm) ("System Programming Guide of the Intel 64 and IA-32") поведения MOV SS/POP SS при возникновении отладочных исключений (#DB (https://xem.github.io/minix86/manual/intel-x86-and-64-manual.... На системах x86 стек представлен комбинацией из сегмента стека (SS) и указателя позиции в стеке (SP), которые всегда должны быть синхронизированы для корректного выполнения операций. Для блокирования рассинхронизации инструкции, выполняющие манипуляции с сегментом стека, содержат специальный обработчик для обеспечения согласованности с изменением указателя стека.


Разработчики полагали, что попадание инструкции  MOV SS в точку останова приводит к генерации исключения #DB сразу после завершения MOV SS, но на деле исключение откладывается до границы следующей инструкции и вызывается только после выполнения инструкции, идущей следом за MOV SS. Если следом за MOV SS выполняется одна из инструкций, приводящих к переключению контекста и передаче управления операционной системе (SYSCALL, SYSENTER, INT $N, INT3, INTO), например, осуществляется системный вызов, то обработчик исключения #DB вызывается уже в контексте ядра, а не в контексте пользователя. Для решения проблемы в контексте ядра следовало очистить значение регистра DR6 (https://en.wikipedia.org/wiki/X86_debug_register#DR6_-_Debug... определить обработчик #DB в стиле обработчика NMI или подменить стек при помощи IST (Interrupt Stack Table).


Уязвимость позволяет непривилегированному пользователю инициировать ситуацию при которой можно получить контроль за указателем стека и указателем GSBASE в обработчике прерываний,  вызванного в контексте ядра, что позволит  получить доступ к структурам ядра и повлиять на ход выполнения низкоуровневых функций операционной системы (прототип эксплоита (https://marc.info/?l=linux-kernel&m=152580052406931) для Linux, вызывающего крах ядра). Например, атакующий может настроить отладочный регистр для срабатывания точки останова при доступе к данным в вершине стека, после чего выполнить  инструкцию 'pop %ss; int 3'. Данная инструкция приведёт к возникновению исключения DB#, но оно будет вызвано только после выполнения 'int 3' и переходу в контекст ядра (исключение на адрес в пространстве пользователя возникнет в контексте ядра).


Работа по формированию обновлений для устранения уязвимости велась согласованно с назначением эмбарго, поэтому проблема была устранена в большинстве систем ещё до публичного анонса. Подверженность (https://www.kb.cert.org/vuls/id/631579) уязвимости различных систем:


-  Linux: уязвимость может привести только к краху ядра, возможность атаки по повышению привилегий исключена (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-8897) (в Linux используется  IST (https://www.kernel.org/doc/Documentation/x86/kernel-stacks), но один слот для #BP и #DB, что позволяет совершить DoS). Обновления пакетов с ядром выпущены для Debian (https://security-tracker.debian.org/tracker/CVE-2018-8897), RHEL (https://access.redhat.com/errata/RHSA-2018:1318), Fedora, openSUSE (https://lists.opensuse.org/opensuse-security-announce/2018-0... SUSE (https://www.suse.com/security/cve/CVE-2018-8897/) и Ubuntu (https://people.canonical.com/~ubuntu-security/cve/2018/CVE-2.... Исправления включены в свежие выпуски поддерживаемых веток ядра Linux (https://www.kernel.org/);

-  Системы виртуализации на базе KVM (CVE-2018-1087 (http://openwall.com/lists/oss-security/2018/05/08/5)): непривилегированный пользователь гостевой системы может использовать уязвимость для поднятия своих привилегий внутри гостевой системы (
прототип эксплоита (https://lkml.kernel.org/r/67e08b69817171da8026e0eb3af0214b06...

-  Гипервизор Xen (XSA-260 (http://seclists.org/oss-sec/2018/q2/91)): пользователь гостевой системы, работающей в режиме паравиртуализации (PV), может поднять свои привилегии до уровня гипервизора (ring0);

-  FreeBSD (https://www.freebsd.org/security/advisories/FreeBSD-SA-18:06...: уязвимость устранена в ветках stable/11, 11.2-PRERELEASE, releng/11.1, 11.1-RELEASE-p10, stable/10, 10.4-STABLE, releng/10.4, 10.4-RELEASE-p9. В ходе атаки можно получить доступ к содержимому памяти ядра, потенциально поднять свои привилегии или вызвать крах ядра;
-  DragonFly BSD (https://www.dragonflydigest.com/2018/05/09/21231.html): исправление уязвимости включено в ядро DragonFly_RELEASE_5_2;

-  Windows (https://portal.msrc.microsoft.com/en-US/security-guidance/ad...: уязвимость можно использовать для повышения привилегий и получения полного контроля за системой;
-  macOS (https://support.apple.com/en-us/HT208742): локальный пользователь может поднять свои привилегии в системе и выполнить код с правами ядра;
-  OpenBSD и NetBSD не подвержены уязвимости.

Описание в документации Intel (https://software.intel.com/en-us/articles/intel-sdm), которое было неверно истолковано разработчиками:


URL: http://openwall.com/lists/oss-security/2018/05/08/4
Новость: https://www.opennet.ru/opennews/art.shtml?num=48569

 

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



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

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