Принципы электротехники
Роль брандмауэров в защите от атак с использованием межсайтового скриптинга (xss)
Table of Contents
Понимание межсайтового скриптинга (XSS) - больше, чем просто впрыск сценария
Межсайтовый скриптинг (XSS) остается одной из наиболее распространенных уязвимостей веб-приложений, постоянно появляющихся в десятке лучших OWASP. По своей сути XSS позволяет злоумышленнику вводить вредоносные клиентские скрипты на веб-страницы, просматриваемые другими пользователями. Введенный скрипт выполняется в контексте браузера жертвы, позволяя кражу данных (куки, токены сеанса), захват сеанса, искажение или перенаправление на фишинговые сайты. Чтобы понять, как помогают брандмауэры - и где они не дотягивают - мы должны сначала различить три основных типа XSS:
- Хранимый (Persistent) XSS — Вредоносный скрипт постоянно хранится на целевом сервере (например, в базе данных, поле комментариев или посте на форуме).Каждый пользователь, который посещает затронутую страницу, выполняет полезную нагрузку.
- Отраженный (непостоянный) XSS — Введенный скрипт отражается от веб-сервера, как правило, через созданный URL или форму представления. Полезная нагрузка не сохраняется; он выполняется только тогда, когда жертва нажимает вредоносную ссылку.
- XSS на основе FLT:0 — уязвимость полностью существует в коде на стороне клиента браузера. Полезная нагрузка атаки никогда не отправляется на сервер; вместо этого она изменяет среду DOM и выполняется оттуда. Эти атаки могут быть невидимыми для защиты на стороне сервера.
Каждый тип представляет уникальные проблемы для управления безопасностью. Брандмауэры - особенно брандмауэры веб-приложений (WAF) - могут предложить сильную защиту от отраженных и некоторых сохраненных XSS, но XSS на основе DOM требует дополнительных мер на стороне клиента.
Что такое брандмауэр в современной веб-безопасности?
Первоначально брандмауэры были сетевыми устройствами, которые фильтровали трафик на основе IP-адресов, портов и протоколов. Сегодня этот термин охватывает ряд систем безопасности:
- Сетевые брандмауэры — работают на уровнях 3-4 (IP, TCP/UDP). Они могут блокировать известные вредоносные IP-адреса или ограничивать порты, но они проверяют мало данных на уровне приложений.
- Веб-приложения брандмауэров (WAF) — устройства уровня 7, предназначенные для проверки трафика HTTP/HTTPS, анализа содержимого запроса (заголовки, тело, параметры URL) для вредоносных шаблонов.
- Облачные брандмауэры (включая WAF-as-a-Service) — Примеры включают AWS WAF, Cloudflare WAF и Azure Application Gateway. Они предлагают масштабируемость, низкую задержку и часто интегрируются с CDN.
Все брандмауэры работают по набору правил, но только брандмауэры, осведомленные о приложениях (WAF), могут осмысленно противостоять XSS.
Как брандмауэры (WAF) обнаруживают и блокируют XSS
Обнаружение на основе подписи
Большинство WAF поставляются с заранее определенными подписями, которые соответствуют известным полезным нагрузкам XSS - например, шаблоны, такие как , , или закодированные варианты. Брандмауэр блокирует любой запрос, полезная нагрузка которого запускает подпись. Базы данных подписей регулярно обновляются поставщиками для покрытия новых векторов атаки.
Однако обнаружение на основе подписи можно избежать простой запутывания: используя различные кодировки, расщепляя ключевые слова или вводя нежелательные символы. Злоумышленники часто мутируют полезную нагрузку, пока она больше не будет соответствовать подписи, оставаясь функциональной в браузере.
Аномалия- и эвристическое обнаружение
Усовершенствованные WAF используют машинное обучение или статистические модели для обнаружения ненормальных моделей. Они изучают типичную структуру действительных запросов для каждой конечной точки и отклонений флага - например, обычно числовой параметр, внезапно содержащий HTML-теги. Эвристические правила могут ловить векторы XSS нулевого дня, которые не имеют известных сигнатур, но они также рискуют ложными срабатываниями.
Ограничение ставок и поведенческий анализ
Некоторые ВАФ отслеживают скорость запроса. Злоумышленник, быстро прощупывающий множество полезных нагрузок, может быть временно заблокирован. Хотя это не обнаруживает непосредственно XSS, это замедляет автоматическое сканирование и может заставить злоумышленников поворачиваться к более медленному ручному тестированию.
Конкретные механизмы защиты на уровне брандмауэра
- Вводная валидация и фильтрация — WAF проверяет каждый параметр, файл cookie и заголовок. Известные опасные символы (]) кодируются или блокируются до того, как они достигают сервера приложений.
- Осведомленность о кодировании на выходе — Современные WAF могут соотноситься с тем, где пользовательский ввод оказывается в ответе (например, внутри тега сценария против атрибута HTML) и применять контекстно-специфические правила. Этот уровень интеллекта встречается редко, но ведущие поставщики, такие как F5 и Imperva, предлагают его.
- Виртуальное патчирование — При обнаружении уязвимости XSS на стороне сервера, но не может быть немедленно исправлена, WAF может создать виртуальный патч: пользовательское правило, которое блокирует путь эксплойта без изменения кода приложения.
- Запросить нормализацию — WAF часто декодируют несколько слоев кодирования (URL-код, Unicode, двойной код) перед проверкой подписей, препятствуя базовой обфускации.
Ограничения брандмауэров против XSS — где они не работают
В обход WAF
Определенные злоумышленники регулярно разрабатывают обходы. Общие методы включают:
- Использование альтернативных событий JavaScript вне классических / наборов — например, с .
- Использование SVG, , или других элементов HTML, которые могут выполнять скрипты.
- Использование несоответствий между WAF и браузером (например, атаки UTF-7 исторически обходили фильтры только ASCII).
- Разбивка полезной нагрузки по нескольким параметрам запроса или использование кодирования HTTP-схемы для контрабанды контента через механизм проверки.
DOM-Based XSS — невидимый для большинства брандмауэров
XSS на основе DOM никогда не касается сервера. Уязвимый клиентский JavaScript считывает данные из , или локального хранилища и записывает их небезопасно в DOM. Брандмауэр на стороне сервера видит только законный запрос; вредоносное исполнение происходит полностью в браузере. Защита требует мер безопасности на стороне клиента, таких как строгая политика безопасности контента (CSP) и надежные библиотеки санации на стороне клиента.
Зашифрованный трафик (HTTPS)
В то время как современные WAF могут расшифровать TLS для проверки простого текста, это добавляет задержку и требует надлежащего управления сертификатами. Некоторые небольшие развертывания могут пропустить проверку на конечных точках с высоким трафиком, оставляя слепое пятно.
Лучшие практики: брандмауэры как часть многоуровневой защиты
Опираясь исключительно на ВСФ, рискованно. Самая эффективная стратегия профилактики XSS сочетает в себе четыре линии обороны:
1. Безопасная разработка и усилие; Серверная санитария
Все предоставленные пользователем данные должны быть проверены, дезинфицированы или удалены, прежде чем вставляться в ответы HTML. OWASP предоставляет проект Java Encoder Project и руководство по кодированию вывода в различных контекстах (тело HTML, атрибут, URL, JavaScript, CSS).
2. Политика безопасности контента (CSP)
CSP - это механизм безопасности уровня браузера, который сообщает браузеру, какие источники скриптов разрешены, и разрешены ли встроенные скрипты. Строгий CSP может блокировать все, кроме самого постоянного XSS на основе DOM. WAF может помочь обеспечить соблюдение CSP путем впрыска или изменения заголовка ответа, но сам CSP является защитным слоем, который WAF не может заменить.
3. Регулярное исправление и обновление
Базы правил брандмауэра должны обновляться по мере появления новых вариантов XSS. Аналогично, серверное программное обеспечение (веб-серверы, рамки приложений) должно быть исправлено, чтобы устранить первопричину уязвимостей XSS. Виртуальное исправление покупает время, но оно не заменяет исправление кода.
4. Образование и тестирование в области безопасности
Разработчики и инженеры по безопасности должны понимать, как XSS работает за пределами WAF. Регулярное тестирование на проникновение (включая ручное тестирование) и обзоры кода выявят шаблоны обхода, которые WAF пропустил. Такие инструменты, как OWASP ZAP или Burp Suite, могут дополнять журналы брандмауэра.
Выбор правильного брандмауэра для защиты XSS
Не все файрволы равны. При выборе WAF учитывайте:
- Утонченность обнаружения — Использует ли он как подписи, так и поведенческую эвристику? Поддерживает ли он автоматическую ложноположительную настройку?
- Простота виртуального патча — Можно ли легко добавить пользовательские правила для блокировки недавно обнаруженной CVE?
- Влияние на производительность — WAF, который добавляет задержку > 5 мс по каждому запросу, может не подходить для сайтов с высоким трафиком.
- Управляемые по сравнению с самохостингом — Облачные WAF (Cloudflare, AWS WAF) часто имеют более низкие эксплуатационные накладные расходы и автоматически обновляют свои наборы правил.
Реальный пример: Инцидент Twilio XSS 2022 года
В 2022 году сохраненная уязвимость XSS на панели управления электронной почтой Twilio SendGrid позволила злоумышленникам вводить поддельные подсказки для входа, которые похищали учетные данные внутренних пользователей. Полезная нагрузка была запутана, чтобы избежать подписей WAF SendGrid. Нарушение продемонстрировало, что даже крупные компании со зрелыми развертываниями WAF могут быть поражены XSS, когда злоумышленник настраивает полезную нагрузку, а WAF не имеет глубокой проверки JavaScript-контекста. Анализ после инцидента подчеркнул необходимость сочетания CSP, сильного ухода с сервера и настройки WAF.
Заключение
Брандмауэры — в частности, брандмауэры веб-приложений — являются незаменимым компонентом стратегии защиты от атак межсайтового скриптинга. Они преуспевают в автоматической фильтрации хорошо известных полезных нагрузок XSS и могут обеспечить быстрые виртуальные исправления для непатчированного кода. Однако они не являются серебряной пулей. Злоумышленники продолжают находить творческие способы обхода правил, основанных на подписи, и XSS на основе DOM в значительной степени уклоняется от проверки на стороне сервера. Наиболее устойчивый подход сочетает в себе хорошо настроенный WAF с безопасными методами кодирования, строгой политикой безопасности контента, регулярными обновлениями программного обеспечения и постоянным тестированием безопасности. Рассматривая брандмауэр как сильный внешний слой, а не единственную защиту, организации могут значительно снизить риск компрометации XSS своих пользователей и данных.