Исследователь безопасности обнаружил ряд ошибок, позволяющих взламывать банкоматы и широкий спектр терминалов продаж по-новому — взмахом телефона над устройством для чтения бесконтактных банковских карт. К старту курса Этичный хакер делимся переводом статьи о возможностях, которые открываются при эксплуатации обнаруженных уязвимостей, о том, что делал автор, чтобы обнаружить их и о том, как отреагировали производители банкоматов. Иосип Родригес, Исследователь и консультант по безопасности охранной фирмы 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. Узнайте, как прокачаться и в других специальностях или освоить их с нуля:   Профессия Data Scientist   Профессия Data Analyst   Курс по Data Engineering ПРОФЕССИИ   Профессия Fullstack-разработчик на Python   Профессия Java-разработчик   Профессия QA-инженер на JAVA   Профессия Frontend-разработчик   Профессия Этичный хакер   Профессия C++ разработчик   Профессия Разработчик игр на Unity   Профессия Веб-разработчик   Профессия iOS-разработчик с нуля   Профессия Android-разработчик с нуля КУРСЫ   Курс по Machine Learning   Курс «Machine Learning и Deep Learning»   Курс «Математика для Data Science»   Курс «Математика и Machine Learning для Data Science»   Курс «Python для веб-разработки»   Курс «Алгоритмы и структуры данных»   Курс по аналитике данных   Курс по DevOps