Инженер компании Google Эдуардо Вила (Eduardo Vela) обнаружил неприятную проблему во фреймворке jQuery Mobile. Согласно статистике BuiltWith, в настоящий момент более 150 000 активных сайтов полагаются в своей работе на jQuery Mobile.

В своем блоге Вила объясняет, что любой сайт, использующий jQuery Mobile и Open Redirect, уязвим для XSS-атак, причем исправления для этой проблемы нет и не предвидится.

Исследователь пишет, что баг сопряжен с location.hash. Так, jQuery Mobile проверяет, есть ли что-то в location.hash. Если ваш location.hash похож на URL, будет предпринята попытка задействовать метод history.pushState, а затем добавить объект XMLHttpRequest. Ответом на это станет innerHTML. И хотя использование history.pushState должно предотвращать XSS-атаки, они все равно возможны, если сайт применяет Open Redirect. В блоге Вила приводит следующий пример:

http://jquery-mobile-xss.appspot.com/#/redirect?url=http://sirdarckcat.github.io/xss/img-src.html

В теории перед такими атаками уязвимо множество сайтов. Open Redirect’ы можно найти даже на сайтах Google, YouTube, Facebook, Baidu и Yahoo. Но когда Вила связался с разработчиками jQuery Mobile, ему ответили, что они рассматривают Open Redirect как уязвимость, и исправить проблему в ближайшее время вряд ли получится. Ведь это потребует внесения слишком серьезных изменений и может спровоцировать неработоспособность уже существующих приложений.

«Есть интересная возможность для дальнейших исследований: если у вас достаточно времени, можете попытаться заставить баг работать без Open Redirect. Я пытался, но у меня не вышло, — пишет Вила. — Основываясь на своем опыте, [могу сказать], что Open Redirect’ы широко распространены и часто являются источником багов. Возможно, нам стоит начать фиксить Open Redirect’ы. А может, нам стоит быть более последовательными и перестать относиться к ним, как к уязвимостям. В любом случае, пока у индустрии существуют разногласия по этим вопросам, мы можем наслаждаться разными XSS-багами».

Фото: Depositphotos



2 комментария

  1. Asylum

    12.02.2017 at 18:57

    А на кой ляд (объясните мне убогому) закрыто обсуждение в платных материалах? Вряд ли кто оформит подписку, чтобы оставить коммент, а вот что многие заходят на сайт посмотреть ответы, так это факт. А трафик, это те же деньги, хотя ксакеп никогда не умел зарабатывать на посетителях

  2. Int

    13.02.2017 at 14:06

    Я так и не смог понять, как pushState предотвращает XSS. Это замена видимого в браузере адреса, что из этого следует?

Оставить мнение