За текущий год я обнаружил значительное количество уязвимостей в системе Рокетбанка, в том числе позволяющих получить персональные данные всех клиентов, реализовать XSS-атаку. В данной статье я опишу результаты последнего проведенного мной аудита Рокетбанка.
В период с 31.07.2016 по 03.08.2016 я проводил очередной аудит безопасности Рокетбанка, в результате которого были обнаружены следующие уязвимости:
Межсайтовый скриптинг
При любых операциях Рокетбанк генерирует страницу квитанции, которую можно отправить на почту или посмотреть по ссылке в браузере. Если квитанция на операцию по переводу или пополнению между друзьями (метод /api/v5/friend_transfers/income), то наименование POS-терминала на странице квитанции генерируется следующим образом: «запрос %ИМЯ ДРУГА ИЗ КОНТАКТА В СМАРТФОНЕ%», при этом символы HTML в имени друга не экранируются.
Таким образом можно внедрить код на страницу квитанции, путем простым изменением имени контакта на html код, который злоумышленник захочет выполнить на странице квитанции.
Наглядный пример выполнения:
Пример реализации:
Запрос:
Ответ:
Получаем ссылку на квитанцию:
По ссылке находится страница квитанции с JavaScript-кодом, который изменяет страницу квитанции на страницу перевода средств с перехватом данных банковской карты:
Используя данную уязвимость, злоумышленник может, например, изменить страницу квитанции на страницу перевода денежных средств с перехватом данных банковских карт.
Уязвимость, позволяющая получить персональные данные приглашённых клиентов
При запросе приложением приглашенных клиентов, метод /api/v5/invitations/all раскрывает, помимо имени и фамилии из паспорта, номер телефона и адрес электронной почты.
Пример реализации:
Используя данную уязвимость, злоумышленник может получить персональные данные клиента Рокетбанка, которого он пригласил.
Сразу после составления отчёта по аудиту, я отправил его в Рокетбанк: службе безопасности и техническому директору Олегу Козыреву. Уязвимости были устранены в течении часа, однако ответа не поступало в течение недели.
Только после того, как я уведомил Рокетбанк о том, что планирую опубликовать результаты, мною был получен адекватный фидбэк со стороны Рокетбанка, однако, Олег сказал, что Bug Bounty они больше не поддерживают:
Кроме того, поясню, что какой-то политики «найди баг — мы заплатим» в реальности нет. То, что написано на сайте по этому поводу — это просто слова, написанные мной 3 года назад. После сделки с Открытием, не считаю нужным продолжать эту практику.Однако информация о вознаграждении за обнаружение уязвимостей до сих пор расположена на сайте Рокетбанка.
После длительной дискуссии Рокетбанк всё же предложил вознаграждение, от которого я был вынужден отказаться.
Комментарии (101)
Xfrid
16.08.2016 19:16+13Казалось бы, банк — деньги, безопасность, репутация, а нет, все равно жлобятся.
script88
16.08.2016 19:31+9Напишите Олегу Тинькову :)
Он точно одобрит этот пост :)WapGeaR
16.08.2016 22:47+5Да у него у самого рыльце в пушку. Про его банк тоже пару дней назад был пост, так что «чья бы корова мычала»
Milfgard
17.08.2016 00:45+11Посмотрите, как они чётко отреагировали, заплатили и сразу после этого ввели баг-баунти. Мне не особо нравится их индуцированный скандальный пиар, но реакция на внешние раздражители у них безумно крутая.
ChALkeRx
17.08.2016 08:58+2А они заплатили? Можно ссылку, я не нашёл.
Milfgard
17.08.2016 11:05+1Действительно, вы правы. У меня почему-то в голове после комментариев того поста отложилось, что заплатили.
ChALkeRx
17.08.2016 11:08+2Да и баг баунти они пока только в новостях ввели, как мне кажется, или только обещают ввести.
Я не вижу деталей программы нигде.JustLuckyGuy
17.08.2016 11:57+7То, что они сказали в новостях — это просто слова сказанные журналистам некоторое время назад.
x_phantom
23.08.2016 12:48+1Они заплатили, причем, неплохое вознаграждение (как об это заявил автор), и пишет он об этом не в комментариях, а уже в самой публикации под заголовком Хэппи энд.
ChALkeRx
23.08.2016 19:03Ага, спасибо. То ли раньше этого не было, то ли это я проглядел — не видел до этого.
Это очень круто, я не ожидал такого исхода в той истории.
Chikey
18.08.2016 03:04+1Я находил XSSку за 1 минуту на tinkoff.ru вроде 2 года назад. После репорта не зафиксили.
Rampages
17.08.2016 10:49-4ТКС это последний банк в который стоит обращаться, лучше переплачу проценты в другом банке, чем буду связываться с этим банком. Вообще хороших банков не бывает.
dmitry_dvm
17.08.2016 11:19+2Банки — это не только кредитные карты.
Rampages
18.08.2016 04:10+1Что-то не вижу моего утверждения о том, что банки !== кредитные карты.
Ни сервис, ни другие виды услуг у ТКС не являются, чем-то уникальным. Раньше подкупала простота и какая-то иллюзорная «лояльность» ТКС, но на деле все оказалось не так.
gearbox
16.08.2016 19:45+7То, что написано на сайте по этому поводу — это просто слова, написанные мной 3 года назад.
Подвис на этой фразе. Отвис, написал этот коммент, пошел висеть дальше.
Rampages
17.08.2016 10:52+4Поражает то, что баги исправили за час, а убрать «просто слова», которые вводят в заблуждение не удосужились и поныне. «Люди, такие люди»…
BugagaController
17.08.2016 15:44+4Это очень просто объясняется тем фактом, что это, так сказать, несущая фраза на странице. Вероятно, от нее там строятся все css селекторы, и если ее убрать, то вся верстка распадется
avonar
20.08.2016 14:19Хаха, мне приблизительно так же однажды ответил начальник на договоренность о повышении.
С тех пор я сменил место работы, а тот человек должность.
nmk2002
16.08.2016 21:21+3В приложении Рокетбанка для Android был такой баг: когда переходишь в галерею для прикрепления фотографии в чате с техподдержкой или просто открываешь квитанцию, то если просто заблокировать телефон, то следующий запуск приложения не требует ввода пин-кода. Видимо фокус терялся и приложение просто не блокировалось.
Я сообщил об этом сначала в техподдержку, а потом по контактному email с сайта. Олег Козырев (ну или это просто подпись такая у почтового ящика) ответил, что не считает это уязвимостью. Тем не менее через несколько месяцев меня проинформировали, что баг закрыт.ValdikSS
17.08.2016 03:12+1На всякий случай, если вы увидели здесь логическую неувязку, то ее здесь нет: описанное приняли за ошибку, а не за уязвимость, и вас проинформировали, что она устранена. Просто, по какой-то причине, для многих баг=уязвимость.
Newbilius
17.08.2016 08:15+5По-моему, отключающаяся защита пинкодом в банковском приложении — это именно уязвимость, а не баг.
littleguga
17.08.2016 11:42+1Не, ну в данном случае это тянет на уязвимость то. Защита, которая должна работать — не срабатывает.
artgrosvil
16.08.2016 22:10+9Желательно, чтобы ответили официально на подобную статью, ибо в твиттере у Рокетбанка своя версия.
Shapelez
16.08.2016 22:11+15Интересно, в 5 раз больше какой суммы. И как выглядел шантаж.
Но совершенно не факт, что мы узнаем ответы на эти вопросы.
VANSCoder
16.08.2016 23:18+16Если бы автор хотел сумму в 5 раз больше — он бы не стал шантажировать и пошёл бы продавать PoC на эксп или профильный форум. имхо.
shanker
17.08.2016 16:48Площадку для продажи ещё нужно найти. И даже если найдётся — там ещё найти заинтересованное лицо. Посему автор мог ограничиться попыткой набить цену у банка: тут хотя бы ясно с кем общаться
Хотя, конечно, всё равно это всё не оправдывает действия сотрудника, который не отвечает за базар, написанный 3 года назад.
shanker
18.08.2016 11:39-1Заявления о возможность продать на чёрном рынке вот так просто, без проблем наводят на мысль, что автор насмотрелся Брат-2. И считает, что достаточно познакомиться с продажной женщиной, которая обазательно сведёт с криминалом. А там — дело за малым:
угрожать самодельным пистолетомзапустить самодельный вирус, который выведет бабло с их компьютераshanker
19.08.2016 09:17-2Господа минусующие. Я не прав? Может, вы поведаете свою кул стори как вы продали информацию об узявимости не самой компании, а на «профильном форуме»? Иначе, как говорил герой Гёте: «Суха теория, мой друг. А древо жизни вечно зеленеет».
gearbox
19.08.2016 15:59+1Есть опыт "одного моего друга" — по молодости приторговывал взломанными форумами и гостевухами (они тогда были в моде). Так вот "мой друг" говорит что проблем с торговлей не было, и в эти же руки можно было спокойно продавать и эксплойты. Причем даже без знания языка — рунета достаточно.
VANSCoder
20.08.2016 02:32+2У нас видимо общий друг с gearbox. Мой друг тоже без каких либо проблем продавал доступы (шеллы) к различным сайтам, их охотно покупали владельцы связок. А если моему другу попадался сайт финансовой тематики — доступы к таким сайтам скупали в течение часа. Что бы найти «профильный форум» достаточно вбить в гугле «продажа шеллов» и первая ссылка ведёт на форум по уязвимостям.
А вообще, судя по вашему профилю, можно предположить, что вы пытаетесь вычислить пользователей которые занимаются незаконной деятельностью. Так что на всякий случай скажу: мой друг больше таким не занимается.shanker
22.08.2016 12:35-1gearbox
VANSCoder
Давайте отделять мягкое от тёплого. В этих кул стори явно нехватает информации о цене. Ранее на античате «продажа шеллов» на сайт проходила за 1 бакс (в некоторых случаях до 10). Низкая цена была связана с тем, что шеллы заливались на множество сайтов, подверженных одной и той же уязвимости. И в основном как раз это и были форумы и гостевухи. На античате до сих пор есть предложения по продаже. Обратите внимание на ценники.
Также рекомендую обратить внимание на доклад с конференции PHDays Подпольный рынок 101: статистика цен и схемы ценообразования (Максим Гончаров, антивирусная лаборатория). Там, помимо статистики цен, ещё полезно будет узнать, что антивирусные лаботатории за такими вот торговыми площадками пристально наблюдают. Выводы делайте сами
Я, в отличие от вас, господа, оперирую фактами, которые можно проверить. А слова вроде: «один мой друг вбил в гугл запрос… попал на форум и успешно продал, но цену не скажу» лично у меня вызывают ассоциации с не менее убедительными речами Джесики Псаки.
Резюмирую: история о продаже за 10-100 баксов по моим меркам не тянет на кул стори вообще никак.shanker
22.08.2016 12:57По этим причинам, как я уже писал (в комментарии к другой статье) я с информацией о найденных багах ничего не делаю: тратить время на разговор с саппортом с неизвестным результатом — смысла не вижу, надоело уже. А ходить искать где мне предложат нормальну цену — тоже неизвестно чем закончится сей поиск.
gearbox
22.08.2016 14:44+4Резюмирую: история о продаже за 10-100 баксов по моим меркам не тянет на кул стори вообще никак.
Друг, про которого я Вам рассказывал, вытащил как то две уязвимости — одна на не очень популярном форуме, другая на совсем никому не известной гостевухе. Форум имел порядка 30 000 инсталляций, подергать их с выдачи пс и автоматизировать процесс поимения заняло два вечера, было продано что то чуть больше тысячи, и там да — ценник был вообще ни о чем. Что компенсировалось объемами. А вот гостевуха была поинтереснее. Сайты были строго европейские, их было немного (чуть больше 50), но все как на подбор узкопрофильные. В общем первый же клиент, который увидел список сайтов — оплатил сам эксплойт (там банально заливалась картинка с php кодом, в те времена исполнение произвольного кода не было чем то шокирующим). Хорошо оплатил.
А кулстори с подробностями, и уж тем более от действующих игроков а не сбитых пилотов? Извините, товарищ майор, но нет.shanker
23.08.2016 10:31Форум имел порядка 30 000 инсталляций, подергать их с выдачи пс и автоматизировать процесс поимения заняло два вечера, было продано что то чуть больше тысячи
Если бы автор хотел сумму в 5 раз больше — он бы не стал шантажировать и пошёл бы продавать PoC на эксп или профильный форум. имхо.
Одно дело — продать информацию об уязвимости. Другое — воспользоваться ею для несанкционированного доступа, и уже эти шеллы продавать. Вы правда не видите в этом разницы?
n1nj4p0w3r
17.08.2016 09:16+6Еще один сервис который вместо признания ошибок занимается нагнетанием скандала и бездоказательной клеветой, российский маркетинг как он есть.
ChALkeRx
17.08.2016 09:22+9Ну, кто-то из них должен выложить переписку, раз такое дело.
ChALkeRx
17.08.2016 10:02+10Хотя, к слову, я вообще не понимаю версии банка. Чем именно он их шантажировал? Я так понимаю, что детали уязвимости он сообщил им сразу.
Публикацией, что ли? Так публикация после исправления — это нормально, выплата вознаграждения её не отменяет, вообще-то, в нормальной ситуации. Она нужна в том числе для того, чтобы другие на те же грабли не наступали, а компании — чтобы уведомить клиентов и показать им, как хорошо и быстро компания реагирует на проблемы.
ChALkeRx
17.08.2016 11:12+5Кстати, у них ещё более крутое заявление есть — то же самое плюс «а “баг“ и не баг»:
@d_keman @dmgcat автор забыл упомянуть, что мы предложили деньги, но он попросил в 5 раз больше и начал шантажировать :) а “баг“ и не баг)
— Рокетбанк (@rocketbank) 16 августа 2016 г.ChALkeRx
17.08.2016 13:37+7Так, чуть-чуть пообщался с ними в твиттере. Они вот чего говорят:
- Это не страшная бага. Прим: это Stored XSS-то не страшная, ага.
- Это не первая уязвимость, о которой mrEisenberg им сообщал, и за остальные они платили.
- Публиковать переписку или нет — личное дело mrEisenberg.
Твиты об этом — под вышеприведённым, сюда вставлять не буду, чтобы место не занимать.
mrEisenberg, ждём истории переписки =).
zikasak
17.08.2016 14:07+3Они не считают ее серьезной, т.к. считают, что 3dsecure их спасет… На указание на то, что не все сайты проверяют 3d secure, с радостью ответили, что их количество стремится к нулю…
ChALkeRx
17.08.2016 14:40+1А как 3dsecure спасает от XSS? Там можно нарисовать что угодно на странице банка, например + какие угодно запросы в этом домене погонять, SOP же не помешает. Да и в урле тоже нарисовать что угодно в этом домене, в том числе и какую-нибудь форму логина в клиент-банк, плюс ждать, пока пользователь введёт логин-пароль и код из смс.
mrEisenberg
18.08.2016 17:52+8-Это даже не баги
-Он рекламирует свою аудиторскую контору
-Автор забыл сказать, что до этого требовал в 5 раз больше сумму и шантажировал
-Требовал в 5 раз больше чем ОБЫЧНО
-Мы предложили вознаграждение сразу же
-Эта цитата вырвана из контекста после уже предложенной суммы первой
-Можно было посмотреть друзей, чьи телефоны вы и так знаете
-Да, но в этом случае нужно генерить под каждого уник ссылку. Под каждого генерить сквот ссылку
-Профессионалы понимают из статьи, что опасностей не было.
…
На их месте я бы извинился за допущенные ошибки перед клиентами, а не постил такое в твиттере.
Выглядит просто ужасно.
Ситуация простая, меня игнорировали, я сказал, что планирую опубликовать отчёт аудита, после чего мне оперативно ответили и сказали, что если я буду пытаться их шантажировать, то мы ни о чем не договоримся и что баг баунти больше нет.
Публикацию отчёта аудита они восприняли как шантаж.
Я им объяснил, почему уязвимости критичные, что в очередной раз сливать персональные данные ужасная политика и т.п.
У меня спросили, во сколько я оцениваю проведенный аудит.
Я объективно оценил проделанную мной работу, опираясь на личный опыт и реварды в открытых Bug Bounty.
Сумма оказалась больше их предложения.
Они ответили, что их это не устраивает, я пожелал всего доброго.
vasyzpetya
17.08.2016 11:40+1Да какая разница. Что тиньков, что рокетбанк, они могут говорить что угодно по поводу тех людей или ситуаций по которым раскрывались факапы продуктов. «После драки кулаками не машут» — тут настолько простой смысл… НИКТО не будет помнить про автора, его даже никто не знает, но ВСЕ будут помнить и знать, что у продуктов были косяки.
Все отлично помнят занятную историю с подменой договора тинькова (но никто не знать чем кончилось), теперь вод все будут знать что РокетБанку на свою репутацию абсолютно фиолетово.
Причем занятно, ответили — значит признали. Еще слаще…
И то, что автор появился здесь а рокетБанк теперь оправдывается в твиттере, это причина того, что рокетБанк не смог договориться. Не важно сколько просил автор, важно что, видимо, конструктивного диалога не получилось и теперь ВОТ.PavelMSTU
17.08.2016 14:27Ой да ладно вам, после этого — реально задница Тинькоффу… Хотя?.. Бабло побеждает зло и все всё забудут…
Rampages
18.08.2016 04:18IMO твиттер банку не нужен, только ущерб репутации больше нанес. Прежде всего банк должен быть серьезной организацией, которой вы можете доверить свои денежные средства, а на деле видим как они в твиттере выясняют отношения с одним(!) человеком… Причем, те кто не знал об этом, теперь узнали из твиттера. А оправдания банка на уровне подростков, а не серьезных мужиков отвечающих за свой бизнес.
nogoody
23.08.2016 11:25Этож Рокеты, у них имидж такой. Они еще деньги за покемонов дают, а вы про твиттер
sleeply4cat
17.08.2016 11:40+5Ох как историей «бандерольки» запахло…
По-моему, появление в официальном твиттере(?!) банка таких оправданий-обвинений — однозначный повод ни при каких обстоятельствах не пользоваться его услугами.ChALkeRx
17.08.2016 11:45А что было с бандеролькой?
izzholtik
17.08.2016 12:01+2Задержали посылку человека, который по поведению был похож на кардера, а когда тот серией подобных постов поднял шум, начали повально банить всех подряд в своей группе ВК и постить разнообразные гадости и голословные обвинения.
mihmig
17.08.2016 08:48+1Напомните пожалуйста название программы-прокси, с помощью которой Вы просматривали запросы.
mihmig
17.08.2016 08:57+1>>То, что написано на сайте по этому поводу — это просто слова
Такое впечатление, что современные банки и по поводу тарифов/условий скоро так будут поступать. Правда не всегда у них это будет получатьсяRampages
17.08.2016 10:58+1Если нету какой-нибудь подписи а-ля «не является публичной офертой...», то по идее можно судиться и выиграть, но у банков ресурсов и нервов будет по более…
PavelMSTU
17.08.2016 14:34Да ладно?
Я в прошлом году вот такое видел:
Ruckus
17.08.2016 10:22+3Ну вот, в статье про тинькофф Newbilius писал про пушистость рокета, а теперь оказывается, что и тут не так все хорошо… Видимо честных и не скандальных банков более не осталось.
Newbilius
17.08.2016 10:40+7Да, и я дико разочарован таким поступком со стороны Рокетбанка. Воистину, разрушить собственную репутацию — раз плюнуть.
mihmig
17.08.2016 10:45+5Да уж, построение репутации — дело долгой слаженной работы профессионалов. Её разрушение — один твит «эффективного менеджера».
PavelMSTU
17.08.2016 14:43-2Да о чем вы все говорите!
98% россиян даже и не слышали, что такое Рокетбанк…
Можете потестировать на своей жене/теще/девушке или спросить соседа на против.Newbilius
17.08.2016 17:33+1Спросил несколько человек. Они не слышали про Рокетбанк, про Тинькова, про Убрир и многие другие. А ещё они не слышали про Болгенос. Какой делаем вывод?
GliX
17.08.2016 11:23-2Если вы приглашаете друга в банк, то логично, что его персональные данные в той или иной степени вам и так известны.
Vitalez
17.08.2016 13:32+2А когда ты блоггер/админ паблика, занимающийся рекламой? Люди видят рекламу — люди жмут на неё. И нелогично, если <1000 человек отдают свои контактные данные, хранящиеся у дядьки с каналом/группой в * подписчиков.
kruftik
17.08.2016 11:41+3Думаю, при таком пофигизме самого Рокета, имеет смысл писать в Точку (tochka. com) — рокет входит в этот филиал, а у них с фидбеком все вроде бы весьма хорошо.
AkelM
17.08.2016 11:41+8Сумма, которую Вы видите на вашем счете — это просто слова, сгенирированные скриптом. На самом деле
Денег нет, но вы держитесь
WebMonet
17.08.2016 14:01+3После того, как люди, аналогичные топикстартеру перестанут миндальничать и сольют несколько уязвимостей «темным силам» интернета, адекватные и радостные программы bug-bounty станунт повсеместной нормой для банков и т.д. Ведь сейчас они прекрасно понимают, что добрые хакеры делают беспатно для них (банков) сложную и дорогостоящую работу по аудиту безопасности ПО.
trijin
23.08.2016 11:01А Вы оптимист, «злобные хакеры украли у неповинных людей...»
«Банк заявил что с его стороны утечек не было. Скорее всего Хакеры иными способами получили данные пострадавших клиентов»
«Вклады были застрахованы»…
Chikey
18.08.2016 03:16+2>По ссылке находится страница квитанции с JavaScript-кодом, который изменяет страницу квитанции на страницу перевода средств с перехватом данных банковской карты:
Ловить (и без того не многочисленных) клиентов рокета (у которого веб банкинга то нету) по всему интернету и втюхивать им страничку с переводом денег, это конечно ужасный баг за который стоит требовать много денег. Уязвимость — да. Стоит ли платить деньги даже имея забытую страничку о баг баунти — нет. Разводить драму тоже что они в чем то не правы — тоже.
PS. Этичные хантеры о деньгах вообще не заикаются, кстати.ChALkeRx
18.08.2016 07:29Этичные хантеры о деньгах вообще не заикаются, кстати.
+1. А переписки мы так и не увидели здесь, так что, вообще говоря, не совсем понятно, что это было и кто там как себя повёл в оригинале.
Seboreia
18.08.2016 14:05Вообще немного странно, что автор ни на один комментарий не отвечает. Ничего не хочу говорить, но для себя делаю вывод, что у обеих сторон рыльце в пушку
Newbilius
18.08.2016 18:54+2ни на один комментарий не отвечает
Минимум 3 комментария автора под статьёй есть.Seboreia
18.08.2016 19:12+1Да, они появились, но уже позже моего
Newbilius
22.08.2016 07:59+3Ваш комментарий: 18 августа 2016 в 14:05
Комментарии автора: 17 августа 2016 в 20:49
18 августа 2016 в 17:35
18 августа 2016 в 17:52
Один был до вашего. Нет, не обманите…Seboreia
22.08.2016 16:26+2Да, увидел, целый один комментарий со ссылкой на проксю для просмотра запросов. Этот комментарий пролил свет на суть статьи.
ПС спасибо за карму
ierogliph
Можно этот момент поподробнее?
VladimirAndreev
видимо, это было настолько мало…
Suvitruf
Дело принципа, скорей всего.
randall
Скорее вариант, что деньги платятся без публикации статьи.
ChALkeRx
@mrEisenberg, это правда?
Трешак какой-то вся эта ситуация, касательно ответов и поведения банка.
mrEisenberg
Я принципиально не публикую отчёты аудитов, если компания отнеслась к проделанной работе достойно.
В данной ситуации, чтобы получить от них ответа мне пришлось написать около 5 писем.