Исследователь безопасности обнаружил ряд ошибок, позволяющих взламывать банкоматы и широкий спектр терминалов продаж по-новому — взмахом телефона над устройством для чтения бесконтактных банковских карт. К старту курса Этичный хакер делимся переводом статьи о возможностях, которые открываются при эксплуатации обнаруженных уязвимостей, о том, что делал автор, чтобы обнаружить их и о том, как отреагировали производители банкоматов.
Иосип Родригес, Исследователь и консультант по безопасности охранной фирмы IOActive провёл последний год в поисках уязвимости в так называемых чипах коммуникации ближнего поля (NFC), работающих в миллионах банкоматов и терминалов продаж по всему миру. С NFC для проведения платежа или вывода денег из банкомата не нужно вставлять карту — достаточно провести её над считывателем. Технология работает в бесчисленных розничных магазинах и ресторанах, торговых автоматах, паркоматах и такси по всему миру.
Родригес написал приложение для Android, позволяющее смартфону имитировать радиосвязь банковских карт и эксплуатировать недостатки прошивки систем NFC. Одним взмахом смартфона он может вывести из строя терминалы продаж, взломать их для сбора и передачи данных банковских карт, незаметно изменить стоимость транзакций и даже заблокировать устройство, отобразив сообщение программы-вымогателя.
Родригес утверждает, что он даже может заставить банкоматы, по крайней мере одной марки, выдавать наличные, хотя такой «джекпоттинг» работает только в сочетании с другими ошибками, которые, по его словам, он нашёл в программном обеспечении банкоматов. Из-за соглашений о неразглашении с поставщиками банкоматов Родригес отказался уточнять или раскрывать эти ошибки.
«Можно модифицировать прошивку и изменить цену, например на один доллар, пока на экране отображается другая цена, вывести устройство из строя или установить своего рода программу-вымогатель — вариантов много», — рассказывает Родригес об обнаруженных им уязвимостях.
«Выстроив цепочку атак, а также отправив специальную полезную нагрузку на компьютер банкомата, вы сможете снять деньги с банкомата, как джекпот, просто проведя телефоном над NFC-считывателем».
Исследователь рассказывает, что с июня по декабрь 2020 года он предупреждал о своих находках пострадавших поставщиков, включая ID Tech, Ingenico, Verifone, Crane Payment Innovations, BBPOS, Nexgo, а также неназванного поставщика банкоматов.
Тем не менее исследователь также предупреждает о том, что затронуто огромное количество систем, а также о факте, что многие терминалы и банкоматы обновляют ПО нерегулярно, во многих случаях требуя физического доступа для обновления. Это означает, что многие устройства, вероятно, останутся уязвимыми. «Физическое исправление стольких сотен тысяч банкоматов потребует много времени», — говорит Родригес.
В качестве демонстрации таких уязвимостей Родригес поделился с WIRED видео, где он проводит смартфон над NFC-считывателем банкомата на улице его дома, заставляя банкомат вывести сообщение об ошибке. Считывающие устройство выходит из строя и больше не читает его карту, когда исследователь прикладывает её к банкомату.
Он также не предоставил видеодемонстрацию атаки джекпоттинга, поскольку, по его словам, мог легально протестировать только устройства, полученные в рамках консультаций IOActive по вопросам безопасности для пострадавшего поставщика банкоматов, с которым IOActive подписала соглашение о неразглашении.
«Полученные результаты — отличное исследование уязвимости работающего на встраиваемых устройствах программного обеспечения», — говорит Карстен Нол, основатель фирмы по безопасности SRLabs и известный взломщик прошивок, который проанализировал работу Родригеса.
Однако Нол указывает на несколько недостатков, которые делают метод непрактичным в реальных кражах. Взломанный считыватель NFC может украсть только данные карты с магнитной полосой, но не PIN-код жертвы или данные с чипов EMV. И тот факт, что трюк с обналичиванием денег из банкомата потребует дополнительной уязвимости в коде конкретного банкомата, — немаловажная оговорка, утверждает Нол.
Вместе с тем исследователи в области безопасности, такие как покойный хакер IOActive Барнаби Джек и команда Red Balloon Security, уже много лет вскрывают уязвимости банкоматов и даже показали, что хакеры могут удалённо запускать джекпоттинг ATM. Генеральный директор и главный научный сотрудник Red Balloon Анг Куи рассказывает, что впечатлён выводами Родригеса и, несмотря на то что IOActive утаила некоторые детали своей атаки, не сомневается, что взлом считывателя NFC может привести к выдаче наличных во многих современных банкоматах.
«Я думаю, очень правдоподобно, что как только вы получите возможность выполнения кода на любом из этих устройств, то сможете добраться до главного контроллера: он полон уязвимостей, которые остаются в системе более десяти лет», — говорит Куи. «Оттуда, — добавляет он, — абсолютно точно возможно контролировать кассетный диспенсер, который хранит и выдаёт наличные деньги пользователям».
Родригес, который провёл годы, тестируя безопасность банкоматов в качестве консультанта, рассказывает, что год назад начал изучать вопрос о том, могут ли бесконтактные считыватели карт банкоматов, чаще всего продаваемые компанией ID Tech, специализирующейся на платёжных технологиях, — служить средством их взлома. Он начал покупать считыватели NFC и терминалы продаж на eBay и вскоре обнаружил, что многие из них страдают от одного и того же недостатка безопасности: они не проверяют размер пакета данных, отправляемого через NFC с банковской карты на считыватель, этот пакет называют пакетом данных протокола приложения или APDU.
Чтобы отправить APDU в сотни раз больше обычного и вызвать переполнение буфера, Родригес написал приложения для Android с NFC. Уязвимость переполнения буфера существует уже десятилетиями, она позволяет хакеру повредить память целевого устройства и запустить свой код.
Когда WIRED связались с пострадавшими компаниями, ID Tech, BBPOS и Nexgo не ответили на просьбы о комментариях, также отказалась от комментариев Ассоциация индустрии банкоматов. Компания Ingenico в своём заявлении сообщила, что благодаря принятым мерам безопасности способ переполнения буфера Родригеса мог только вывести из строя её устройства, но не позволял выполнить код на них. Однако, «учитывая неудобства и последствия для наших клиентов», компания всё равно выпустила исправление.
Родригес сомневается, что меры Ingenico действительно предотвратят выполнение кода, но он не написал доказательство концепции для демонстрации.
Компания Verifone, в свою очередь, заявила, что нашла и устранила уязвимости терминалов, на которые Родригес обратил внимание в 2018 году, задолго до того, как он сообщил о них. Но Родригес утверждает, что это лишь демонстрирует непоследовательность исправления в устройствах компании; он говорит, что протестировал свои методы взлома с помощью NFC на устройстве Verifone в ресторане в прошлом году и обнаружил, что оно по-прежнему уязвимо.
Многие находки исследователя оставались в тайне целый год, в ближайшие недели Родригес планирует поделиться техническими деталями уязвимостей на вебинаре, отчасти, чтобы подтолкнуть клиентов пострадавших производителей внедрить выпущенные исправления.
Кроме того, Родригес хочет привлечь внимание к плачевному состоянию безопасности встраиваемых устройств в целом. Он был потрясён, обнаружив, что такие простые уязвимости, как переполнение буфера, сохранились во многих широко используемых устройствах — тех, которые работают с наличными и конфиденциальной финансовой информацией.
«Многие годы эти уязвимости присутствуют в прошивке устройств, с которыми мы каждый день сталкиваемся при работе с банковским картами, с нашими деньгами, — говорит он. — Они должны быть защищены».
Из этого материала становится ясно, что даже системы, которые непосвящённому человеку кажутся самыми надёжными, могут подводить из-за недостатков, известных уже десятки лет. Если вам хочется самому находить такие уязвимости, то научиться всему можно на нашем курс для пентестеров со специальной скидкой по промокоду HABR.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
Другие профессии и курсы
ПРОФЕССИИ
КУРСЫ
LuigiVampa
На мой взгляд название статьи немного вводит в заблуждение.
Стандарт PCI-DSS _обязывает_ производителей банкоматов и другого подобного оборудования разносить все отдельные части общей системы которые могут подвергнуться риску компрометации в отдельные модули. Например код отвечающий за проведение EMV транзакции и взаимодействие с чипом карты (NFC или контактная площадка, не важно) обязан быть вынесен в другое пространство и не выполняться на самом хосте. Это значит что и кардридер, и кассетник для работы с наличными, и ККТ с фискальником, и многие другие части не будут частью основной машины, а будут отдельными устройствами подвешенными на PCI или USB шину. Для работы с картами например в 99% случаев будет использоваться отдельное устройство, причём вся логика работы с картами будет _уже_ зашита в нём и все данные касающиеся этого никогда не будут передаваться между читалкой и хостом. На деле это означает что с компьютера внутри банкомата будут посылаться не команды «отправь карте массив байт 00A40000AABBCCDDEE00» или «прочитай массив байт из буфера куда записался ответ от карты», а «вот сформированный документ, подпиши приватным ключом и верни цифровую подпись». Т.е. позаигрывать с буферами особо не получится. В редких исключениях, в ситуациях когда подобное сильно затруднено, например в кассовых устройствах на базе android, вся эта логика будет крутиться как минимум в отдельном отгороженном со всех сторон процессе, хотя возможно и это уже запретили.
Поэтому даже скомпрометировав железку проводящую NFC взаимодействие с картой с вероятностью в 99,9% ничего дальше провернуть не получится, хотя наверняка устроить DOS в хостовой системе попробовать можно, если что-нибудь необычное отправить в сокет или на шину.
Вот заменить какие-то данные в чеке пока он находится в памяти железки общающейся с картой локально её скомпрометировав — не исключаю, такое вполне возможно, особенно зная как многие производители спешат выводить устройства на рынок, не особо оглядывая на безопасность, но для таких случаев также существует сертификация и для чипов карт, и для железок которые с ними работают. Компания производитель обязана предоставить доказательства что после разработки устройства не менее X человекочасов и Y денег было потрачено на исследование безопасности нового устройства.
Не берусь утверждать на 100%, но мне кажется что большинство упомянутых атак — возможны только гипотетически, а пример из видео в статье — вероятно как раз случай когда все звёзды сошлись. Это касса на андроиде, к которым, по крайней мере раньше, в качестве исключения применялись значительные послабления к изоляции компонентов. Т.е. взаимодействие с картой вероятно происходит через системный сервис который крутится прямо на хосте, плюс, по моему опыту, на подобных устройствах почти всегда стоят чипы от mediatek, знаменитые своими уязвимостями и сильно отстающая от актуальной версия андроида. Предполагаю что в этом конкретном случае можно нарушить правильный ход оплаты и модифицировать данные платёжного документа, вызвать DOS на устройстве, или даже воспользоваться какой-нибудь старой известной уязвимостью для локального повышения привилегий, но этот случай точно не показатель
DjPhoeniX
Устройства на шине USB преркасно могут быть переконфигурированы в мышь/клавиатуру. PCI вообще имеет прямой доступ к физической памяти хоста через DMA. Но даже если рассадить всех «как можно дальше», оставив какие-нибудь RS232, это не избавит от багов в софте, который будет рулить центральной логикой, а значит, послав что-то очень хитро заполненное, можно добыть переполнение буфера и следовательно выполнение произвольного кода. В статье как раз говорится про цепочку эксплоитов…
Paskin
Даже локальный DoS на ридеры в момент проведения массового мероприятия или в час пик на транспорте - может сам по себе принести изрядные проблемы. Как и послужить базой для социальной инженерии - "у всех не работает, а у нас работает".