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

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

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

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

07/29/2018 08:57:59
0

комментарии (0)