Время от времени я провожу внешние аудиты безопасности IT компаний, поддерживающих Bug Bounty. Согласно странице Рокетбанк может принять решение о вознаграждении в случаях обнаружения серьезных и публично неразглашенных уязвимостей.
![](https://habrastorage.org/r/w1560/files/a86/7cc/37d/a867cc37dafa49ca9e83adf55a45885e.png)
За текущий год я обнаружил значительное количество уязвимостей в системе Рокетбанка, в том числе позволяющих получить персональные данные всех клиентов, реализовать XSS-атаку. В данной статье я опишу результаты последнего проведенного мной аудита Рокетбанка.
В период с 31.07.2016 по 03.08.2016 я проводил очередной аудит безопасности Рокетбанка, в результате которого были обнаружены следующие уязвимости:
При любых операциях Рокетбанк генерирует страницу квитанции, которую можно отправить на почту или посмотреть по ссылке в браузере. Если квитанция на операцию по переводу или пополнению между друзьями (метод /api/v5/friend_transfers/income), то наименование POS-терминала на странице квитанции генерируется следующим образом: «запрос %ИМЯ ДРУГА ИЗ КОНТАКТА В СМАРТФОНЕ%», при этом символы HTML в имени друга не экранируются.
Таким образом можно внедрить код на страницу квитанции, путем простым изменением имени контакта на html код, который злоумышленник захочет выполнить на странице квитанции.
Наглядный пример выполнения:
![](https://habrastorage.org/r/w1560/files/029/dfe/501/029dfe5010654edbb7a6fde33215d351.png)
Запрос:
![](https://habrastorage.org/r/w1560/files/c8b/487/048/c8b487048aff46c284b5afb511d2daa3.png)
Ответ:
![](https://habrastorage.org/r/w1560/files/3c7/e71/bcd/3c7e71bcdaea4b81b2a7606e71b042e0.png)
Получаем ссылку на квитанцию:
![](https://habrastorage.org/r/w1560/files/19c/12e/6c8/19c12e6c80c14680b076afa58028371f.png)
По ссылке находится страница квитанции с JavaScript-кодом, который изменяет страницу квитанции на страницу перевода средств с перехватом данных банковской карты:
![](https://habrastorage.org/r/w1560/files/365/c80/55a/365c8055a2a04b919b6b1058525fd095.png)
Используя данную уязвимость, злоумышленник может, например, изменить страницу квитанции на страницу перевода денежных средств с перехватом данных банковских карт.
При запросе приложением приглашенных клиентов, метод /api/v5/invitations/all раскрывает, помимо имени и фамилии из паспорта, номер телефона и адрес электронной почты.
![](https://habrastorage.org/r/w1560/files/bc3/eb3/324/bc3eb33241a14b89a32c6990962cc5fa.png)
Используя данную уязвимость, злоумышленник может получить персональные данные клиента Рокетбанка, которого он пригласил.
Сразу после составления отчёта по аудиту, я отправил его в Рокетбанк: службе безопасности и техническому директору Олегу Козыреву. Уязвимости были устранены в течении часа, однако ответа не поступало в течение недели.
Только после того, как я уведомил Рокетбанк о том, что планирую опубликовать результаты, мною был получен адекватный фидбэк со стороны Рокетбанка, однако, Олег сказал, что Bug Bounty они больше не поддерживают:
После длительной дискуссии Рокетбанк всё же предложил вознаграждение, от которого я был вынужден отказаться.
![](https://habrastorage.org/files/a86/7cc/37d/a867cc37dafa49ca9e83adf55a45885e.png)
За текущий год я обнаружил значительное количество уязвимостей в системе Рокетбанка, в том числе позволяющих получить персональные данные всех клиентов, реализовать XSS-атаку. В данной статье я опишу результаты последнего проведенного мной аудита Рокетбанка.
В период с 31.07.2016 по 03.08.2016 я проводил очередной аудит безопасности Рокетбанка, в результате которого были обнаружены следующие уязвимости:
Межсайтовый скриптинг
При любых операциях Рокетбанк генерирует страницу квитанции, которую можно отправить на почту или посмотреть по ссылке в браузере. Если квитанция на операцию по переводу или пополнению между друзьями (метод /api/v5/friend_transfers/income), то наименование POS-терминала на странице квитанции генерируется следующим образом: «запрос %ИМЯ ДРУГА ИЗ КОНТАКТА В СМАРТФОНЕ%», при этом символы HTML в имени друга не экранируются.
Таким образом можно внедрить код на страницу квитанции, путем простым изменением имени контакта на html код, который злоумышленник захочет выполнить на странице квитанции.
Наглядный пример выполнения:
![](https://habrastorage.org/files/029/dfe/501/029dfe5010654edbb7a6fde33215d351.png)
Пример реализации:
Запрос:
![](https://habrastorage.org/files/c8b/487/048/c8b487048aff46c284b5afb511d2daa3.png)
Ответ:
![](https://habrastorage.org/files/3c7/e71/bcd/3c7e71bcdaea4b81b2a7606e71b042e0.png)
Получаем ссылку на квитанцию:
![](https://habrastorage.org/files/19c/12e/6c8/19c12e6c80c14680b076afa58028371f.png)
По ссылке находится страница квитанции с JavaScript-кодом, который изменяет страницу квитанции на страницу перевода средств с перехватом данных банковской карты:
![](https://habrastorage.org/files/365/c80/55a/365c8055a2a04b919b6b1058525fd095.png)
Используя данную уязвимость, злоумышленник может, например, изменить страницу квитанции на страницу перевода денежных средств с перехватом данных банковских карт.
Уязвимость, позволяющая получить персональные данные приглашённых клиентов
При запросе приложением приглашенных клиентов, метод /api/v5/invitations/all раскрывает, помимо имени и фамилии из паспорта, номер телефона и адрес электронной почты.
Пример реализации:
![](https://habrastorage.org/files/bc3/eb3/324/bc3eb33241a14b89a32c6990962cc5fa.png)
Используя данную уязвимость, злоумышленник может получить персональные данные клиента Рокетбанка, которого он пригласил.
Сразу после составления отчёта по аудиту, я отправил его в Рокетбанк: службе безопасности и техническому директору Олегу Козыреву. Уязвимости были устранены в течении часа, однако ответа не поступало в течение недели.
Только после того, как я уведомил Рокетбанк о том, что планирую опубликовать результаты, мною был получен адекватный фидбэк со стороны Рокетбанка, однако, Олег сказал, что Bug Bounty они больше не поддерживают:
Кроме того, поясню, что какой-то политики «найди баг — мы заплатим» в реальности нет. То, что написано на сайте по этому поводу — это просто слова, написанные мной 3 года назад. После сделки с Открытием, не считаю нужным продолжать эту практику.Однако информация о вознаграждении за обнаружение уязвимостей до сих пор расположена на сайте Рокетбанка.
После длительной дискуссии Рокетбанк всё же предложил вознаграждение, от которого я был вынужден отказаться.