Количество идиотизма в этой истории делает эту заметку достаточно длинной, так что я начну с конца: как сказано в заголовке, 18-летний молодой человек был два дня назад арестован за «взлом» новой системы электронных билетов Будапешта, несмотря на то, что он сразу же сообщил о найденной им уязвимости.
По мере того, как история распространялась в социальных сетях, на фейсбук-страницах вовлеченных компаний появлялись десятки тысяч обзоров с 1 звездочкой (оператор новой системы, Budapest Transport Authority, сокращенно на венгерском ВКК), и T-Systems Hungary, отвечающий за разработку и поддержку системы электронных проездных. T-Systems Hungary принадлежит Telekom Hungary, который в свою очеред является дочерней компанией Deutsche Telekom, торговая марка T-Systems также принадлежит DT, и они являются весьма крупным игроком на рынке всей Европы.
История началась несколько недель назад, когда ВКК анонсировали запуск мобильной версии электронных проездных. Все, включая меня, были воодушевлены и удивлены одновременно. Мы уже знали, что они работали над системой на основе NFC/smart card уже на протяжении 4-х лет, без каких-либо видимых результатов, но потратив при этом более 4-х миллионов евро. Первые вопросы, пришедшие мне в голову, был «Как-то слишком быстро, без предварительных анонсов и слухов» и «Интересно, как они реализуют защиту от мошенничества и механизмы аутентификации?»…
Ответ на первый вопрос, по крайней мере, частичный ответ – они хотели запустить систему до начала чемпионата FINA, проходящего в Будапеште прямо сейчас. Более того, они запланировали запуск системы в день официального открытия чемпионата (14 июля). Немного попахивает, да? Прежде всего, не стоит запускать такую систему в крупном городе с развитой системой общественного транспорта и 1.7 миллионов жителей без серьезного тестирования. Во-вторых, не стоит запускать такую систему во время события, привлекающего в город огромное количество туристов. И в третьих, хорошо бы сделать систему доступной уже за несколько дней до начала чемпионата, т.к. многие посетители приезжают немного заранее.
Но второй вопрос гораздо интереснее – как сделать систему безопасной? Все, что было известно – что система будет онлайн, в вебе, т.е. не нужно будет устанавливать никаких приложений. Что, безусловно, делает защиту еще более интересной задачей.
То, что случилось в день запуска, было неожиданным даже для программистов, рожденных в маленькой центрально(восточно)европейской стране в советскую эпоху. Конечно же, были проблемы, конечно же, билеты было легко копировать на другие устройства, но это были лишь цветочки. Вот что нам удалось обнаружить:
- Система хранила пароли в открытом виде и посылала их по электронной почте, если вы просили напомнить забытый пароль. Это означало, что для большинства людей те, кт получали доступ к системе, получали доступ и к их электронной почте (Будем честными, большинство пользователей используют везде один и тот же пароль).
- Пользователи могли видеть данные других пользователей, всего лишь изменив урл. В приложении вообще не было системы управления доступом. Люди жаловались, что они могли получить доступ к профилям других пользователей. Да, при регистрации необходимо было указать имя-фамилию, адрес и номер документа. И это должно было быть настоящим, потому что эти данные надо было предьявлять контролерам билетов.
- Если вы просто вводили урл, (shop.bkk.hu), сайт просто не открывался. Вначале я думал, что он упал, но оказалось, что они просто не сделали редирект с http на https. И это длилось несколько дней. Если вы про это не слышали, вы просто не могли пользоваться системой.
- Кто-то обнаружил, что пароль администратора был adminadmin, и смог войти в систему под этой учетной записью.
- Конечно же, билеты можно было легко скопировать, пользователи даже выложили видео с тем, как они 10 раз прошли через систему контроля с копиями билетов. Контролеры использовали сканер QR-кодов лишь дважды (у большинства просто не было сканеров), но даже тогда они не обнаружили ничего подозрительного (почему-то неудивительно).
- И самое смешное – вы могли сами установить цену покупаемого билета.
Последняя уязвимость и была найдена 18-летним молодым человеком. С нее и начался этот рассказ. С его слов, он даже еще не умел программировать (он поступил в университет с этой осени). Он всего лишь воспользовался средствами веб-разработчика, встроенными в браузер (они доступны для всех), увидел, что цена отправляется назад на сервер в момент совершения покупки, и попробовал ее изменить. Месячный проездной стоит 9500 форинтов (около 30 евро), он изменил цену на 50 форинтов. При получении подтверждения об успешной покупке и получения проездного он сразу же написал по электронной почте в ВКК о том, что у них серьезная проблема. В ответ он получил лишь емейл о том, что его проездной аннулирован – и все. И лишь когда об этом написали в прессе, и начались массовые обсуждения вышеприведенных уязвимостей, ВКК вместе с T-Sytems стали срочно прикрывать свои задницы. Они стали заявлять о массированных хакерских атаках, о том, что общество показало себя недостаточно зрелым для такой системы, о том, что любую систему можно сломать, но их файрволы предотвратили множество атак, что пользователи использовали непристойные имена при регистрации, которые им пришлось поудалять, и тому подобное.
Один из представителей T-Sytems сообщил на пресс-конференции на следующий день, что они рады получать отчеты об ошибках, и что они получили один такой отчет, который безусловно является незаконной попыткой взлома. И хотя он упомянул о попытках атак SQL injection, можно быть уверенным, что речь шла о 18-летнем «хакере», оказавшемся достаточно глупым, чтобы написать им е-мейл.
Неделю спустя в новостях сообщили о том, что он был задержан полицей у себя дома (и отпущен через несколько часов). В нормальной стране, с работающей демократией, естественно, тот, кто заявляет о подозреваемом нарушении, не несет ответственности за то, что после этого должна делать полиция (а могли бы хотя бы сказать спасибо). Но в такой стране полиция не устраивает захват того, кто не представляет угрозы для общества. Особенно если это незаконно. А в Венгрии это таки незаконно. Единственная причина того, что они это сделали – напугать.
В итоге, все начинает выглядеть очень и очень нехорошо для всех участников.
- ВКК заказала и приняла в эксплуатацию систему, наводненную детсадовскими ошибками. Большинство среднестатистических джуниор разработчиков написали бы лучше, за пару недель.
- T-Systems согласились разработать (скорее всего, за невыполнимые сроки) решение, которое не могло бы нормально работать, даже будучи нормально написанным. (Предполагаю, что перед ними не стояло задачи сделать так, чтобы билеты было невозможно скопировать). И они ее таки разработали. И кто-то в руководстве сказал «ОК, делайте релиз».
- ВКК платит T-Systems 80 тыс. евро в месяц за поддержку системы. Что весьма интересно, т.к. 80 тысяч достаточно, чтобы нормально реализовать всю систему с нуля. Хорошо, два-три раза по 80 тысяч, если добавить пару менеджеров, немного тестирования и немножечко откатов.
Вы, конечно же, можете спросить, а зачем было настолько срочно выпускать релиз для чемпионата FINA? Давайте забудем о сотрудниках ВКК, т.к. эта организация управляется политиками. Но как нормальный менеджер мог допустить, чтобы эта фигня ушла в релиз? Неужели ни один из инженеров в команде не сообщал руководству о том, что что-то идет не так? Мне сложно в это поверить.
И снова, было ли это связано с FINA? Почему эти ребата повели себя столь грубо? В Венгрии людям сильно не нравится, если с ними так себя ведут. Особенно если в это вовлечены политики. И по поводу этого ничем не оправданного давления на парня, заявившего об уязвимости. По закону то, что он сделал, даже не является нелегальным. Он сообщил о «неавторизованном воздействии» на систему, что покрывается параграфом «совершение мошенничества с использованием информационных систем», но условия, описанные там, не были выполнены. Что ставит под сомнение, что полиция повела себя правильно (или же что T-Systems не сообщили всей имеющейся у них информации).
Автор: olekl