Троан Эрик В.
Шрифт:
22.2. Минимизация возможности появления атак
Одной из наилучших стратегий по обеспечению безопасности программ перед попытками несанкционированного использования прав доступа является создание отдельных частей программы, которые чрезвычайно легко атаковать. Подобную стратегию иногда трудно воплотить в сетевых программах и системных демонах, однако в тех программах, которые должны запускаться с особыми правами доступа (через биты setuid и setgid либо при активизации привилегированным пользователем), как правило, можно применить несколько алгоритмов для уменьшения их областей уязвимости.
22.2.1. Передача полномочий
Многие программы, которые требуют определенных прав доступа, используют эти права только во время запуска. Например, некоторые сетевые демоны могут активизироваться только привилегированным пользователем для того, чтобы они имели возможность подключиться к резервному порту с помощью функции
Для восстановления полномочий процесса необходимо использовать один или более из следующих методов:
22.2.2. Получение вспомогательной программы
Если программа нуждается в особых полномочиях не только во время первоначального запуска, то неплохое решение проблемы могут предложить вспомогательные программы. Вместо активизации с повышенными правами доступа всего приложения целиком, главная программа работает как стандартный пользователь, запустивший ее, а также активизирует еще одну очень маленькую программу, которая обладает достаточными сертификатами для выполнения требуемой задачи. При проектировании приложения таким способом значительно снижается сложность того кода, который может подвергнуться атаке. Подобное упрощение позволяет легче обнаружить и исправить любые ошибки. Если в главном приложений есть некоторые проблемные места, позволяющие пользователю выполнять произвольные действия, то эти действия можно будет производить только со стандартными пользовательскими сертификатами. Тем самым любые атаки затрагивают только конкретного стандартного пользователя, но не привилегированного.
Применение маленьких вспомогательных программ приобрело широкую популярность в сообществе Linux. Библиотека
Еще одним примером вспомогательной программы может послужить программа
159
Словарная атака — это довольно прямолинейный метод обнаружения паролей, когда автоматическая программа прогоняет огромный список обычных паролей (таких как слова в словаре) до тех пор, пока один из них не подойдет.
Применение вспомогательных программ подобным способом является очень хорошим методом устранения в приложениях возможных проблем безопасности. Создание таких вспомогательных программ, как правило, является достаточно прямолинейным процессом, а их правильность определить относительно просто. Однако в конструкции таких программ есть пара моментов, в которых нужно проявить осторожность.
Довольно часто между главным приложением и вспомогательной программой передаются конфиденциальные данные. Например, для программы
Вспомогательные программы также должны тщательно проверять тот факт, что вызывающая их программа имеет разрешение на выполнение запрашиваемого действия. Вспомогательная программа