ГИС

Межсайтовый скриптинг (XSS) - что это, как работает и есть ли защита?

Межсайтовый скриптинг (XSS) - что это, как работает и есть ли защита?
Межсайтовый скриптинг (XSS) - что это, как работает и есть ли защита?
16.01.2023

Оглавление

  1. Как работает cross-site scripting
  2. Насколько часто встречаются XSS-уязвимости
  3. Межсайтовый скриптинг и хактивизм
  4. Как защититься от межсайтового скриптинга
  5. Заключение

Cross-site scripting (XSS), или межсайтовый скриптинг – это вид атаки, в рамках которого вредоносные скрипты внедряются в контент веб-сайта. Это позволяет хакеру использовать доверенный для пользователя сайт в своих целях, от кражи данных до показа рекламы.

В зависимости от конфигурации и задач злоумышленника, с помощью межсайтового скриптинга можно перехватывать управление сессией, перенаправлять пользователя на вредоносные сайты, «доставлять» ВПО или просто следить за деятельностью пользователя.

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

Как работает cross-site scripting

Межсетевой скриптинг как техника атаки построен на наличии в любом публичном сервисе уязвимостей, которые можно использовать для внедрения вредоносного кода (скрипта). При этом, как правило, обнаруживаются такие «вставки» уже постфактум, когда первые пользователи понесли издержки из-за взаимодействия с зараженным сайтом и «поделились» этой информацией с технической поддержкой ресурса.

Александр Черняков

Ведущий аналитик информационной безопасности Центра противодействия киберугрозам Innostage CyberART

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

Чем больше на сайте полей, с которыми может взаимодействовать пользователь, тем больше вероятность того, что данный сайт может быть опасен с точки зрения межсайтового скриптинга. Сюда можно отнести различные форумы и онлайн-чаты, где каждый желающий может оставить свое сообщение или написать топик.

Ярким примером можно считать ситуацию с чатом популярного среди геймеров видеостримингового сервиса Twitch. На одной из трансляций пользователь под ником Hexxyr обнаружил, что на стороне веб-приложения Twitch нет проверки пользовательского ввода того, что пишется в чат. Тем самым, чат трансляции в какой-то момент превратился в настоящую вакханалию, где каждый из сотен зрителей мог написать небольшой JS-код в сообщении и получить его вывод на экран всех пользователей трансляции. Хорошо, что данная акция не имела катастрофических последствий. Однако если крупные игроки, как Twitch, допускают подобные ошибки, что же стоит говорить о других разработчиках?

Можно выделить два основных вида скриптинга:

1) Постоянный или хранимый XSS. С одной стороны, этот вид скриптинга встречается реже, поскольку требует от взломщика бОльшего количества навыков. С другой стороны – он гораздо опаснее, поскольку злоумышленник получает возможность внедрить вредоносный код на сервер сайта, и скрипт будет активироваться при каждом запросе к странице.

2) Непостоянный или отраженный XSS. Он встречается гораздо чаще и менее «требователен» к навыкам атакующего. Однако, для реализации этого вида скриптинга пользователь должен посетить специально сформированную ссылку, которую злоумышленнику нужно распространить.

Также, ряд специалистов выделяет в отдельную группу XSS-инъекции в DOM-модели, поскольку они не отражаются в HTML и детектировать их сложнее, но реализуется эта уязвимость на стороне клиента, следовательно – практически неприменима для массового распространения.

Евгений Кравцов

Senior Frontend Developer, SberDevices

Сайты, которые недостаточно проверяют входящие данные и не имеют надежных механизмов защиты от межсайтового скриптинга (XSS), являются наиболее уязвимыми. Примеры таких сайтов могут включать:

1. Социальные сети, такие как Facebook и Twitter, где пользователи могут вводить свои собственные данные и делиться ссылками.
2. Форумы и блоги, где пользователи могут размещать свои собственные сообщения и комментарии.
3. Сайты с динамическим контентом, такие как новостные сайты или интернет-магазины, где пользователи могут вводить информацию в формы и размещать объявления.

Важно отметить, что даже крупные и известные сайты могут быть уязвимы к атакам XSS, так как это одна из самых распространенных уязвимостей в Интернете.

С помощью эксплуатации XSS злоумышленник может:

  • перенаправлять пользователя на вредоносные сайты;
  • похитить куки-файлы и другие данные;
  • отслеживать действия пользователя (например, с помощью кейлоггера);
  • украсть токен сеанса и перехватить контроль над сессией;
  • заразить устройство пользователя.

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

Насколько часто встречаются XSS-уязвимости

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

Александр Зубриков

Генеральный директор ITGLOBAL.COM Security

XSS довольно часто встречаются на просторах Интернета. Эта уязвимость ежегодно входит в OWASP Top 10. Он регулярно обновляется, чтобы постоянно отображать 10 наиболее серьезных рисков, с которыми сталкиваются организации. Наряду с другими инъекциями, XSS располагается на 3-ем месте. Также можно обратиться за статистикой к HackerOne. Например, из отчета за 2020 год следует, что около 23% всех найденных уязвимостей приходится на XSS.

Что касается сложности реализации, то здесь очень большой разброс. Встречаются как сложные решения, с большим количеством ограничений при эксплуатации, так и простейшие, которые эксплуатируются «как по учебнику». Но если попытаться усреднить, то реализовать XSS несложно.

В рамках классического цикла разработки ключевым «мерилом» успешности работы разработчика принято считать эффективность. Чем быстрее, стабильнее и оптимизированнее работает приложение – тем оно лучше. Как правило, разработчики «страхуют» сервис от каких-то «случайных» действий пользователя и редко закладывают риск, что сайт привлечет внимание «юного любителя кинуть скобку» или же настоящих хакеров.

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

Межсайтовый скриптинг и хактивизм

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

В этом контексте межсетевой скриптинг привлекателен сразу по нескольким причинам:

1. Массовость. В рамках скриптинга можно привлечь большое количество людей для поиска и изучения целей.

2. Элементы автоматизации. Существуют программы-анализаторы (например XSStrike) которые позволяют находить «в один клик» типовые уязвимости. Также, есть и готовое ПО для их эксплуатации (BeEF), в том числе – в виде эксплоитов, которыми могут «поделиться более опытные коллеги».

3. Относительная простота. Отраженный XSS вполне подходит для массового освоения людьми с «непрофильными» навыками, которые только начинают свой путь в хакинге.

4. Возможности для демонстрации. Те ресурсы, которые не интересны «коммерческим» хакерам, поскольку их взлом плохо монетизируется, вполне подойдут хактивистам для политических заявлений и демонстрации своих идей на более широкую аудиторию.

XSS – это одна из наиболее вероятных техник, которую могут освоить хактивисты. Вероятно, в этом году можно ожидать появления «авторских» вредоносных скриптов от ведущих хактивистских сообществ.

Как защититься от межсайтового скриптинга

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

Владимир Зуев

Руководитель коммерческого SOC МегаФона

Найти подходящий сайт для вредоносного воздействия можно достаточно легко, поэтому владельцам веб-приложений еще на уровне дизайна бизнес-процессов необходимо обращать внимание на контроль входящих данных и использовать наложенные средства защиты.

Минимизировать уязвимость сайтов можно с помощью сервиса МегаФона WAF (Web Application Firewall), который помогает фильтровать попытки воздействия на сайт, в том числе на уровне приложения. А пентест, проведенный профессиональной командой, позволяет проанализировать ресурс на разных уровнях, выявить уязвимости операционной системы, баз данных, приложений, а также сформировать подробный отчет по уровням выявленных уязвимостей и способах их устранения.

Продвинутым уровнем станет комплексный подход – комбинация мер на всех этапах жизненного цикла и применение практик безопасной разработки.

С точки зрения бизнеса, первейшие меры – это аудит исходного кода и внедрение SSDLC-практик. Для зрелых, с позиции ИБ, компаний, целесообразно использовать разные средства анализа защищенности, от пентеста до участия в bug bounty.Если же говорить о безопасности пользователя, то главные способы защиты – это осознанность и внимательность.

Сергей Нейронов

CIO AtreIdea

Пользователи могут обезопасить себя от атак с помощью межсайтового скриптинга следующими способами:

1. Использование надежного браузера. Большинство современных браузеров содержат функции безопасности, которые могут защитить от некоторых XSS.
2. Использование дополнений браузера. Дополнения браузера, такие как, например, NoScript, могут блокировать небезопасные скрипты и также защитить вас от XSS.
3. Обновление ПО. Важно убедиться, что ваш браузер своевременно обновляется, так как в свежих версиях постоянно совершенствуются механизмы защиты, в том числе, от подобных проблем.

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

Заключение

Межсайтовый скриптинг и XSS-уязвимости не первый год держатся в топе по уровню опасности и актуальности, которые составляют ведущие компании отрасли и исследовательские агентства.

Главное средство защиты от скриптинга с точки зрения пользователя – это постоянная внимательность к ссылкам, поскольку столкнуться с ним можно даже на самом популярном и доверенном ресурсе.

Валерий Степанов

Руководитель направления Центра компетенций по информационной безопасности Т1 Интеграции

Один из простых способов обезопасить себя от атаки с помощью межсайтового скриптинга — тщательно проверять ссылки, на которые вы нажимаете при просмотре веб-страниц или в теле электронных писем. Нужно быть бдительным, например, если вы видите ссылку вида http://yandx-1.ru, весьма вероятно, что злоумышленник пытается убедить пользователя о переходе на известный сайт. 

В условиях набирающего популярность хактивизма риски, связанные с эксплуатацией XSS, становятся только выше. Сравнительная простота, наличие элементов автоматизации поиска и эксплуатации, а главное – наличие «точки приложения сил» для большого количества людей, позволяют предположить, что количество атак с использованием этой техники будет только расти.

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


Комментарии 0