Читаем Защита от хакеров корпоративных сетей полностью

Проблемы безопасности возникают преимущественно из-за непредвиденных действий злоумышленника по отношению к приложению c целью обмана системы безопасности, логики работы приложения и т. д. Переполнение буфера происходит при пересылке в него большего количества данных, чем предусматривалось разработчиком программы. В результате изменения запроса SQL в запрос добавляются дополнительные команды SQL. К сожалению, во многих приложениях не предусмотрена даже простейшая фильтрация неверных данных. Похвалы достойны те, которые выполняет ее. Фильтрация данных позволит выиграть отдельные сражения, но не всю войну в целом. Для разработки действительно надежного и безопасного приложения следует сместить центр усилий от «удаления плохого» к «сохранению хорошего». Только тогда приложение сможет противостоять различным неправильным, поврежденным или непредсказуемым либо непредвиденным данным.

Непредсказуемые данные могут поразить любое приложение, начиная от программ c интерфейсом командной строки и заканчивая Web-приложениями интерфейса CGI, работающими в оперативном режиме. Процедуры аутентификации, сравнения данных и формирования SQL-запросов уязвимы по своей сути. Для определения уязвимости приложения широко используется метод «черного ящика», который позволяет найти, или, как некоторые говорят, разгадать, хитроумные уловки в конструкции приложения, изучая реакцию приложения на входные данные. Просмотр исходного текста программ приложения (подход, при котором программный код приложения внимательно анализируется c целью выявления уязвимостей) сулит исследователю больше выгоды.

К счастью, противостояние непредвиденным данным – не та область, где каждый сам за себя. В большинстве из общедоступных языков программирования (Perl, CFML и PHP) предусмотрены средства противодействия непредвиденным и поврежденным данным пользователя. Вдобавок ко всему есть еще дополнительные инструментальные средства, которые оказывают широкий спектр услуг исследователю от анализа исходного текста программ и выявления в нем уязвимостей до оказания помощи по правильному применению метода «черного ящика».

В заключение следует особо отметить, что неверные данные являются серьезной проблемой. Поэтому программистам следует внимательно относиться к вопросам корректной обработки неверных данных пользователя и исключить появление непредвиденных данных.

Конспект

Опасность непредвиденных входных данных

· Почти все приложения взаимодействуют с пользователем, получая от него данные.

· В приложении должен быть предусмотрен контроль действий пользователя.

· Особое внимание в приложении должно быть обращено на предотвращение переполнения буфера, изменение логики работы и контроль данных, передаваемых системным функциям.

Поиск обусловленных непредвиденными входными данными уязвимостей

· Любое приложение, взаимодействующее с пользователем или другим непроверенным приложением, может стать жертвой непредвиденных данных. С непредвиденными данными чаще всего сталкиваются:

– локальные приложения suid/sgid системы UNIX;

– серверы HTTP и другие Web-технологии построения приложений;

– запросы SQL;

– средства аутентификации приложений;

– методы маскировки данных, используемые при построении программ противодействия системам обнаружения вторжения IDS.

Методы поиска и устранения уязвимостей, обусловленных непредвиденными входными данными

· Просмотр исходного текста программы и метод «черного ящика» помогут обнаружить уязвимости и являются главным средством поиска потенциальных проблем.

· С непредвиденными данными можно бороться правильной фильтрацией данных или пропуском неверных символов. Во многие языки программирования (например, Perl, CFML,ASP, PHP и даже API SQL) встроены подобные возможности.

· Полезным средством борьбы с непредвиденными данными или данными неверного формата являются такие уловки программирования, как подмена символа, централизованные функции фильтрации или удаление неверных данных без выдачи диагностических сообщений.

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

· Встроенные средства безопасности многих языков программирования позволяют во всеоружии встретить неверные данные.

· Своевременная установка нужных опций конфигурации (установка режимов проверки «дыр» в Perl или безопасной работы «safe_mode» в PHP, настройки «песочницы» (sandbox) в CFML) поможет предотвратить опасные последствия непредвиденных данных пользователя.

· Соответствующие настройки сервера, например отключение опции Enable Parent Paths информационного сервера Интернет IIS, помогут предотвратить доступ приложения к файлу вне корневой Web-директории.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже