[Из песочницы] Рокетбанк подверг риску персональные данные клиентов и данные банковских карт

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

a867cc37dafa49ca9e83adf55a45885e.png

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

В период с 31.07.2016 по 03.08.2016 я проводил очередной аудит безопасности Рокетбанка, в результате которого были обнаружены следующие уязвимости:

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


При любых операциях Рокетбанк генерирует страницу квитанции, которую можно отправить на почту или посмотреть по ссылке в браузере. Если квитанция на операцию по переводу или пополнению между друзьями (метод /api/v5/friend_transfers/income), то наименование POS-терминала на странице квитанции генерируется следующим образом: «запрос %ИМЯ ДРУГА ИЗ КОНТАКТА В СМАРТФОНЕ%», при этом символы HTML в имени друга не экранируются.

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

Наглядный пример выполнения:

029dfe5010654edbb7a6fde33215d351.png

Пример реализации:


Запрос:
c8b487048aff46c284b5afb511d2daa3.png

Ответ:
3c7e71bcdaea4b81b2a7606e71b042e0.png

Получаем ссылку на квитанцию:
19c12e6c80c14680b076afa58028371f.png

По ссылке находится страница квитанции с JavaScript-кодом, который изменяет страницу квитанции на страницу перевода средств с перехватом данных банковской карты:

365c8055a2a04b919b6b1058525fd095.png

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

Уязвимость, позволяющая получить персональные данные приглашённых клиентов


При запросе приложением приглашенных клиентов, метод /api/v5/invitations/all раскрывает, помимо имени и фамилии из паспорта, номер телефона и адрес электронной почты.

Пример реализации:


bc3eb33241a14b89a32c6990962cc5fa.png

Используя данную уязвимость, злоумышленник может получить персональные данные клиента Рокетбанка, которого он пригласил.

Сразу после составления отчёта по аудиту, я отправил его в Рокетбанк: службе безопасности и техническому директору Олегу Козыреву. Уязвимости были устранены в течении часа, однако ответа не поступало в течение недели.

Только после того, как я уведомил Рокетбанк о том, что планирую опубликовать результаты, мною был получен адекватный фидбэк со стороны Рокетбанка, однако, Олег сказал, что Bug Bounty они больше не поддерживают:

Кроме того, поясню, что какой-то политики «найди баг — мы заплатим» в реальности нет. То, что написано на сайте по этому поводу — это просто слова, написанные мной 3 года назад. После сделки с Открытием, не считаю нужным продолжать эту практику.
Однако информация о вознаграждении за обнаружение уязвимостей до сих пор расположена на сайте Рокетбанка.

После длительной дискуссии Рокетбанк всё же предложил вознаграждение, от которого я был вынужден отказаться.

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

© Habrahabr.ru