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

Служба компьютерной безопасности предупреждает!

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

Уязвимость приложения сильно увеличивается, если в нем не предусмотрена защита от неверных входных данных. Список уязвимостей можно найти в описании любого сканера CGI (cgichk, whisker и т. д.). (CGI (Common Gateway Interface) – общий шлюзовой интерфейс. Разработанный NCSA сетевой стандарт, предназначенный для создания серверных приложений HTTP.) Большинство известных сканеров CGI уязвимы к атакам, основанным на вводе входных данных в непредусмотренном формате.

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

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

Три класса атак основаны на непредвиденных входных данных.

1. Переполнение буфера. Когда злоумышленник вводит больше данных, чем предусмотрено разработчиком, то приложение может неправильно обработать избыточные данные. Языки С и С++ являются примером языков программирования, написанные на которых программы никак не отреагируют на избыточные данные, если программист не предусмотрел их обработку. Языки программирования Perl и PHP автоматически справляются с избыточностью данных, увеличивая размер области для хранения переменных. (Дополнительные сведения по переполнению буфера приведены в главе 8.)

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

3. Изменение логики работы приложения. Иногда входные данные представляются в формате, способно изменить логику работы приложения. Например, в результате представления данных в особом формате может быть нарушена работа алгоритмов аутентификации, изменены запросы языка структурированных запросов SQL (Structured Query Language – международный стандартный язык для определения реляционных баз данных и доступа к ним), а также получен доступ туда, куда обычно злоумышленник получить доступ не может.

Следует отметить, что четкой границы между этими классами атак нет. Поэтому некоторые атаки могут одновременно принадлежать нескольким классам одновременно.

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

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