Офтоп
Никита Лихачёв

Приложил подорожник к Android

Петербургский студент научился бесплатно (но незаконно) ездить в транспорте по карте «Подорожник», перезаписывая её через Android-смартфон с NFC.

20-летний студент заочного отделения ЛЭТИ по имени Антон протестировал возможность перезаписи проездных карт «Подорожник», используемых в метро и наземном транспорте Санкт-Петербурга. Как выяснилось, система метро оперативно блокирует модифицированные карты, однако в автобусах и троллейбусах города проверка работает иначе и фактически позволяет ездить бесплатно.

Карты «Подорожник» работают на базе стандарта MIFARE, и для их чтения и записи подойдёт почти любой NFC-ридер, в том числе встроенный в смартфоны на базе Android. Используя описанную в 2015 году методику атаки на подобные карты и внешний NFC-ридер, Антон получил доступ к содержимому её 4 КБ внутренней памяти.

Программист обнаружил, что из 40 секторов памяти данные изменяются только в трёх из них: вероятнее всего, в них записывается информация о балансе карты и о времени последней поездки. В одном из этих секторов находится имитовставка — код, создающийся по определённому алгоритму на основе перезаписываемых данных: если не знать этот алгоритм, задать хранящимся на карте переменным произвольные значения (например, баланс в 1000 рублей) не выйдет.

Поэтому Антон решил идти по другому пути: он пополнял карту, записывал содержимое её памяти, применял её (проходя через турникет или в автомате пополнения), а затем пытался восстановить прежнее содержимое памяти и пробовал воспользоваться «Подорожником» снова. Для удобства он написал собственное приложение для Android и назвал его Plantain («Подорожник»): благодаря ему он мог перезаписывать карты на ходу, прикладывая их к смартфону.

Оказалось, что если вставить перезаписанный «Подорожник» в автомат, он тут же блокируется, и использовать его больше нельзя. Если пройти по нему через турникет метро, карта блокируется примерно через два часа. Однако в наземном транспорте Антон смог воспользоваться перезаписанными картами без ограничений: в течение двух недель тестирования их никто не заблокировал.

В разговоре с TJ студент пояснил, что хотя московская «Тройка» и петербургский «Подорожник» работают схожим образом (их даже планируют объединять), системы их безопасности отличаются.

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

С наземным транспортом ситуация хуже: заблокированный в метро «Подорожник» работает в наземке до сих пор, значит, базы там обновляются очень редко или не обновляются вообще.

Антон, студент ЛЭТИ

«Подорожник» имеет гибкую систему тарифов, однако один его параметр неизменен: перед использованием карту нужно приобрести за 60 рублей, но впоследствии её можно вернуть в кассу. Программист считает, что её стоимость на самом деле ниже производственных затрат, и эта мера не защищает от мошенничества.

Стоимость карты обусловлена только тем, что сам носитель с чипом стоит каких-то денег. Если покупать бланк карточки в розницу, цена, возможно, будет даже больше, чем стоимость «Подорожника» в метро.

Более того, «Подорожник» можно вернуть в кассу и получить его стоимость обратно: тогда его даже смогут продать кому-то ещё. Я не стал пробовать вернуть заблокированные карты, не захотел дополнительно рисковать. Но вообще политика блокировок правильная: главная цель — сделать подделку нецелесообразной, и в метро у них всё получается, а вот в наземном есть над чем поработать.

Антон, студент ЛЭТИ

По словам Антона, получить ключ, при помощи которого защищено содержимое карты, очень непросто: он вшит в турникеты и валидаторы, доступ к нему есть только у разработчиков. Если этот ключ утечёт, это будет гораздо более серьёзной проблемой, чем возможность ездить по карте в наземном транспорте.

Антон подчеркнул, что провёл исследование из интереса, а не ради экономии, тем более что подделка проездного преследуется по УК РФ: «Поделиться опытом для меня интереснее, чем пытаться сэкономить на проезде, тем более нарушая закон».

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

Тут из будки вышел контролёр и направился в мою сторону: они у себя на пульте видят проходы или возникающие ошибки. Решил избежать диалога и быстро прошёл, используя третью карту. Догонять меня никто не стал, но после этого я пытался вести себя немного аккуратнее.

Антон, студент ЛЭТИ

Обновлено: Спустя почти неделю после публикации Антона газета «Фонтанка» рассказала, что власти города знали о возможной уязвимости карты. При этом издание намекнуло, что исследование безопасности «Подорожника» студентом по времени совпало с активной фазой внедрения новой системы контроля за проездом. Самого Антона вызвали на совещание в комитет по транспорту, однако о сути встречи ничего до сих пор не известно.

В комитете по транспорту подтверждают, что о теоретической возможности такого взлома знали, и объясняют использование старого протокола тем, что он универсален: скажем, карты для льготников используются в том числе и в Ленобласти, и если сейчас провести модернизацию шифрования, не факт, что эту карту смогут воспринимать посторонние терминалы.

«Фонтанка»