The OpenNET Project / Index page

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



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

Исходное сообщение
"Уязвимость в гипервизоре VMM, развиваемом проектом OpenBSD"
Отправлено Дон Ягон, 16-Фев-20 20:18 
> В OpenBSD защита памяти сделана хуже чем в Linux + PAX + GrSecurity.

Она, главным образом, сделана по другому. И OpenBSD, в отличие от NetBSD и HardenedBSD не пытается копипастить PAX/grsec.
Мой любимый пример:

PAX реализует и "Prevention of the creation of writable and executable memory mappings (W^X part one)" и "Restrictions on mprotect to prevent switching pages between writable and executable (W^X part two)". OpenBSD только "W^X part one".
Казалось бы, уже пора объявлять разработчиков OpenBSD ламерами, по очевидным причинам, но нет.

Во-первых, "W^X part two" не соответствует букве стандарта.
Во-вторых, что куда хуже, оно ломает приложения. Ну т.е. натурально, после включения у вас сдохнет chrome, ff, java и куча всего другого весёлого, в основном, использующее JIT. Да, предполагается или выставлять разрешающие флаги через paxctl или запускать костыледемон paxd, который будет делать это за вас, но это 1) уродство 2) полностью отключает эти защиты для приложений.

(Что касается уродства, то в OpenBSD бинарники-исключения тоже помечаются особым образом, чтобы им было позволено нарушать W^X, но это не преподносится как удачное решение и считается, в некотором роде, капитуляцией перед реальностью и невозможностью строгого W^X везде.)

Наконец, в третьих, OpenBSD предлагает решать проблему с "W^X part two" внутри самого приложения, при помощи pledge. Если вам точно известно, что ваше ПО не нуждается в том, чтобы делать страницы памяти исполняемыми, не выдавайте процессам вашей программы pledge "prot_exec" (см. man для подробностей) и получайте желаемое.
Да, для этого нужно патчить код программы. Но имхо, это самое верное место, и никто лучше автора программы не знает, что нужно, а что нет его программе. А если автор осёл и вращал известно где безопасность, то никакие PAX и OpenBSD вам всё равно не помогут.

ИМХО, решение от PAX мало подходит как стандартное решение для ОС общего назначения - его сложно включить по умолчанию ничего не сломав или не разрешив слишком много, приложения, которые добавили в исключения будут незащищены (впрочем, это может зависеть от используемых PAX-патчей и добавленных исключений). В то же время, я могу представить, как их монетизировать (продажа патчей + консультации по правильной настройке и написанию ПО, например).
Решение от OpenBSD требует модификации кода программы, но снимает с разработчиков дистрибутива ответственность за безопасность стороннего ПО, в то же время, выдаёт самим разработчикам инструменты для защиты своих приложений. Даже если вашему приложению нужен prot_exec, его можно ограничить другими "обещаниями" pledge и/или unveil (что в опёнке для примера сделали с ff и хромым).

Надеюсь, я достаточно понятно и непредвзято донёс своё понимание разницы подходов OpenBSD и PAX, буду рад критике.

 

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



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

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