3

OpenSUSE поставляется с несколькими предопределенными настройками разрешений. Параноидальный - самый строгий. Хотя я понимаю, почему он блокирует такие вещи, как виртуализация или трансляции tty для пользователей без полномочий root, я не совсем понимаю, почему он также блокирует fuse . Есть ли какая-то реальная проблема безопасности, вызванная предохранителем, например, на общем сервере?

1 ответ1

1

Этот полезный комментарий ссылается на эту веб-страницу. Ниже выписка из страницы:

Проблемы безопасности

Написание и использование файловой системы FUSE может иметь некоторые проблемы безопасности размером с Metrodome, которые могут быть или не быть очевидными, но заслуживают некоторого упоминания. В этом разделе я буду говорить об повышении привилегий, делаю некоторые заметки о проверке прав доступа и упоминаю условия гонки.

Повышение привилегий

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

Распространенный случай: пользователь запускает файловую систему без опции allow_other

Это нормальный случай; Файловая система работает с привилегиями пользователя, который ее запустил, и только этот пользователь может получить доступ к файловой системе. В этом случае FUSE не открывает никаких особых проблем с безопасностью.

Пользователь запускает файловую систему с опцией allow_other

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

Следует отметить , что вариант, user_allow_other должен быть установлен в /etc/fuse.conf , чтобы включить эту опцию.

Root запускает файловую систему

Это действительно то же самое, что и предыдущие два случая (в зависимости от того, установлена ли опция allow_other), но root является достаточно частным случаем, который заслуживает упоминания. В этом случае любой пользователь, использующий файловую систему, имеет привилегии root в этой файловой системе! Если процесс имеет доступ к реальной файловой системе, его можно легко использовать для получения практически неограниченного доступа.

В следующем подразделе будет немного рассказано о проверке прав доступа, но самый простой способ здесь - не позволить root монтировать файловую систему. [...]

Проверка прав доступа

Как правило, файловая система, которая может выполняться с флагом allow_other , должна будет предпринять шаги для обеспечения собственной безопасности. fuse.h документально подтверждает, что несколько вызовов должны проверить, разрешен ли запрашиваемый доступ; в дополнение к ним есть несколько других, которые также требуют проверки доступа (например, chown()). Программист должен строго соблюдать эти предостережения!

[...]

Одновременный доступ и условия гонки

По умолчанию FUSE работает многопоточно: это означает (вкратце), что второй запрос может быть обработан файловой системой до завершения более раннего запроса; это, в свою очередь, повышает вероятность того, что разные потоки могут одновременно изменять одну структуру данных, что приведет к очень трудным для отладки ошибкам.

[...]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .