Info-Expert.ru

Уязвимости веб-приложений

Уязвимости веб-приложений

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

Интересный материал на эту тему опубликован Алексеем Лукацким, руководителем отдела Интернет-решений компании "Информзащита" (в настоящее время менеджер по развитию бизнеса Cisco Systems) в журнале BYTE Россия:

«Автор прошелся по Web-сайтам некоторых, в том числе и именитых студий, предлагающих свои (недешевые, заметим) услуги по созданию сайтов, и что же? Ни одна из них не упомянула в своих "портфолио" понятие "защищенный сайт". И в типовых договорах нет ни слова о защите…

Что это - некомпетентность или осознанное нежелание ввязываться в неизвестную, а значит, таящую множество сюрпризов область ИТ? К сожалению, приходится признать, что скорее всего первое. Попробую проиллюстрировать этот тезис, опираясь на личный опыт участия в ряде Интернет-проектов...»

Полный текст статьи опубликован в разделе «Защищенный сайт».

Перечислим некоторые из наиболее часто встречающихся проблем:

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

Межсайтовый скриптинг (XSS)

Межсайтовый скриптинг (Cross Site Scripting или XSS) - это возможность вставки ("инъекции") HTML-кода в уязвимую страницу. Инъекция кода осуществляется через все доступные способы ввода информации. Любое веб-приложение, которое выводит какую-либо информацию, полученную от пользователя, может быть подвержено атакам этого класса. Возможность успешного проведения такой атаки возникает в результате отсутствия фильтрации значений переменных, полученных от пользователя, на наличие скриптов (JavaScript, VBScript) или опасных HTML-тегов. Данный вид атаки может использоваться злоумышленником для перехвата значений cookie различных пользователей (в том числе и администраторов), пользовательских сессий, а так же в некоторых случаях позволяет обойти механизм аутентификации или если поддерживается SSI (Server Side Include), то выполнить произвольную команду на стороне сервера.

Дополнительная информация:

http://www.cgisecurity.com/articles/xss-faq.shtml
http://www.cert.org/advisories/CA-2000-02.html

HTTP Response Splitting

Ошибки HTTP Response Splitting свойственны большинству веб-приложений и являются следствием невозможности правильно обработать пользовательский ввод. Удаленный атакующий может послать специальный HTTP-запрос, который заставит веб-сервер сформировать определенный выходной поток, который примется жертвой за целых два HTTP-ответа (вместо правильного одного). В данном случае только первый HTTP-ответ, который является поддельным, будет обрабатываться жертвой. HTTP Response Splitting позволяет проводить целый ряд атак, таких как отравление веб кэша, подмену страниц, "cross-user defacement", кража пользовательской информации и межсайтовый скриптинг.

Дополнительная информация:

http://www.packetstormsecurity.org/papers/general/whitepaper_httpresponse.pdf

SQL-инъекция

"SQL-инъекция" - способ нападения на базу данных в обход межсетевой защиты. В этом методе, параметры, передаваемые к базе данных через веб-приложения, изменяются таким образом, чтобы изменить выполняемый SQL-запрос. Например, добавляя различные символы к параметру, можно выполнить дополнительный запрос совместно с первым.

Нападение может использоваться для следующих целей:

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

2. Получить доступ к компьютерам организации через компьютер, на котором находится база данных. Это можно реализовать, используя процедуры базы данных и расширения 3GL языка, которые позволяют, например, запускать различные приложения.

Дополнительная информация:

http://www.securitylab.ru/31623.html
http://www.securitylab.ru/42826.html
http://www.securitylab.ru/43048.html
http://www.securitylab.ru/44526.html
http://www.securitylab.ru/40318.html
http://www.securitylab.ru/40714.html
http://www.securitylab.ru/35554.html
http://www.securitylab.ru/38037.html
http://www.securityfocus.com/infocus/1768
http://shiflett.org/php-security.pdf

Code injection

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

Дополнительная информация:

http://www.securitylab.ru/31623.html
http://linux.opennet.ru/base/dev/secure_php_prog.txt.html
http://shiflett.org/php-security.pdf