Когда целесообразно удалить привилегии setuid/setgid из приложения?

Я просматривал предложения АНБ по усилению Mac OS X и Linux и заметил небольшой кусочек информации:

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

найти / -perm -04000 -ls
найти / -perm -02000 -ls

После определения двоичных файлов setuid и setgid отключите биты setuid и setgid (используя имя программы chmod ug-s) для тех, которые не нужны для операций системы или миссии.

Мой вопрос: как определить, в каких приложениях их биты setuid / setgid отключены? Например, я предполагаю, что некоторые приложения, такие как su, sudo и login должны иметь setuid. С другой стороны, что-то вроде write, вероятно, не требует setuid. Есть ли хороший способ узнать, действительно ли это нужно приложению?

1 ответ

Решение

Это хороший вопрос.

Обычно приложения, которым требуется setuid и setgid, являются приложениями, которые должны выполнять задачи администрирования пользователями без полномочий root.

Взять, к примеру, программу passwd. Используется для смены пароля. Пароли хранятся в файле / etc / shadow, который доступен для чтения только пользователю root, поэтому используется бит setuid.

Как правило, в популярных дистрибутивах Linux эти приложения безопасны в использовании, поскольку все они протестированы и не содержат ошибок.

Я не знаю, как вы можете узнать, нужны ли приложению эти биты или нет, но вы можете установить приложение, такое как snort или AIDE, которое проверяет целостность файлов и может предупредить вас, когда какой-то файл был изменен - ​​особенно те, которые с биты setuid и setgid включены.

Другие вопросы по тегам