Как защитить приложения на Python Flask
Узнать большеПрактически все веб-приложения имеют потенциальные уязвимости и слабые места. Даже если разработчики направляют максимум усилий на обеспечение безопасности ПО, часть проблем может остаться необнаруженной. Например, в OWASP (рейтинге основных угроз для веб-приложений) на одной из первых позиций — уязвимость Cross site scripting. В статье расскажем о ней и о том, какую опасность она представляет, как ее выявить и предотвратить.
Что такое Cross Site Scripting
Cross Site Scripting — это XSS-уязвимость, связанная с пользовательским вводом. Она нередко встречается в разноплановых веб-приложениях, в том числе используемых для бизнес-целей. Ее эксплуатация позволяет злоумышленникам внедрять не предусмотренный разработчиками ПО JavaScript-код. Внедренный код выполняется каждый раз, когда пользователи приложения посещают страницы, куда он интегрирован.
Если реализована Cross site scripting, ничего не подозревающие пользователи выполняют привычные действия на веб-ресурсах, подвергая опасности персональные и другие конфиденциальные данные.
В большинстве случаев атаки с использованием XSS-уязвимости реализуются через пользовательские браузеры. Вредоносные скрипты могут активироваться при загрузке веб-страниц, присутствовать в гиперссылках, рассылаться в посланиях на электронную почту.
Чтобы успешно реализовать атаку, злоумышленникам необходимо обойти инструменты фильтрации. Примеры, как хакеры эксплуатируют XSS-уязвимость незаметно для средств защиты:
- Меняют строку «<script>» на «<SCRIPT>». Смена регистра нужна для обхода инструментов фильтрации, которые работают методом анализа ключевых слов.
- Игнорируют использование специальных символов, например, «\».
- Преобразовывают числовые значения, привязанные к функциям, в ASCII-код. Таким способом злоумышленникам удается обходить автоматическое экранирование входных данных скриптов.
В чем опасность 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 — когда приложение будет частично или полностью готово к эксплуатации.
Преимущества внедрения Solar appScreener для эффективного контроля безопасности ПО
Сильные стороны автоматического анализатора:
- Возможность найти XSS-уязвимость без участия разработчиков и доступа к исходному коду с помощью динамического тестирования и анализа бинарного кода статическим методом.
- Алгоритм Fuzzy Logic Engine, благодаря которому минимизируется количество ложных срабатываний анализатора при проведении статического тестирования.
- Несколько сканеров для осуществления динамического анализа (Fuzzer, традиционный, активный, пассивный и др).
- Поддержка максимального количества языков программирования (36 языков).
- Корреляция результатов проведенных тестирований.
- Предоставление подробных рекомендаций по устранению Cross site scripting и других обнаруженных уязвимостей.
Также к преимуществам можно отнести удобство эксплуатации анализатора, регулярное обновление функций, интуитивно понятный интерфейс, в котором разберутся даже те, кто не имеет отношения к программированию.