В OpenBSD предложен новый системный вызов unveil() для изоляции ФС

Тео де Раадт (Theo de Raadt) представил патч с реализацией дополнительной защиты при помощи нового системного вызова unveil(), который дополняет механизм ограничения доступа к системным вызовам pledge(). Новый системный вызов планируют включить в состав выпуска OpenBSD 6.4. В настоящее время код для защиты при помощи unveil() добавлен в 37 приложений из базовой системы OpenBSD, активировать патч планируется когда число приложений будет доведено до 50.

Системный вызов unveil() предоставляет новый способ изоляции доступа к файловой системе, интегрируемый в код приложений. Суть защиты заключается в том, что первым вызовом unveil() для приложения полностью блокируется доступ ко всей ФС. После чего выборочно открывается возможность доступа для отдельных путей, с которыми может работать приложение (реализация «белого списка» — по умолчанию всё запрещено, а необходимые пути следует явно разрешить).

Поддерживаются флаги ограничения доступа, т.е. можно отдельно открыть доступ на чтение, запись и исполнение, можно запретить создание или удаление файлов. Например, можно открыть доступ на запись к /tmp, на запуск /bin/sh и на чтение /var/spool. Блокировка осуществляется через интеграцию дополнительных фильтров, работающих на уровне системных вызовов, связанных с файловыми операциями (open(), chmod(), rename() и т.п.).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.