Немецкие исследователи информационной безопасности Карстен Ноль (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.
Не все так плохо
Обнаруженные немецкими исследователями проблемы безопасности платежных протоколов затрагивают главным образом технологии, использующиеся в Германии, и не столь распространены в других странах.
Тем не менее, российские исследователи информационной безопасности также публиковали информацию о серьезных уязвимостях в системах работающих в нашей стране банков и возможных атаках на сами банкоматы и платежные терминалы.
Автор: Латера Софтвер