Как защитить приложения на Python Flask
Узнать большеМежсайтовый скриптинг (Cross-Site Scripting, XSS) – одна из самых популярных уязвимостей, которая регулярно попадает в список OWASP Top 10 и с которой часто сталкиваются разработчики и ИБ-специалисты во многих компаниях. Разберемся, в чем ее опасность и как ее обнаружить.
Что такое межсайтовый скриптинг?
Эта уязвимость связана с внедрением фрагмента вредоносного кода в приложение с последующим исполнением различных скриптов, которые не являются доверенными и вводят пользователя в заблуждение. Опасность межсайтового скриптинга связана с получением злоумышленниками доступа к конфиденциальной информации пользователей, которую они могут использовать в преступных целях.
В рамках межсайтового скриптинга пользователь, сам того не зная, выполняет привычные для себя действия и при этом подвергает опасности свои персональные данные, поскольку злоумышленники внедрили в эту страницу вредоносный JavaScript-код, который не был предусмотрен изначально и выполняется каждый раз при посещении ресурса. Чаще всего подобная атака реализуется через браузер пользователя. Вредоносный скрипт может работать в автоматическом режиме: активироваться при загрузке определенных страниц или при действиях мышью, быть заложенным в гиперссылки. Не исключен вариант «лобовой атаки» посредством сообщений и рассылок на электронный ящик пользователя. Примеры межсайтового скриптинга разнообразны, он может быть реализован в следующих вариантах:
- Обман пользователя, перенаправление его на подложный сайт с целью кражи данных.
- Запись действий пользователя при работе с клавиатурой для подбора комбинаций логина и пароля.
- Заражение пользовательского устройства вредоносным кодом, дальнейший перехват управления.
- Перехват идентификационных данных пользователя, введенных в подложных формах.
- Запуск закладок, уязвимостей приложения, приводящих к системным сбоям работы программного обеспечения (ПО), информацию о которых собирают и накапливают злоумышленники.
В чем опасность XSS
- Манипуляция пользователем. Злоумышленник вводит в заблуждение пользователя и вынуждает его выполнять потенциально опасные действия, например раскрыть пароль и другие данные.
- Похищение идентификационных данных пользователя, получения доступа к базам данных. Злоумышленник крадет токен сессии для авторизации в системе, действует от лица пользователя, располагая его правами доступа.
- Компрометация конфиденциальной информации. Преступник может легко получить доступ к любой информации в системе, используя профиль администратора.
- Высокие риски потери данных в информационной системе. Располагая правами доступа к базам данных, киберпреступник может модифицировать или уничтожить исходную информацию, чтобы скрыть свои действия или навредить компании.
Типы XSS
- Хранимый (Persistent). Угроза сопровождается внедрением скрипта непосредственно на сервер, что приводит к его регулярному исполнению, когда пользователь переходит на оригинальную страницу. Уязвимость связана с некорректной фильтрацией данных ввода с последующим их сохранением на сервере или же их записью и показом в браузере. В качестве примера можно рассматривать формы ввода данных и комментариев на форумах, блогах либо свободно передаваемые ссылки, которые при исполнении запускают вредоносный скрипт.
- Отраженный (Reflected). При такой схеме реализации межсайтового скриптинга вредоносный код входит в часть запроса и отправляется на сервер. При получении обратного ответа сервера происходит подмена данных из запроса. Угроза реализуется путем направления пользователю вредоносных ссылок или рассылки фишинговых писем. Такой вариант XSS требует доставки скрипта каждому пользователю по отдельности, т. к. не является автоматически исполняемым кодом и используется преимущественно в социальных сетях и мессенджерах.
- На базе DOM. Здесь речь идет об эксплуатации объективной модели документа (Document Object Model, DOM), т. е. атака не затрагивает HTML. Злоумышленники получают нужные им данные только в среде выполнения или в ходе изучения DOM-модели. Подобные атаки проводятся преимущественно на стороне пользователя и не требуют отправки вредоносного скрипта на сервер для исполнения. Такой подход маскирует действия киберпреступника и затрудняет своевременное обнаружение угрозы. Входными точками для инициирования атаки выступают адреса страниц исходного веб-ресурса или страниц перехода.
Методы эксплуатации XSS
- Подмена «<script>» на пустую строку. При реализации подобной схемы фильтрация обходится за счет сознательной подмены строки. Например, «<script>» на «<SCRIPT>». Поменяв регистр, злоумышленник обходит фильтрацию и выполняет нужные ему действия. Также возможен вариант, когда используется alert(“XSS”) для обхода фильтрации, но этот способ не всегда работает, потому что часто присутствует блокировка на основе проверки ключевых слов, куда включен XSS.
- Обход «Magic quotes». Этот способ обмана фильтрации связан с игнорированием использования специальных символов вроде «\». Злоумышленник может прописать какое-то значение переменной, после чего произвести ее выполнение. Либо посредством базовой функции он может преобразовать числовой параметр в ASCII-код. Достаточно будет только знать название функции, к которой привязаны числовые значения. Эти способы позволяют легко обойти фильтрацию на основе Magic quotes (автоматического экранирования входных данных скрипта).
Защита от межсайтового скриптинга основывается в первую очередь на регулярном контроле безопасности ПО, благодаря которому можно своевременно выявлять эту и другие уязвимости на всех этапах разработки. Для этой цели подходят инструменты для анализа кода. Например, Solar appScreener позволяет пользователю выполнить глубокую проверку приложения с помощью нескольких методов анализа на разные виды угроз: ошибки кода при его создании, программные закладки, недекларированные возможности и другие. Решение помогает обнаружить уязвимости в коде и дает подробные рекомендации по их устранению.