Переполнение буфера
Изъян переполнения полей
У читателя может возникнуть вопрос, "Действительно ли можно взломать Web-сервер, пользуясь только Web-браузером?" На этот вопрос можно ответить вполне определенно: "ДА". Программисты в Web в первую очередь заботятся о производительности, отодвигая вопросы безопасности на второй план. Лучше всего это видно на примере ошибки, возникающей при переполнении буфера на сервере Cold Fusion, которая была обнаружена группой Foundstone. Проблема заключается в том, каким образом компания Allaire реализовала проверку достоверности входных данных, которые вводятся в поле пароля администратора. Пользуясь недостаточно полной очисткой этого поля, взломщик с помощью одного браузера может практически полностью вывести Web-сервер из строя. Вот как это можно сделать.
- Введите в браузере адрес страницы регистрации администратора в системе на типичном сервере Cold Fusion:
- С помощью соответствующей команды (в браузере Netscape – это File › Edit Page) перейдите в режим редактирования кода HTML.
- Дважды щелкните на дескрипторе ACTION (верхний левый) и измените его, вставив имя/адрес URL сервера:
<form Action="http://192.168.51.101/CFIDE/administrator/index.cfm" Method="POST">
- Измените дескриптор HTML с именем PasswordProvided, который содержит пароль, а затем измените свойства size и MAXLENGTH:
<input Name="PasswordProvided" Type="PASSWORD" Size="1000000" MAXLENGTH="1000000">
- Щелкните на кнопке Preview, расположенной на панели инструментов Netscape, и сохраните этот файл в формате HTML.
- Поле ввода пароля теперь должно расшириться вправо и выйти за границы экрана. Сгенерируйте около 1.000.000 символов и скопируйте их в это поле.
- Щелкните на кнопке Password. Если все прошло хорошо (или плохо, если вы являетесь системным администратором), то можно будет увидеть следующее:
На приведенном рисунке можно увидеть, что выполненные выше действия привели к подъему использования процессора сервера до 100%. Если подобные запросы продолжают поступать то, в конце концов, произойдет переполнение памяти. Более того, если на сервер отправить больше миллиарда символов, это окончательно выведет его из строя. В любом случае, для выяснения причины сбоя придется перезагружать систему.
Контрмеры
Единственным эффективным решением проблемы подобного рода является использование в каждой разрабатываемой программе процедуры очистки входных данных. В рассмотренном случае можно переместить страницу администратора в какой-то другой каталог или выполнить рекомендации по обеспечению безопасности сервера Cold Fusion, которые можно найти по адресу http://www.allaire.com/Handlers/index.cfm?ID=10954&Method=Full.