2

Существует несколько NFS-клиентов на основе пользовательского пространства (например, https://stackoverflow.com/questions/2442691/nfs-client-library/2442729#2442729). Могу ли я обойти права доступа к файлам с помощью такого клиента?

Например:

Сервер1 имеет nfs-экспортированную файловую систему с файлами

-rwxr-xr-x  user1  file1
-rwx------  user2  file2

Client1 использует обычный клиент NFS (в режиме ядра), а user1 @ client1 может читать только file1 , но не file2 . Как я понимаю, client1 отправляет uid в запросе nfs, server1 выполняет проверку прав доступа на основе данных запроса. Итак, я предлагаю это возможно иметь client2:

Client2 использует клиент пользовательского пространства, а hacker @ client2 знает идентификаторы user1 и user2; Если он хочет прочитать file1 он может отправить uid user1; если он хочет прочитать file2, он отправляет uid пользователя user2.

Возможна ли схема?

1 ответ1

2

Нет, пока hacker @ client2 не является пользователем root, поскольку безопасность NFS основана на исходном порте TCP запроса. Если библиотека пользовательского пространства запускается с hacker @ client2, но не с root @ client2, она не может использовать TCP-порты <= 1024. Флаг secure в /etc /exports будет указывать серверу Server1 не отвечать на запросы от портов TCP> 1024. Этот флаг установлен по умолчанию.

Типичная аутентификация пользователя на сервере nfs (v3) в linux - AUTH_NONE и AUTH_USER. Второе означает, что сервер доверяет UID и GID в запросе.

NFSv4 сделал эту атаку вообще невозможной, поскольку серверы nfs требуют, чтобы у пользователя был действительный билет Kerberos.

Используемая книга: http://www.sans.org/reading_room/whitepapers/linux/nfs-security-trusted-untrusted-environments_1956

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