Получить консультацию по Solar appScreener

Практически все веб-приложения имеют потенциальные уязвимости и слабые места. Даже если разработчики направляют максимум усилий на обеспечение безопасности ПО, часть проблем может остаться необнаруженной. Например, в OWASP (рейтинге основных угроз для веб-приложений) на одной из первых позиций — уязвимость Cross site scripting. В статье расскажем о ней и о том, какую опасность она представляет, как ее выявить и предотвратить.

Что такое Cross Site Scripting

Cross Site Scripting — это XSS-уязвимость, связанная с пользовательским вводом. Она нередко встречается в разноплановых веб-приложениях, в том числе используемых для бизнес-целей. Ее эксплуатация позволяет злоумышленникам внедрять не предусмотренный разработчиками ПО JavaScript-код. Внедренный код выполняется каждый раз, когда пользователи приложения посещают страницы, куда он интегрирован.

Если реализована Cross site scripting, ничего не подозревающие пользователи выполняют привычные действия на веб-ресурсах, подвергая опасности персональные и другие конфиденциальные данные.

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

Чтобы успешно реализовать атаку, злоумышленникам необходимо обойти инструменты фильтрации. Примеры, как хакеры эксплуатируют XSS-уязвимость незаметно для средств защиты:

  • Меняют строку «<script>» на «<SCRIPT>». Смена регистра нужна для обхода инструментов фильтрации, которые работают методом анализа ключевых слов.
  • Игнорируют использование специальных символов, например, «\».
  • Преобразовывают числовые значения, привязанные к функциям, в ASCII-код. Таким способом злоумышленникам удается обходить автоматическое экранирование входных данных скриптов.
в чем опасность xss-уязвимости

В чем опасность XSS

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

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

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

Типы атак с использованием уязвимости Cross site scripting

Самые распространенные виды XSS-атак:

  • Хранимые (Persistent). Такие атаки подразумевают сохранение вредоносного кода на сервере, откуда код будет загружаться каждый раз, когда пользователи обращаются к той или иной странице. Подобное возможно на ресурсах, где не фильтруются вводимые пользователями данные, например, в чатах и на форумах, в блогах. Если сайт характеризуется высокой посещаемостью, исполняемый вредоносный скрипт может привести к DDoS-атаке.
  • Отображаемые (Reflected). Атаки, когда вредоносный код становится частью запроса к веб-ресурсу. Вызываемый сайт принимает запрос и отправляет вредоносную строку в ответ пользователю. Эту атаку достаточно сложно реализовать, поскольку пользователей нужно каким-то образом убедить ввести вредоносный скрипт в адресную строку. Чаще всего злоумышленники используют для этой цели приемы социальной инженерии.
  • XSS в DOM-модели (Document Object Model). Это промежуточный вариант между хранимыми и отображаемыми атаками. В этом случае вредоносный код не будет обрабатываться браузером пользователя, пока не выполнится настоящий скрипт веб-ресурса. Входные точки для реализации такой атаки — адреса страниц исходного приложения или адреса страниц, куда будут переходить пользователи.

Cross site scripting-атаки в DOM-модели не затрагивают HTML, для их реализации не нужно отправлять исполняемый вредоносный скрипт на сервер. В связи с этим такую злоумышленную активность сложно обнаружить, поэтому она считается одной из самых опасных.

Как обнаружить XSS-уязвимость и защититься от Cross site scripting

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

Использование Solar appScreener для поиска XSS-уязвимости

Отечественный анализатор позволяет проводить такие типы анализа ПО, как:

  • Static Security Application Testing (SAST) — статическая проверка программного кода без развертывания продукта в рабочей среде. Такое тестирование позволяет практически на сто процентов покрыть программный код и обнаружить максимум ошибок, недекларированных возможностей и слабых мест, в том числе XSS.
  • Dynamic Security Application Testing (DAST) — динамическое тестирование ПО при запуске продукта в среде, максимально имитирующей реальную рабочую. В ходе анализа моделируются различные действия в отношении приложения и проверяется корректность отклика программы. Такое тестирование позволяет найти проблемы и уязвимости, которые возникают уже в ходе эксплуатации ПО, следовательно, не могут быть обнаружены в ходе SAST.
  • Software Composition Analysis (SCA) — исследование состава программных продуктов, при разработке которых применялись компоненты с открытым исходным кодом (Open Source). Такое тестирование помогает обнаружить XSS-уязвимость и другие проблемы в заимствованных фрагментах, найти проблемы с лицензированием.

Чтобы препятствовать атакам Cross site scripting и контролировать безопасность программных продуктов на протяжении всего жизненного цикла, необходимо комбинировать все перечисленные виды анализа. SAST и SCA можно проводить уже с первых этапов разработки, DAST — когда приложение будет частично или полностью готово к эксплуатации.

поиск xss-уязвимости

Преимущества внедрения Solar appScreener для эффективного контроля безопасности ПО

Сильные стороны автоматического анализатора:

  • Возможность найти XSS-уязвимость без участия разработчиков и доступа к исходному коду с помощью динамического тестирования и анализа бинарного кода статическим методом.
  • Алгоритм Fuzzy Logic Engine, благодаря которому минимизируется количество ложных срабатываний анализатора при проведении статического тестирования.
  • Несколько сканеров для осуществления динамического анализа (Fuzzer, традиционный, активный, пассивный и др).
  • Поддержка максимального количества языков программирования (36 языков).
  • Корреляция результатов проведенных тестирований.
  • Предоставление подробных рекомендаций по устранению Cross site scripting и других обнаруженных уязвимостей.

Также к преимуществам можно отнести удобство эксплуатации анализатора, регулярное обновление функций, интуитивно понятный интерфейс, в котором разберутся даже те, кто не имеет отношения к программированию.

ЗАКЛЮЧЕНИЕ

Атаки Cross site scripting с эксплуатацией XSS-уязвимости — распространенный сценарий, если разработчики не обеспечили достаточный уровень безопасности программного продукта. Выявить проблему и предотвратить злоумышленную активность поможет анализатор Solar appScreener, в котором реализованы модули для проведения статического и динамического тестирований, анализа состава приложений.

ДРУГИЕ СТАТЬИ ПРОДУКТА

Еще больше о наших возможностях

Zero Day уязвимость: что такое уязвимость нулевого дня

Zero Day уязвимость: что такое уязвимость нулевого дня

Узнать больше
White Box-тестирование: что это такое, и когда применяется

White Box-тестирование: что это такое, и когда применяется

Узнать больше
Веб-приложения: как контролировать безопасность кода

Веб-приложения: как контролировать безопасность кода

Узнать больше