Время от времени я провожу внешние аудиты безопасности IT компаний, поддерживающих Bug Bounty. Согласно странице Рокетбанк может принять решение о вознаграждении в случаях обнаружения серьезных и публично неразглашенных уязвимостей.
За текущий год я обнаружил значительное количество уязвимостей в системе Рокетбанка, в том числе позволяющих получить персональные данные всех клиентов, реализовать XSS-атаку. В данной статье я опишу результаты последнего проведенного мной аудита Рокетбанка.
В период с 31.07.2016 по 03.08.2016 я проводил очередной аудит безопасности Рокетбанка, в результате которого были обнаружены следующие уязвимости:
Межсайтовый скриптинг
При любых операциях Рокетбанк генерирует страницу квитанции, которую можно отправить на почту или посмотреть по ссылке в браузере. Если квитанция на операцию по переводу или пополнению между друзьями (метод /api/v5/friend_transfers/income), то наименование POS-терминала на странице квитанции генерируется следующим образом: «запрос %ИМЯ ДРУГА ИЗ КОНТАКТА В СМАРТФОНЕ%», при этом символы HTML в имени друга не экранируются.
Таким образом можно внедрить код на страницу квитанции, путем простым изменением имени контакта на html код, который злоумышленник захочет выполнить на странице квитанции.
Наглядный пример выполнения:
Пример реализации:
Запрос:
Ответ:
Получаем ссылку на квитанцию:
По ссылке находится страница квитанции с JavaScript-кодом, который изменяет страницу квитанции на страницу перевода средств с перехватом данных банковской карты:
Используя данную уязвимость, злоумышленник может, например, изменить страницу квитанции на страницу перевода денежных средств с перехватом данных банковских карт.
Уязвимость, позволяющая получить персональные данные приглашённых клиентов
При запросе приложением приглашенных клиентов, метод /api/v5/invitations/all раскрывает, помимо имени и фамилии из паспорта, номер телефона и адрес электронной почты.
Пример реализации:
Используя данную уязвимость, злоумышленник может получить персональные данные клиента Рокетбанка, которого он пригласил.
Сразу после составления отчёта по аудиту, я отправил его в Рокетбанк: службе безопасности и техническому директору Олегу Козыреву. Уязвимости были устранены в течении часа, однако ответа не поступало в течение недели.
Только после того, как я уведомил Рокетбанк о том, что планирую опубликовать результаты, мною был получен адекватный фидбэк со стороны Рокетбанка, однако, Олег сказал, что Bug Bounty они больше не поддерживают:
Кроме того, поясню, что какой-то политики «найди баг — мы заплатим» в реальности нет. То, что написано на сайте по этому поводу — это просто слова, написанные мной 3 года назад. После сделки с Открытием, не считаю нужным продолжать эту практику.
Однако информация о вознаграждении за обнаружение уязвимостей до сих пор расположена на сайте Рокетбанка.
После длительной дискуссии Рокетбанк всё же предложил вознаграждение, от которого я был вынужден отказаться.
Автор: mrEisenberg