В чем разница между XSS и CSRF?

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

Обзор XSS (межсайтовый скриптинг)

На что направлен XSS

Атаки XSS нацелены на конечного пользователя, внедряя вредоносные скрипты в веб-сайты. Цель злоумышленника – выполнить JavaScript в контексте сессии браузера цели. Эти скрипты могут красть файлы cookie, захватывать сессии, делать дефейс страниц или перенаправлять пользователей на вредоносные сайты.

Как осуществляются XSS-атаки

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

  • Отображенный XSS: Полезная нагрузка отправляется пользователем и непосредственно отображается в ответе сервера.
  • Сохраненный XSS: Полезная нагрузка сохраняется на сервере и запускается, когда другой пользователь просматривает контент.
  • XSS на основе DOM: Манипуляции полезными нагрузками происходят полностью в браузере через JavaScript.

Обзор CSRF (межсайтовая подделка запросов)

На что направлена атака CSRF

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

Как осуществляются CSRF-атаки

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

Ключевые отличия между XSS и CSRF

Механизм атаки

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

Потенциальные последствия

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

Стратегии защиты

  • Защита от XSS подразумевает многоуровневый подход, включающий санитизацию входных данных (проверка и очистка вводимых пользователем данных), кодирование вывода (безопасное отображение контента в HTML или JavaScript) и применение заголовков политики безопасности контента (CSP) для ограничения источников выполнения скриптов.
  • Защита от CSRF требует проверки того, что каждый запрос на изменение состояния поступает из авторизованного источника. Методы включают встраивание CSRF-токенов в формы, установку файлов cookie с атрибутом SameSite для ограничения использования между источниками, требование повторной аутентификации пользователей для критических операций. Эти меры снижают риск, что запросы могут быть подделаны.

Реальные примеры и кейсы использования

XSS в полях комментариев

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

CSRF в отправке форм

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

Что опаснее, XSS или CSRF?

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

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

Обнаружение XSS и CSRF с помощью DAST

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

Для поиска CSRF современные решения DAST оценивают наличие и реализацию средств контроля безопасности, таких как CSRF-токены и атрибуты cookie SameSite, чтобы выявить недостатки, которые могут разрешить несанкционированные запросы.

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

Бесплатно опробовать платформу Invicti

Подписаться на новости