Полномочия принадлежат контексту выполнения
Имя вошедшего пользователя не описывает все свойства запущенного процесса. В системе учитываются идентификаторы пользователя и групп, дополнительные группы и специальные механизмы полномочий. Один процесс может работать с правами, отличающимися от прав его инициатора. Поэтому вопрос кто запустил программу дополняют вопросом с какими полномочиями она выполняется. При аудите это помогает отделить ожидаемое делегирование от ошибки. Сам по себе административный процесс не является уязвимостью: важно, какие действия ему разрешены и чем управляет менее привилегированный пользователь.
Разные механизмы требуют разных вопросов
Бит setuid у подходящего исполняемого файла может менять эффективный идентификатор пользователя при запуске; существуют условия, при которых это поведение ограничено. Механизм capabilities разделяет традиционные привилегии на отдельные возможности. Правила sudo определяют, какие действия разрешено выполнять от другого пользователя. Эти механизмы не следует объединять в одну категорию опасных файлов. Для каждого выясняют назначение, область действия и необходимость. Узкое разрешение тоже может оказаться чрезмерным, если оно даёт программе возможность изменять критические ресурсы вне заявленной задачи.
Доверие распространяется на зависимости
Представим служебную программу, которая работает с повышенными полномочиями и читает конфигурацию. Проверки одного исполняемого файла недостаточно, если другой пользователь способен изменять важные входные данные, на которые программа безоговорочно полагается. Анализируют также каталоги, связанные файлы и правила обработки аргументов. Это описание класса ошибки, а не доказательство конкретной уязвимости. Возможность записи нужно связывать с реальным использованием: наличие изменяемого файла рядом ещё не означает, что административный процесс его прочитает или исполнит.
Аудит должен приводить к проверяемому исправлению
Учебные исследования проводят на собственной лабораторной системе или в явно согласованных границах проверки. Хороший отчёт содержит исходные полномочия, необходимое условие, затронутую границу доверия и минимальное исправление. Часто задача состоит в сужении делегирования, исправлении владельца или прав, обновлении компонента и устранении зависимости от изменяемых данных. Изменения проверяют вместе с работоспособностью: запретить всё проще, чем сохранить нужную операцию с минимальными полномочиями. Секреты и содержимое чужих файлов не нужны для объяснения большинства ошибок конфигурации.
Попробуйте на практике
Разберите вымышленную схему доступа на бумаге. Пользователь может изменять настройки отчёта, а служба с более широкими полномочиями читает эти настройки для формирования документа.
- Запишите, какие действия нужны обычному пользователю, а какие действительно должна выполнять служба.
- Отметьте объекты, которые может изменять пользователь: файл настроек, его каталог и параметры будущего отчёта.
- Сформулируйте неизвестное: какие поля читает служба и проверяет ли она допустимые значения перед использованием.
- Предложите ограничение, соответствующее задаче, например фиксированный набор безопасных параметров и защиту служебной конфигурации от записи.
- Опишите два критерия проверки: обычный отчёт продолжает создаваться, а неподдерживаемые параметры отклоняются без доступа к посторонним ресурсам.
Как проверить результат. В разборе указана конкретная граница доверия и отделены наблюдения от предположений. Исправление сохраняет нужную функцию и не требует демонстрировать захват чужой системы.
Частые вопросы
Любой файл с setuid означает уязвимость?
Нет. Это механизм с законными назначениями. Риск оценивают по поведению программы, её происхождению, актуальности и взаимодействию с данными, которыми может управлять менее привилегированный пользователь.
Почему недостаточно знать версию Linux?
Поведение зависит также от конфигурации, правил делегирования, прав объектов и состояния конкретных компонентов. Номер версии помогает в проверке, но не заменяет анализ условий.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.