В рамках данного раздела мы поговорим с вами о безопасности веб-серверов, а точнее постараемся внести ясность и создать некое подобие современной классификации веб-угроз. Предпосылки к созданию подобной классификации очевидны. За последние несколько лет индустрия безопасности веб-приложений адаптировала немалое количество не совсем точных терминов, описывающих уязвимости. Такие названия уязвимостей, как "подделка параметров" (Parameter Tampering), "меж-сайтовое выполнение сценариев" (Cross-site Scripting) и "отравление печений" (Cookie Poisoning) (да-да, именно так), мягко говоря, не совсем точно определяют суть проблемы и возможные последствия атак. Отсутствие четкости в определениях часто вызывает проблемы и взаимонепонимание, даже если стороны согласны с основной идеей.
Когда начинающий специалист безопасности веб-приложений приступает к обучению, его быстро вводит в заблуждение отсутствие стандартного языка. Подобная ситуация не только не способствует профессиональному овладению предметом, но и замедляет понимание картины в целом. Появление классификации угроз безопасности веб-приложений является исключительно важным событием в мире IT.
По известным причинам только система знаний, а не ее разрозненный, дискретный вариант, может служить показателем высшей квалификации разработчиков приложений, специалистов в области безопасности, производителей программных продуктов. На основе классификации в дальнейшем могут быть созданы методики обследования приложений, рекомендации по разработке приложений с учетом безопасности, требования к продуктам и службам. Следующая классификация есть результат проработки различных книг, десятков статей и презентаций. У ее истоков стоит Web Application Security Consortium, представители которой создали базу для разработки и популяризации стандартной терминологии описания подобных проблем (www.webappsec.org).
Представленная классификация окажется полезной прежде всего специалистам, хотя в целом материал направлен на широкий круг читателей, интересующихся проблемами компьютерной безопасности.
Классы атак
Современная классификация имеет иерархическую структуру. Классы атак разбиты по пунктам (1; 2 и т. д.) с соответствующими подпунктами (1); 2) и т. д.). Название класса атаки представлено как в русском варианте, так и в английском.
1. Аутентификация (Authentication):
1) подбор (Brute Force);
2) недостаточная аутентификация (Insufficient Authentication);
3) небезопасное восстановление паролей (Weak Password Recovery Validation).
2. Авторизация (Authorization):
1) предсказуемое значение идентификатора сессии (Credential/Session Prediction);
2) недостаточная авторизация (Insufficient Authorization);
3) отсутствие тайм-аута сессии (Insufficient Session Expiration);
4) фиксация сессии (Session Fixation).
3. Атаки на клиентов (Client-side Attacks):
1) подмена содержимого (Content Spoofing);
2) межсайтовое выполнение сценариев (Cross-site Scripting, XSS);
3) расщепление HTTP-запроса (HTTP Response Splitting).
4. Выполнение кода (Command Execution):
1) переполнение буфера (Buffer Overflow);
2) атака на функции форматирования строк (Format String Attack);
3) внедрение операторов LDAP (LDAP Injection);
4) выполнение команд операционной системы (OS Commanding);
5) внедрение операторов SQL (SQL Injection);
6) внедрение серверных расширений (SSI Injection);
7) внедрение операторов XPath (XPath Injection).
5. Разглашение информации (Information Disclosure):
1) индексирование директорий (Directory Indexing);
2) идентификация приложений (Web Server/Application Fingerprinting);
3) утечка информации (Information Leakage);
4) обратный путь в директориях (Path Traversal);
5) предсказуемое расположение ресурсов (Predictable Resource Location).
6. Логические атаки (Logical Attacks):
1) злоупотребление функциональными возможностями (Abuse of Functionality);
2) отказ в обслуживании (Denial of Service);
3) недостаточное противодействие автоматизации (Insufficient Anti-automation);
4) недостаточная проверка процесса (Insufficient Process Validation).
Пункт и подчиненные ему подпункты разбиты на разделы. Класс атаки имеет краткое описание и дополняется соответствующим "живым" примером. Ну что ж, начнем по порядку.
Аутентификация
Классифицируем атаки, направленные на обход или эксплуатацию уязвимостей в механизмах реализации аутентификации веб-серверов.