Исследователи нашли множество критических уязвимостей в платежных протоколах



    Немецкие исследователи информационной безопасности Карстен Ноль (Karsten Nohl), dexter и Фабиан Браунляйн (Fabian Braunlein) на конференции Chaos Computing Club рассказали о критических уязвимостях платежных протоколов, которые могут быть использованы злоумышленниками для кражи данных банковских карт покупателей и денег со счетов продавцов.

    В чем проблема


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

    Тем не менее, большая часть всей этой платежной инфраструктуры опирается на проприетарные протоколы родом из 90-х годов прошлого века — на практике это означает наличие большого количества дыр безопасности. Платежные терминалы и процессоры все чаще становятся целью злоумышленников.

    Кража финансовых данных


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

    К примеру, в Германии главным коммуникационным протоколом для связи платежных терминалов и кассовых аппаратов является ZVT. Он просто позволяет хакерам считывать информацию с банковских карт, получив доступ к локальной сети магазина.

    Хуже того, в протоколе реализован механизм для удаленного чтения PIN-кодов карточек. Он защищен криптографической подписью (MAC). Однако ключ симметричного шифрования хранится в так называемых Hardware Security Modules (HSM), некоторые из которых подвержены простым атакам по времени (timing attack) — это позволяет злоумышленникам получить доступ к ключу.



    Важный момент — в множестве платежных терминалов используется один и тот же ключ, что открывает злоумышленникам широкие возможности для совершения атак (и противоречит базовым принципам проектирования защищенных систем).

    Компрометация счетов продавцов


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

    Платежные терминалы общаются со специальными платежными процессорами (которые, в свою очередь, взаимодействуют с банками) через интернет, используя стандарт ISO 8583. Существуют различные «диалекты» этого стандарта — в Германии популярен Poseidon. И он также содержит критические уязвимости.

    В частности, одна из ошибок аутентификации описывается так. Для исполнения криптографического протокола аутентификации терминал использует секретный ключ. Пока что, все хорошо. Но дальше мы вновь видим повторение ошибки ZVT — множество терминалов хранят один и тот же ключ. Замена одного номера (Terminal ID) в любом конкретном терминале открывает доступ к счету продавца, к которому «привязан» этот терминал. Что еще хуже, Terminal ID печатается на каждом чеке — это еще больше облегчает проведение атаки.



    В результате, атакующие могут производить возврат средств (refund) или производить оплату промокодов на сотовую связь (top-up codes).

    Подробное описание представленных атак можно найти в этом PDF.

    Не все так плохо


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

    Тем не менее, российские исследователи информационной безопасности также публиковали информацию о серьезных уязвимостях в системах работающих в нашей стране банков и возможных атаках на сами банкоматы и платежные терминалы.
    • +13
    • 19.1k
    • 3
    Латера Софтвер
    54.74
    Компания
    Share post

    Comments 3

      +3
      Было бы неплохо пометить публикацию как перевод.
      Оригинальная статья: srlabs.de/pos-vulns

        +4
        Про ZVT, если вдруг кто не прочел в первоисточнике, объясню: Торговая точка использует связку кассовый компьютер + терминал для приёма карт.
        В древности терминал подключался к кассе через Serial-порт. Теперь же появилась возможность осуществлять тоже соединение через Ethernet. Протокол, который не был предназначен для сети, при этом никто не менял. И если раньше man-in-the-middle в отдельно взятом последовательном кабеле был невозможен(всякое шпионское опустим) то теперь теоретически злоумышленник может встроить себя в сеть магазина, получать и даже модифицировать весь трафик между терминалом и кассой.

        Про пин-код который никогда не покидает терминал в открытом виде, но всё же получается узнать при помощи ZVT. На терминале можно вводить не только пин-код но так же сумму и прочие значение. Протокол может запросить ввод такого значение при этом отобразив произвольное приглашение. Теоретически можно попросить терминал о вводе 4-х значного числа и при этом отобразить приглашение с текстом Enter PIN. Такой ввод терминалом не будет восприниматься как пин-код. Пользователь введет заветные цифры (правда немаскированно) и терминал отправит ввод злоумышленнику.
        Современные терминалы кстати имеют защиту от произвольного приглашения к вводу. Как правила все приглашения захардкожены и специальной командой (условно ShowPromtNumbe(int num)) можно отобразить одно из приглашений находящихся в памяти терминала. Таким образом подобная схема в текущих реалиях возможно только на очень старом и давно не обновляемом железе.

        Для того чтобы подобных злодеяний было меньше, в 2006 году приняли стандарт PCI DSS, который достаточно жестко регламентирует многие аспекты платежной инфраструктуры и сопутствующих вещей.
          0
          В прочем, имхо, я рассказал немного о других уязвимостях.

        Only users with full accounts can post comments. Log in, please.