OSDev
http://osdev.ru/

Speculation Execution security bug!
http://osdev.ru/viewtopic.php?f=2&t=1779
Страница 1 из 1

Автор:  Yoda [ 25 янв 2018, 12:52 ]
Заголовок сообщения:  Speculation Execution security bug!

4 января 2018 года опубликована информация о двух серьёзных уязвимостях — Spectre и Meltdown, присутствующих в большинстве современных процессоров. Уязвимости найдены компанией Гугл в середине прошлого года и имеют чисто аппаратных характер, что означает невозможность обновления микрокода и необходимость существенных изменений в операционных системах. Суть проблемы заключается в наличии в микропроцессорах кэш-памяти, блоков предсказания переходов и спекулятивного выполнения инструкций. Сочетание этих факторов приводит к появлению атаки типа side-channel, позволяющей для атаки Meltdown легко и быстро прочитать любые данные, находящиеся в закрытой для текущего уровня привилегий памяти. Суть проблемы состоит в том, что спекулятивное выполнение позволяет выполнять последовательность инструкций, которые не могут быть выполнены при текущем уровне привилегий. При этом не важно, что эти инструкции не будут в итоге приняты — в результате их выполнения в зависимости от содержимого защищённой памяти пробные данные попадают или не попадают в кэш и наличие их в кэше легко проверяется таймированием времени доступа к ним. Уязвимости не подвержены только очень старые процессоры 80486.
По сути, надёжным способом защиты является отсутствие каких-либо критичных данных (явок/паролей) в адресном пространстве процесса. Практика показывает, что такая защита замедляет работу приложений до 30%. Соответственно, всем разработчикам ОС необходимо иметь это ввиду.

Автор:  SII [ 25 янв 2018, 17:03 ]
Заголовок сообщения:  Re: Speculation Execution security bug!

Возможно, я чего-то недопонимаю, но, как по мне, это не является уязвимостью для достаточно реальных применений. Доступ к самим данным получить возможно? Прямо -- нет, защита памяти не даст. Косвенно вычислить по времени доступа? Отдельные значения, может, и удастся, в целом -- нет, т.к. спекулятивное выполнение далеко не забегает, плюс ограничения по адресам (бОльшая часть адресного пространства в 64-разрядных системах недоступна), не говоря уже о том, что ещё надо найти подходящий для этой цели привилегированный код.

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

Автор:  Yoda [ 25 янв 2018, 18:00 ]
Заголовок сообщения:  Re: Speculation Execution security bug!

Уязвимость Spectre действительно не так просто эксплуатировать, это верно. Возможность чтения зависит от кода вызываемых привилегированных функций. А вот Meltdown — это реальная катастрофа. Конечно, прямо читать память ядра нельзя. Однако с учётом того, что процессор имеет инструкцию команды очистки кэша clflush, за одну простую ассемблерную итерацию можно узнать один бит любой ячейки защищённой памяти, что позволяет "читать" память ядра со скоростью порядка мегабайта в секунду. А там находится не только мусор самого приложения, но и большое количество системных данных, которые смапированы системой на все приложения для ускорения переключения задач, а также критически важные данные касающиеся работы самой ОС. Не удивлюсь, если там есть и системные пароли/ключи. Без инструкции очистки кэша существенно падает скорость "чтения", поскольку надо забивать кэш, чтобы вытеснить тестовую ячейку, однако и небольшой скорости достаточно, если знать, где и что читать.
Обновление процессоров не поможет, потому что никто не станет обновлять астрономический по своим масштабам парк использующихся процессоров и смартфонов (некоторые ARMы тоже уязвимы).

Автор:  SII [ 25 янв 2018, 20:12 ]
Заголовок сообщения:  Re: Speculation Execution security bug!

Yoda писал(а):
clflush


От IA-32 давно отошёл, так что не знаю, насколько крива сия команда, но поверю на слово :)

Цитата:
Обновление процессоров не поможет, потому что никто не станет обновлять астрономический по своим масштабам парк использующихся процессоров и смартфонов (некоторые ARMы тоже уязвимы).


Станут-станут. Сколько хомячков пытаются купить каждый новый ифон? или даже другую модель, но всенепременно новую? а так лишний стимул.

Пы.Сы. И ведь проблема, в общем-то, лечится чисто программно: надо просто после каждого условного перехода, проверяющего допустимость параметра от пользователя, ставить барьер, чтоб проц не мчался спекулятивно что-нибудь исполнять, пока переход реально не будет (не) выполнен. Учитывая, что такая правка нужна только в ядрах осей, причём в очень небольшом и заранее известном числе мест, осуществить сие -- дело нескольких дней, если реально этим заниматься.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/