Суровая бюрократическая реальность, или как мы поучаствовали в первом государственном хакатоне
Хочу поделиться своими впечатлениями и мнениями о том, как мы небольшой командой решили в первом Держ-Хакатоне, который прошел
Мы — это команда проекта EUSign.org в составе трех человек. Наш проект предоставляет API для использования ЭЦП государственного стандарта. Все началось «for fun», но поскольку этот fun начал поддерживаться живым интересом со стороны разных людей, мы решили развивать проект дальше. А это рано или поздно подразумевало контакт с представителями государственной власти.
Со стороны «Информационно-ресурсного центра», подчиненного Минюсту Украины, недавно был запущен публичный API к реестру юридических и физических лиц. И в честь запуска они организовали событие «Держ-Хак 2014».
Нам это событие показалось шансом встречи двух вселенных — нашей, крипто-задротов, и суровой бюрократической реальности. Поэтому мы купили билеты и выехали из Одессы, Львова и Днепропетровска. Решили проверить, возможен ли диалог.
Первый день
Мы ехали без особых позитивных ожиданий, скептически и пассивно-негативно настроенными, чтобы встретиться с людьми, которые, казалось, делают неправильно всё, за что берутся.
В первый день на регистрации нам выдали бейджи, программу мероприятия и сводку правил. На небольшом официальном открытии присутствовали важные дяди из государственных органов, нам с эпичностью канцелярского пафоса представили жюри и пообещали призы.
А чуть позже мы ознакомились с настоящими условиями и заданием. Оказалось, бюрократы поняли слово «хакер» буквально и ожидали, что мы будем «хакерить», т.е. взламывать их систему. Но взламывать нам предоставили не всю инфраструктуру, а только API. Правда, на следующий день выяснилось, что подразумевалось даже не API, а только одна-единственная страничка с CAPCHA. Но хорошо, что мы невнимательно слушали...
Изучение API
Однажды в моей жизни была ситуация, когда я встал и громко сказал на всю аудиторию: «Что я тут делаю!», а потом ушел и никогда не возвращался. Мои чувства были очень близки к этому состоянию в первые часы хакатона. API представляет из себя один-единственный метод, к которому можно обратиться через SOAP через WSDL, в котором возвращается ответ, в котором в одном из свойств лежит текстовое поле, в котором находится
Кроме API, которое запустили только сейчас, для пользователей уже давно существует публичный бесплатный доступ к данным реестра, но он отвечает через CAPCHA. К нему API не предоставляется. Зато формально выполняется требование закона о бесплатном предоставлении доступа к государственным реестрам.
Мотивации делать сервис, который потом будет обходиться клиентам по 3 гривны за запрос, не появилось. Вяло начали обсуждать создание какого-то кеширующего proxy, который будет накапливать данные, а потом перепродавать их дешевле. Все готовы были встать и поехать по домам. Мы проверили, сколько стоит сервис распознавания капчей индусами (2$ за 5000 штук). Посчитали стоимость выкачивания всех данных по официальной и призовой цене с помощью индусов.
В целом поток мыслей был похож на диалог команды Пегого Дудочника из сериала «Кремниевая Долина» накануне выступления.
Мы вообще не планировали ничего взламывать или искать дыры. Это не наш бизнес и не наши риски, но поскольку стало скучно, то приходилось хоть что-то делать.
Я уговорил всех посидеть еще немного, а сам начал изучать, как сделать клиент с библиотекой распознавания картинок на основе бесплатного интерфейса. Разбираясь, проверял на дырявость. Сервис предельно прост — хоть и имеет некоторые спорные моменты, но ценности как объект взлома не представляет. Нет инструментов группового поиска (например, по КВЕДу или географии). Также не публикуется список список всех живых ИНН, а даже если бы и был какой-то старый ворованный, возник бы вопрос о его полноте. Скорее всего, эту базу будут пытаться (уже сделали) парсить и кешировать данные у себя. Скорее всего, будут стараться обойти ограничения, но пока это не бизнес-подход. Вероятно, потом спарсенная база данных будет продаваться на разных сайтах.
Тем временем Илья обнаружил в тестовом API особенности работы SOAP-клиента через WSDL. Оказывается, WSDL-клиент коннектится к целевому хосту, там скачивает описание схемы, а в ней получает список URL, к которым потом можно обращаться (всё это километровые XML файлы). Эту схему клиент, вероятно, может класть в кэш, и не использует при каждом запросе. А теперь угадайте, чем забиты страницы результатов поиска по запросу «wsdl cache»? Правильно: ответами, как его отключить в клиентах на разных языках программирования. Кривой SOAP вызывает рвоту не только своей избыточностью, но и всей своей инфраструктурой.
WSDL-схема вытягивается по plain HTTP — подменив хост, можно отдать свою схему и указать свой URL, куда приходит авторизация с логином и паролем в открытом виде. Логин и пароль передаются параметрами функции RPC. Соответственно, можно не только перехватывать и подменять запросы в дальнейшем, но и отправлять свои платные запросы API (напомню, они по 3 гривны каждый).
Мы подготовили описание этой атаки, сделали пример сервера перехвата паролей. Тем самым ознакомились с работой API. Поскольку рентабельность прикручивания к EUSign.org при нынешних ограничениях сомнительна, то мы сделали демку использования для своих нужд и успокоились.
Вечер посвятили общению и хождению по Киеву. Посмотрев на город, я сделал вывод, что Кличко со своими обязанностями не справляется. Город и метро завешаны отвратительным количеством самой низкокачественной рекламы, хуже киевской рекламы не видел ни в одной стране или городе. Крещатик до сих пор не пешеходный.
Второй день
Второй день был более продуктивным и был посвящен общению и презентациям проектов. К нам подходили какие-то журналисты, задавали странные вопросы, но до конца не было понятно — они так стебутся или действительно весь их мир сводится к формату светской вечеринки. Вели себя не очень профессионально.
В течение двух часов команды представляли проекты, сделанные за предыдущие сутки. Было приятно смотреть, как некоторые участники спят на столах — наверное, много работали.
Тех, кто пытался взломать, было не много. Две команды нашли интересные замечания. Кажется, одну из дыр быстро залатали сотрудники в процессе, одни ребята вроде бы ее наблюдали. Вопреки тому, что у нас не было красивой презентации, и Изя говорил на языке, который понимал мало кто из жюри, нам неожиданно дали грамоты за защиту интересов защитников реестра.
Мы хотели сделать больше, но из того, что нам дали, получилось почти ничего.
Переходников для Apple Air ни у кого не было, а PDF-документ техническая группа почему-то не смогла открыть (в 21 веке ридер, кажется, встроен во все браузеры, но надо было «поверпоинт»). Поэтому я провел презентацию EUSign.org самым провальным способом — без презентации.
Так получилось, что мы всё равно собрали много наград и заняли второе место в социальной номинации после Сергея Паю — CEO Taxer.ua (что ценнее самой награды). В качестве официального приза мы получили право подписать договор с компанией, обслуживающей реестр за 1.92 гривны за запрос. Да, мы теперь сертифицированная криптомафия!
Выводы и о результатах общения постараюсь написать в отдельной статье.
UPD:
Продолжение: Контакт с чиновниками
119 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.