Ошибка DOM-XSS, влияющая на порчу, Shopify, Yelp и многое другое

Наша команда исследователей в области безопасности занималась исследованием безопасности приложений на стороне клиента, и одной из главных целей была Tinder.

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

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

Мы узнали, что уязвимая конечная точка принадлежит не Tinder, а branch.io, атрибутивной платформе, используемой многими крупными корпорациями по всему миру. Команда безопасности Tinder помогла нам связаться с ними, и, соответственно, они выпустили своевременное исправление.

Углубившись вглубь, мы обнаружили, что многие крупные сайты делят уязвимую конечную точку в своем коде и доменах, включая Shopify, Yelp, Western Union и Imgur. Это означает, что до 685 миллионов пользователей могут быть в опасности.

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

Детали:

XSS-уязвимость, основанная на DOM, также известная как «type-0 XSS», является классом уязвимости межсайтового скриптинга, которая появляется в DOM. Это тип атаки, при котором полезная нагрузка атаки выполняется в результате изменения среды DOM в браузере жертвы, особенно в динамической среде. В XSS на основе DOM исходный код HTML и ответ атаки будут одинаковыми. Это означает, что вредоносная полезная нагрузка не может быть найдена в ответе, что чрезвычайно затрудняет выполнение встроенных в браузер функций смягчения последствий XSS, таких как Chrome XSS Auditor.

Можете ли вы определить уязвимости?

код

Тот факт, что эта уязвимость основана на DPM, а branch.io по-прежнему не использует CSP, облегчает использование этих уязвимостей в любом браузере, который нам нравится..

Это означало, что путем изменения стратегии перенаправления на специально созданную полезную нагрузку для управления DOM.

1. ДОМ XSS

Например, нашим первоначальным открытием было то, что конечная точка https://go.tinder.com/amp-iframe-redirect была подвержена множественным уязвимостям (sche_redirect & redirect_strategy GET-параметры управляют содержимым div).

redirect_strategy – это «INJECTIONA», а circuit_redirect – это «INJECTIONB» из кода выше.

Это означало, что, изменив redirect_strategy на полезную нагрузку dom-xss, можно было выполнить код на стороне клиента в контексте домена Tinder в любом браузере:
https://go.tinder.com/amp-iframe-redirect?scheme_redirect=http://google.com&redirect_strategy = 1)% 7B% 0Aalert (1)% 3B //
будет отображаться в DOM как:

если (1) {alert (1); // && «ИНЪЕКЦИЯ») {

вар синтаксический анализатор знак равно document.createElement ( «а»);

parser.href знак равно «INJECTIONA»;

вар протокол знак равно parser.protocol.toLowerCase ();

скриншот ошибки

2. validateProtocol () и validate () Обход

Также обратите внимание, как validateProtocol () использует indexOf для проверки схем – метод indexOf () возвращает позицию первого вхождения указанного значения в строке. Этот метод возвращает -1, если значение для поиска никогда не встречается. Однако его можно обмануть, используя javascript: //% 0aalert (0) //good.com/https:// – обе функции проверки можно обойти, потому что indexOf найдет «https: //«

вар синтаксический анализатор знак равно document.createElement ( «а»);

parser.href знак равно URL;

вар протокол знак равно parser.protocol.toLowerCase ();

if ((av javascript: ’,‘ vbscript: ’,‘ data: ’). indexOf (протокол) < 0) {

возвращение URL;

}

….

вернуть ноль;

если ([‘Http:’, ‘https:’]. IndexOf (протокол) < 0) {

window.top.location = validate («http://google.com»);

}

Итак, как эта ошибка повлияла больше, чем Tinder?

go.tinder.com – это псевдоним для custom.bnc.lt, ресурса Branch.io. И многие другие компании имеют псевдоним, указывающий на это.

Назовите несколько сайтов, затронутых этой уязвимостью: RobinHood, Shopify, Canva, Yelp, Western Union, Letgo, Cuvva, imgur, Lookout, fair.com и другие..

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

Другие наши последние исследования:

Является ли базирующаяся в Панаме NordVPN на самом деле американской компанией под названием CloudVPN?

В более чем миллионе домашних маршрутизаторов GPON обнаружена критическая уязвимость RCE