27 мая 2016 в 13:58

Хакер взломал систему оплаты карты «Тройка»

Уязвимость позволяет пользоваться транспортом бесплатно
Станислав Красильников / ТАСС
Опытный программист выявил уязвимость приложения «Мой проездной», которое служит владельцам смартфонов для пополнения карты «Тройка». Баг позволяет ездить на всех видах московского транспорта бесплатно.

Опытный программист выявил уязвимость приложения «Мой проездной», которое служит владельцам смартфонов для пополнения карты «Тройка». Баг позволяет ездить на всех видах московского транспорта, в том числе аэроэкспрессах и велосипедах, фактически бесплатно, посещать планетарий и делать многое другое.

Более того — программист разработал приложение под Android, которое позволяет пополнять электронный кошелек виртуальными деньгами.

UPD: Через несколько часов после выпуска статьи пресс-служба Московского метрополитена сообщила, что устранила уязвимость в системе. Для этого разработчики даже связались с программистом, который нашел баг.

Две недели и 10 рублей

Информация о приложении и дефекте системы оплаты появилась на одном из популярных сайтов, изучающих уязвимости программ. «Были найдены уязвимости, позволяющие выполнить подделку баланса, записанного на электронном кошельке карты Тройка, - сообщил пользователь под именем Игорь Шевцов. - В результате чего стало возможным использование систем, поддерживающих карту, без оплаты».

В ходе исследования, которое продолжалось всего 14 дней и выполнялось одним человеком в свободное время, Шевцов выяснил, что карта ни капельки не защищена от подделки баланса электронного кошелька. Системы проверки подлинности электронных подписей не соответствуют современным требованиям и легко обходятся одним-единственным вмешательством.

Для взлома системы Игорь Шевцов использовал приложение для смартфонов «Мой проездной», которое разработано «Банком Москвы» для гаджетов Android, и позволяет пополнять карту с помощью смартфона с функцией NFC. «Несмотря на применяемые системы защиты, такие как ключи доступа к карте и криптографическая подпись в секторе электронного кошелька, подделка баланса оказалась возможна», - мягко замечает программист.

Скриншот исследования с указанием дефектного кода

Больше всего времени заняло изучение структуры данных в памяти карты. Доступ к ним оказался открыт: все данные, в том числе дата, время и место прохода через считывающие устройства, размер и место списания и многое другое хранятся в незашифрованном виде. Но просто шифровка этой информации, по мнению исследователя, не решает проблему.

«В случае, если бы данные в памяти карты были зашифрованы, вероятнее всего, потребовалось бы физическое проникновение в системы, работающие с картой, что делает атаку существенно сложнее», — уверен Шевцов.

Более того, затратив всего десять рублей, программист сумел найти ячейки, в которых хранятся данные о балансе: всего-то и надо было, что десять раз пополнить «Тройку» на рубль, внимательно изучая изменения кодов.

«Путём подбора возможных форматов хранения данных было выяснено, что значение баланса электронного кошелька хранится в области памяти от младших 4 бит 8 байта до старших 3 бит 10 байта и рассчитывается по формуле…», - пишет программист. Соответственно, изменение именно этих цифр в памяти карты «Тройка» позволило пополнить баланс карты, не потратив ни копейки.

Итогом исследования стало приложение TroykaDumper, которое позволяет легко пополнить баланс карты, фактически не потратив ни копейки. А поскольку приложение устанавливается на мобильный телефон с ОС Android, то электронный кошелёк наполняется вполне реальными деньгами в любом месте в любое время. Автор исследования также даёт вполне кликабельную ссылку на скачивание программы.

Что думает производитель

Редакция МОСЛЕНТЫ связалась с производителем карты «Тройка» и выяснила, что программа «Мой Проездной» разработана специалистами одного из крупных российских банков и сертификацию не проходила, так как «производители автомобилей не сертифицируют бензин». Информацией об экспертной оценке качества программ конкретного Банка фирма-производитель не обладает – кредитное учреждение защищено имиджем.

В настоящее время получить комментарий от банка редакции МОСЛЕНТЫ не удалось.

Скриншот http://troika.mos.ru/

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

Опытный программист, специализирующийся на защите информации, рассказал МОСЛЕНТЕ, что система безопасности «Тройки» сделана на уровне прошлого века, и не отвечает современным требованиям. Информация о низком качестве специалистам поступала и раньше, однако до сегодняшнего дня достоверных данных о взломе не было. Сейчас многие криптографы, используя опубликованный материал, уже бросились проверять приведённые в нём данные.

Москвичи пользуются картой «Тройка» с 2013 года. Она является пополняемым электронным кошельком. Согласно сайту troika.mos.ru, горожане приобрели более 7 миллионов карт. «Тройка» принимается к оплате в метро, наземном пассажирском транспорте, в кассах «Аэроэкспресса», планетарии, московском зоопарке, катках ВДНХ и Парках Горького, в пунктах городского велопроката.