22.2.2. Получение вспомогательной программы
22.2.2. Получение вспомогательной программы
Если программа нуждается в особых полномочиях не только во время первоначального запуска, то неплохое решение проблемы могут предложить вспомогательные программы. Вместо активизации с повышенными правами доступа всего приложения целиком, главная программа работает как стандартный пользователь, запустивший ее, а также активизирует еще одну очень маленькую программу, которая обладает достаточными сертификатами для выполнения требуемой задачи. При проектировании приложения таким способом значительно снижается сложность того кода, который может подвергнуться атаке. Подобное упрощение позволяет легче обнаружить и исправить любые ошибки. Если в главном приложений есть некоторые проблемные места, позволяющие пользователю выполнять произвольные действия, то эти действия можно будет производить только со стандартными пользовательскими сертификатами. Тем самым любые атаки затрагивают только конкретного стандартного пользователя, но не привилегированного.
Применение маленьких вспомогательных программ приобрело широкую популярность в сообществе Linux. Библиотека utempter (обсуждаемая в главе 16) использует вспомогательную setgid-программу для обновления базы данных utmp. Эта программа очень внимательно проверяет правильность аргументов командной строки, а также контролирует, имеет ли вызывающее приложение разрешение на обновление базы данных utmp. Тем программам, которые предусматривают данную службу через вспомогательное приложение utempter, вообще не требуется никаких особых полномочий. До создания этой библиотеки каждая программа, использующая псевдотерминалы, была обязана быть setgid для той группы, которой принадлежит база данных utmp.
Еще одним примером вспомогательной программы может послужить программа unix_chkpwd, которая используется РАМ (Pluggable Authentication Modules — подключаемые модули аутентификации, подробнее рассматривается в главе 28). Пароли в большинстве систем Linux хранятся в файле, доступном для чтения только пользователю root. Это предотвращает словарные атаки на зашифрованные пароли пользователей[159]. Некоторые программы проверяют, действительно ли возле компьютера находится тот пользователь, который вошел в систему (программа xscreensaver может применяться для блокировки экрана до возвращения пользователя), но они обычно работают не как программы root. Вместо того чтобы делать такие программы setuid на root, дабы они могли проверить правильность пользовательского пароля, стандартная аутентификация РАМ Unix вызывает unix_chkpwd для подтверждения пароля. Таким образом, необходимость быть setuid на root существует только для программы unix_chkpwd. Это означает, что потребность создавать xscreensaver как привилегированную программу отпадает, а также что все слабые места в системе безопасности библиотек X11 не допускают локальной эксплуатации.
Применение вспомогательных программ подобным способом является очень хорошим методом устранения в приложениях возможных проблем безопасности. Создание таких вспомогательных программ, как правило, является достаточно прямолинейным процессом, а их правильность определить относительно просто. Однако в конструкции таких программ есть пара моментов, в которых нужно проявить осторожность.
Довольно часто между главным приложением и вспомогательной программой передаются конфиденциальные данные. Например, для программы unix_chkpwd необходимо передавать незакодированный пароль пользователя для подтверждения его правильности. При передаче такой информации нужно принять некоторые меры предосторожности. Очень заманчиво использовать аргумент командной строки, однако это позволит любому пользователю, который в нужное время запустит ps, увидеть незакодированные пользовательские пароли. Если вместо этого для подачи данных применяется канал (обычно указанный в качестве стандартного ввода для вспомогательной программы), то во время передачи ни одна другая программа не сможет увидеть данные.
Вспомогательные программы также должны тщательно проверять тот факт, что вызывающая их программа имеет разрешение на выполнение запрашиваемого действия. Вспомогательная программа unx_chkpwd не позволяет программе проверять пароли ни одного пользователя, кроме того, который ее запустил. Здесь применяется свой собственный uid для подтверждения того, что активизирующая программа может проверять пароль пользователя. Вспомогательная программа utempter выполняет аналогичные проверки для того, чтобы убедиться, что программы не могут удалять терминалы из базы данных utmp, если только они не предназначены делать это.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Копирование файлов с использованием вспомогательной функции Windows
Копирование файлов с использованием вспомогательной функции Windows Для повышения удобства работы в Windows предусмотрено множество вспомогательных функций (convenience functions), которые, объединяя в себе несколько других функций, обеспечивают выполнение часто встречающихся задач
Пулы вспомогательной памяти
Пулы вспомогательной памяти В основе System/38 лежала мысль: локализовать все сведения о дисковых устройствах ниже границы MI. Никакой код выше MI, будь то прикладная программа, или ОС, не должны были владеть какой-либо информацией, даже о том, подключены ли к системе диски.
Каталоги вспомогательной памяти
Каталоги вспомогательной памяти Теперь рассмотрим каталоги, которые поддерживаются и используются компонентом управления вспомогательной памятью для контроля за дисковым пространством.Каталог свободного пространства — это машинный индекс (описанный в главе 6),
21.10. Отправка и получение
21.10. Отправка и получение Программа для получения анонсов сеанса многоадресной передачи, показанная в предыдущем разделе, могла только получать дейтаграммы многоадресной передачи. Теперь мы создадим простую программу, способную и отправлять, и получать дейтаграммы
(8.7) Под W2k не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д..
(8.7) Под W2k не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д.. Многие программы, требующие непрерывного потока данных идущих на или с CD/DVD привод, нуждаются в
Получение ящика
Получение ящика Следует отметить, что ситуация с бесплатным ящиком кардинально отличается от «бесплатного сыра». На самом деле, этот сервис в Сети довольно распространен и функционально практически не отличается от платного. Возможно, работает чуть менее надежно, а в
7.4. Под XP не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д..
7.4. Под XP не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д.. Многие программы, требующие непрерывного потока данных идущих на или с CD/DVD привод, нуждаются в
6.3. Получение помощи
6.3. Получение помощи При работе с программой Midnight Commander практически в любой момент можно обратиться к интерактивной подсказке, вызов которой осуществляется нажатием клавиши ‹F1›. Подсказка организована как гипертекст, т. е. в ее тексте встречаются гипертекстовые ссылки
Получение разрезов
Получение разрезов Команда SLICE осуществляет построение нового тела путем разрезания какого-либо существующего тела плоскостью (рис. 17.3). Команда вызывается из падающего меню Modify ? 3D Operations ? Slice. Рис. 17.3. Формирование разрезаЗапросы команды SLICE: Select objects to slice: – выбрать
Получение приоритета
Получение приоритета В более сложных выражениях, включающих несколько знаков операций, VBA нужно знать, какие операции выполнять первыми, вторыми, а какие третьими. В выражении intA + intB * intC два знака операций: + (операция сложения) и * (операция умножения). На русском это
Получение переменных DOS
Получение переменных DOS Какие функции Windows API позволяют получить переменные DOS?Функция GetEnvironmentStrings возвращает адрес памяти со средой текущего процесса. Все переменные возвращаются в виде строк, оканчивающихся нулем. Набор строк терминируется двумя нулями.Функция
Получение разрезов
Получение разрезов Команда SLICE осуществляет построение нового тела путем разрезания какого-либо существующего тела плоскостью (рис. 14.3). Команда вызывается из падающего меню Modify ? 3D Operations ? Slice. Рис. 14.3. Формирование разрезаЗапросы команды SLICE:Select objects to slice: – выбрать
3.2.4. Удаление программы из меню Все программы
3.2.4. Удаление программы из меню Все программы Иногда нужно удалить ярлык программы из меню Все программы. Заметьте, удаление ярлыка не приводит к удалению программы, программа все еще останется на жестком диске и ее можно запустить, если вы знаете, как называется ее
Получение данных от серверной программы
Получение данных от серверной программы Самый простой способ передать серверной программе данные и сразу же получить от нее результат их обработки — использовать действие loadVariabies или одноименный метод объекта movieClip. Это действие (метод) отправляет данные серверной
4.1.3. Получение почты
4.1.3. Получение почты Для работы с письмами удобно использовать кнопки на панели инструментов (рис. 4.5), каждая кнопка имеет подсказку, по которой становится понятным ее действие. Итак, для получения почты необходимо выполнить следующие действия:1. Нажать на кнопку