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

Фото: Станислав Красильников / ТАСС

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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