11.8. Пересечение минного поля безопасности: setuid root

11.8. Пересечение минного поля безопасности: setuid root

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

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

В частности, стоит специально изучить проблемы безопасности Linux/Unix и потратить время на обучение написанию программ setuid root. Если вы сразу нырнете в эту проблему, прочитав лишь эту книгу и ничего более, можно быть уверенным, что ваша система будет взломана, легко и сразу. Маловероятно, что вы или ваши клиенты будут довольны.

Вот несколько руководящих принципов:

• Как можно меньше действуйте в качестве root. Скупо используйте свои чрезвычайные полномочия, лишь тогда, когда это абсолютно необходимо

• Соответствующим образом проектируйте свою программу. Разделите программу на составные части таким образом, чтобы все операции root были выполнены заранее, а оставшаяся программа работала в качестве обычного пользователя.

• При изменении или сбрасывании привилегий используйте setresuid(), если она у вас есть. В противном случае используйте setreuid(), поскольку у этих функций самая чистая семантика. Используйте setuid(), лишь когда вы хотите сделать постоянное изменение.

• Переходите от root к обычному пользователю в соответствующем порядке: сначала установите набор групп и значения GID, затем значения UID. Будьте особенно осторожны с fork() и exec(); действительные и эффективные UID при их вызове не изменяются, если вы не измените их явным образом.

• Рассмотрите использование прав доступа setgid и особой группы для вашего приложения. Если это будет работать, это убережет вас от большой головной боли.

• Рассмотрите отказ от наследуемого окружения. Если вам нужно сохранить некоторые переменные окружения, сохраните как можно меньше. Убедитесь в предоставлении подходящих значений для переменных окружения PATH и IFS.

• Избегайте execlp() и execvp(), которые зависят от значения переменной окружения PATH (хотя это менее проблематично, если вы сами восстанавливаете PATH).

Это просто некоторые из множества тактик по пересечению опасной зоны, известной своими подвохами, минами-ловушками и фугасами. Ссылки на другие источники информации см. в следующем разделе.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.1.3.7. Пароль root

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

1.1.3.7. Пароль root После этого нам нужно установить пароль пользователя root (рис. 1.18). Пользователь root обладает максимальными привилегиями. Его можно сравнить с пользователем Администратор в Windows. Постарайтесь не забыть пароль root. Если вы его забудете, тогда вам стоит


Пересечение

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Пересечение Применение команды INTERSECT позволяет создать новое тело, выделив общую часть заданных объектов. При этом исходные тела после использования команды удаляются. Результат применения операции пересечения к цилиндру и параллелепипеду показан на рис. 11.13. Рис. 11.13.


Открытые поля, приватные поля и открытые свойства

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Открытые поля, приватные поля и открытые свойства Заметим, что в указанных выше классах поля данных были определены открытыми только для того, чтобы упростить пример. Конечно, с точки зрения объектно-ориентированного подхода предпочтительнее использовать приватные


Пересечение

Из книги AutoCAD 2009 для студента. Самоучитель автора Соколова Татьяна Юрьевна

Пересечение Snap to Intersection – привязка к точкам пересечениий объектов (отрезков, окружностей, дуг, сплайнов и т. п.).В случае пространственного моделирования в режиме Intersection допускается привязка к угловым точкам объектов, имеющих ненулевую высоту выдавливания. Если два


Пересечение

Из книги AutoCAD 2009. Начали! автора Соколова Татьяна Юрьевна

Пересечение Snap to Intersection – привязка к точкам пересечениий объектов (отрезков, окружностей, дуг, сплайнов и т.


Пересечение

Из книги AutoCAD 2010 автора Орлов Андрей Александрович

Пересечение Команда INTERSECT позволяет создать новое тело, выделив общую часть заданных объектов. При этом исходные тела после выполнения команды удаляются. Результат применения операции пересечения к цилиндру и параллелепипеду показан на рис. 11.13. Рис. 11.13. Тело,


Общий обзор средств безопасности: дескриптор безопасности

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Общий обзор средств безопасности: дескриптор безопасности Анализ дескриптора безопасности предоставляет хорошую возможность для общего ознакомления с наиболее важными элементами системы безопасности Windows. В этом разделе речь будет идти о самых различных элементах


Пересечение

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

Пересечение Snap to Intersection – привязка к точкам пересечениий объектов (отрезков, окружностей, дуг, сплайнов и т. п.).В случае пространственного моделирования в режиме Intersection допускается привязка к угловым точкам объектов, имеющих ненулевую высоту выдавливания. Если два


Пересечение

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

Пересечение Snap to Intersection – привязка к точкам пересечениий объектов (отрезков, окружностей, дуг, сплайнов и т. п.).В случае пространственного моделирования в режиме Intersection допускается привязка к угловым точкам объектов, имеющих ненулевую высоту выдавливания. Если два


6.1. Учетная запись root

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

6.1. Учетная запись root В Windows мы привыкли, что нам разрешено все. Конечно, не всегда, но в большинстве случаев именно так. В Linux все иначе — максимальными полномочиями обладает только пользователь root. Система полностью подвластна этому пользователю. Внимание! Всегда думайте


Пример 9-5. Я -- root?

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Пример 9-5. Я -- root? #!/bin/bash# am-i-root.sh: Root я, или не root?ROOT_UID=0 # $UID root-а всегда равен 0.if [ "$UID" -eq "$ROOT_UID" ] # Настоящий "root"?then echo "- root!"else echo "простой пользователь (но мамочка вас тоже любит)!"fiexit 0# ============================================================= ## Код, приведенный ниже, никогда не отработает,#+


11.1.2. Биты Setuid и Setgid

Из книги Linux программирование в примерах автора Роббинс Арнольд

11.1.2. Биты Setuid и Setgid Биты setuid и setgid[116] в правах доступа к файлу заставляют процесс принять эффективный UID или GID, который отличается от действительного. Эти биты накладываются на файл вручную с помощью команды chmod:$ chmod u+s myprogram /* Добавить бит setuid */$ chmod g+s myprogram /* Добавить бит setgid


4.8. Получение прав root

Из книги Справка по SQL автора

4.8. Получение прав root Теперь у нас есть достаточно информации о доступе, и мы можем рассмотреть типичный метод взломщика для получения прав root и способы маскировки в системе.Допустим, что злоумышленник приобрел возможность выполнять какие-либо системные команды от имени


Пересечение и разность

Из книги Безопасность информационных систем. Учебное пособие автора Погонышева Дина Алексеевна

Пересечение и разность В стандарте языка SQL имеются предложения оператора SELECT для выполнения операций пересечения и разности запросов. Этими предложениями являются INTERSECT (пересечение) и EXCEPT (разность), которые работают аналогично предложению UNION. В результирующий набор


5.2. Место информационной безопасности экономических систем в национальной безопасности страны

Из книги автора

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