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

в 8:31, , рубрики: Блог компании Латера Софтвер, информационная безопасность, передача данных, платежные терминалы, протоколы, уязвимости

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Латера Софтвер

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js