Назад | Перейти на главную страницу

Почему плохо, когда root записывает файлы в каталог, не принадлежащий root?

Это появилось в комментарии к другому вопросу, и я был бы рад, если бы кто-нибудь мог объяснить мне причины этого.

Я предложил, чтобы Apache регистрировал ошибки для данного VHost в домашнем каталоге пользователя. Он был сбит, потому что был небезопасен. Зачем?

Я попросил разъяснений в ответном комментарии, но все, что я получил, это то, что иметь root-запись в папке, не принадлежащей root, небезопасно. Опять же, может кто-нибудь объяснить?

Спасибо,

Барт.

Так как ан злой пользователь может злонамеренно попытаться указать файл root пишет в другое место. Это не так просто, но реально.

Например, если пользователь найдет способ создать символическая ссылка из предполагаемого журнала Apache, скажем, / etc / shadow у вас внезапно окажется непригодная для использования система. Apache (root) перезапишет учетные данные ваших пользователей, что приведет к неисправности системы.

ln -s /etc/shadow /home/eviluser/access.log

Если access.log файл не доступен для записи пользователем, его может быть сложно перехватить, но лучше избегать такой возможности!

Возможность может быть используйте logrotate для выполнения работы, создавая ссылку на файл, который еще не существует, но который logrotate перезапишет, как только логи вырастут:

ln -s /etc/shadow /home/eviluser/access.log.1

Заметка:

В символическая ссылка метод это только одна из возможных атак, приведенная в качестве доказательства концепции.

Безопасность должна быть обеспечена Белый список ума, а не занесение в черный список мы знаем быть проблемой.

Общий принцип недопущения записи процессов в каталог, которым они не владеют или которому они не доверяют, является хорошим. Но в этом конкретном случае разумно полагать, что код Apache открывает журнал с O_NOFOLLOW и т.д .: вход в домашний каталог пользователя - это обычная настройка.