Общие сведения об угрозах безопасности веб-приложений

Visual Studio 2010

Обновлен: Ноябрь 2007

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

Более подробные советы и рекомендации по написанию безопасного кода и защите приложений приведены в книге «Защищенный код» Майкла Ховарда и Дэвида Леблана, а также на веб-узле Шаблоны и методики Майкрософт (на английском языке).

Реализация технологий обеспечения безопасности является лишь частью решения проблемы. Второй важной составляющей является бдительность. Даже при наличии в системе множества мер безопасности за ней необходимо постоянно наблюдать:

  • Следует проверять журналы системных событий. Необходимо обращать внимание на частые попытки входа в систему или на большое число запросов к веб-серверу.

  • На сервере следует регулярно устанавливать последние обновления системы безопасности для Microsoft Windows и IIS, а также любые обновления Microsoft SQL Server или других источников данных, которые могут использоваться в приложении.

Важной составляющей при разработке безопасного приложения является осознание возможных угроз. Компания Майкрософт разработала способ категоризации угроз: подмена идентификаторов, подделка данных, отказ, утечка информации, отказ в обслуживании и несанкционированное получение прав (STRIDE). В приведенных ниже разделах содержится описание этих угроз и их воздействия на веб-приложения.

Подделка идентификаторов

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

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

Подделка данных

Подделка данных подразумевает неавторизованное изменение или удаление ресурса. Примером может служить искажение внешнего вида веб-страницы, когда пользователь-злоумышленник получает доступ к веб-узлу и изменяет файлы. Косвенным способом подделки данных являются сценарные эксплойты. Пользователю-злоумышленнику удается запустить код (сценарий), маскируя его как данные, вводимые пользователем на странице, или как ссылку.

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

Отказ

Угроза отказа подразумевает выполнение транзакции таким образом, чтобы вовлечение определенных участников в транзакцию осталось недоказуемым. В веб-приложении это может означать использование учетных данных невиновного пользователя. Защита от отказа обеспечивается строгой проверкой подлинности. Кроме того, следует использовать функции журнализации Windows, чтобы отслеживать действия, выполняемые на сервере.

Утечка информации

Утечка информации заключается в краже или разглашении частной информации. Классическим примером является кража паролей, но раскрытие информации может также заключаться в доступе к файлам или ресурсам сервера.

Лучшим способом защиты от утечки информации является устранение уязвимой информации. Например, если не сохранять пароли, то пользователи-злоумышленники не смогут их украсть. Альтернативой сохранению паролей может служить сохранение только их хэшей. Когда пользователь вводит свои учетные данные, его пароль можно хэшировать и впоследствии сравнивать только хэши паролей. Если важная информация все же сохраняется, следует использовать систему безопасности Windows для ее защиты. Как обычно, необходимо использовать проверку подлинности, чтобы гарантировать, что доступ к закрытой информации получают только авторизованные пользователи. При необходимости предоставления конфиденциальных сведений рекомендуется шифрование сведений при сохранении и использование протокола SSL для шифрования сведений при обмене ими с обозревателем.

Отказ в обслуживании

Цель атак типа «отказ в обслуживании» заключается в снижении уровня доступности приложения по сравнению с ожидаемым. Типичным примером является перегрузка веб-приложения с целью отказа в обслуживании обычным пользователям. В качестве альтернативы пользователи-злоумышленники могут просто предпринять попытку вызвать сбой сервера.

Службы IIS позволяют снижать скорость приложений, ограничивая количество обслуживаемых запросов. Можно отказывать в доступе заведомо злонамеренным пользователям или IP-адресам. Поддержка работоспособности приложения обеспечивается выполнением надежного кода. Необходимо тщательно тестировать приложение и при необходимости принять меры, необходимые для устранения ошибок.

Несанкционированное получение прав

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

Чтобы защититься от такого вида атак, следует запускать приложение в контексте с минимальными правами, если это возможно. Например, не рекомендуется запускать приложения ASP.NET с использованием административной учетной записи SYSTEM.

Показ: