Злоумышленники могли украсть из “Дії”: имя, адрес, телефон, электронную почту и т.д, зная только номер авто
В декабре команда Министерства цифровой трансформации на платформе Bugcrowd при поддержке Агентства по международному развитию США (USAID) провела тестирование по нахождению возможных ошибок в «Дія». По словам Министерства, в приложении не выявили уязвимостей, которые бы влияли на безопасность. Было найдено две проблемы низкого уровня, которые сразу были исправлены специалистами.
Один из украинских «белых хакеров», который сохранил анонимность, раскритиковал программу багбаунти от Минцфиры в своей колонке. Редактор издания AIN.UA дополнительно опросил участников рынка: они согласились, что назвать «серьезным» то испытание, которое провело Министерство — нельзя. В Минцфиры, позиция которого также представлена в материале, уверены, что все прошло отлично.
С 8 по 15 декабря Минцфиры провело программу поиска уязвимостей приложения «Дія». Общий призовой фонд для «белых хакеров» — $35 000.
«Дія» підтвердила безпечність застосунку за допомогою програми багбаунті», — новость с таким заголовком была опубликована 30 декабря 2020 на сайте Министерства цифровой трансформации и в социальных сетях. Приложение оказалось безопасным, поэтому из призового фонда потратили всего несколько сотен долларов. Двойная победа.
Впрочем, не все так просто.
Для поиска уязвимостей была выбрана платформа Bugcrowd. Во-первых, не все одобрили такой выбор, о чем мы писали ранее. Руководитель Hacken, куда входит украинская багбаунти-платформа HackenProof (среди прочего, ее использовали для тестирования Prozorro) Дмитрий Будорин сообщил AIN.UA, что изначально Минцифры планировали использовать их продукт, однако потом передумали.
Во-вторых, IT-специалистов смущает и непрозрачность отбора участников: зарегистрироваться и поучаствовать любому желающему было нельзя — принять участие могли только те, кто зарегистрирован на Bugcrowd и подходят по определенным параметрам, которые, к тому же, стали известны лишь после окончания тестирования.
К участию в программе платформой Bugcrowd специалистов приглашали согласно следующих критериев:
- как минимум 4 найденных уязвимости за все время на платформе;
- за все время найдено и подтверждено как минимум 3 уязвимые уровня P3 и выше;
- за последние 90 дней найдена и подтверждена хотя бы одна уязвимость уровня P3 и выше;
- процент подтвержденных уязвимостей за последние 90 дней не менее 50%.
Согласно публичной информации, изначально для тестирования Bugcrowd привлекла 50 «белых» хакеров, которые соответствуют заданным критериям, а в период проведения программы — дополнительно привлекли еще 33.
Всего было привлечено 83 хакера, из которых только 27 приняли приглашение и присоединились к тестированию (из них 14 из Украины).
Отчеты были получены от 4 уникальных исследователей.
Однако ранее неоднократно сообщалось, что в тестировании будут участвовать «50 лучших хакеров со всего мира». А получается, что участие принимали не 50 лучших хакеров со всего мира (и даже не 83), а только 27.
И, учитывая то, что неделя времени на тестирование приложения и API — крайне мало, а на рынке присутствует множество других проектов с большими размерами вознаграждения — скорее всего, и указанные 27 хакеров не работали над поиском уязвимостей в полную силу, а просто приняли данное приглашение и числились участниками.
Более того, для приложения, в котором не была снята защита ssl-pinning, а также детектирование root-а, которые нужно было обходить, чтобы протестировать приложение. Это дополнительно: лишняя трата времени и негативно влияет морально на участника. Когда другие компании проводят тестирование, они предоставляют приложения со снятой защитой ssl-pinning и иногда необфусцированные. Тут же нужно было тратить свое время на обход защиты.
AIN.UA опросила нескольких участников рынка и все они подтвердили: сильные «этичные» хакеры и сообщества участия в этой программе не принимали.
В Минцфиры отметили, что выбрали Bugcrowd, известную в мире платформу, к которой «не может быть вопросов». О том, что участие приняло только 27 человек из желаемых 50, а значит их было вполовину меньше ожидаемого, Минцифры отметили, что «для первого этапа и такого формата этого вполне достаточно».Только 4 этических хакера отправили отчеты (всего 6 отчетов) о своих находках. Из этих шести отметили как валидные (подтверждаются) только 2, а четыре отчета не были приняты. Бюджет в $35 000 почти весь сохранили, выплаты составили по $250.
С одной стороны, сэкономленные средства. С другой — смотрите пункт выше про сроки и условия тестирования и количество участников.
К тому же, не все представители индустрии согласны с тем, что сам поиск уязвимостей был эффективен. По мнению Константина Корсуна, Главы Совета Общественной организации Украинская группа информационной безопасности, директор компании по кибербезопасности Berezha Security «программы по типу Bug Bounty не предназначены доказывать безопасность приложения или сайта»:
Интересной есть одна из двух найденных проблем, о которой Минцифры в своей новости указала следующее:
«Возможности получения информации о полисе страхования автотранспорта пользователя при модификации приложения, если известен государственный номер транспортного средства и VIN-код. Такая информация доступна в открытом доступе, например, по ссылке — https://policy-web.mtsbu.ua, и не содержит никаких данных пользователя или сервиса «Дія», которые можно отнести к подпадающих под защиту Закона «О защите персональных данных». Поэтому эта уязвимость получила уровень P4 и идентифицирована как неспецифицированная особенность работы облачных API, которая не приводит к утечке чувствительной информации».
А вот то, что указано о данной уязвимости в отчете Bugcrowd:
- Автомобильные номера состоят из 8 знаков: 2 буквы + 4 цифры + 2 буквы.
- 2 буквы — код региона Украины.
- 4 цифры — случайные цифры.
- 2 буквы — порядковый номер.
Перебрать все номера в базе данных не так уж и сложно.
Действия по воспроизведению, согласно отчета:
- Скачать скрипт exploit-idor.py
- Заменить в этом скрипте данные аутентификации (user_id и токен)
- Если не установлен, установить пакет https://pypi.org/project/requests/
- Запустить скрипт
- Когда данные будут загружены, вы увидите их по всем номерным знакам.
Данные первых 3 пользователей:
КА7001АХ Data:
[{‘docStatus’: 200, ‘licensePlate’: ‘КА7001АХ’, ‘vin’: ‘1’, ‘vehicleLicenseId’: ‘1’, ‘serialNumber’: ‘140457001’, ‘status’: ‘Active’, ‘expirationDate’: ‘11.12.2020’, ‘name’: ‘XXXX’, ‘address’: ‘XXXX’, ‘phone’: ‘XXXX’, ’email’: ‘xxxx’, ‘website’: ‘xxxx’, ‘validOn’: ‘11.12.2020’}]
КА7002АХ Data:
[{‘docStatus’: 200, ‘licensePlate’: ‘КА7002АХ’, ‘vin’: ‘1’, ‘vehicleLicenseId’: ‘1’, ‘serialNumber’: ‘140457002’, ‘status’: ‘Active’, ‘expirationDate’: ‘11.12.2020’, ‘name’: ‘XXXX’, ‘address’: ‘XXXX’, ‘phone’: ‘XXXX’, ’email’: ‘xxxx’, ‘website’: ‘xxxx’, ‘validOn’: ‘11.12.2020’}]
КА7003АХ Data:
[{‘docStatus’: 200, ‘licensePlate’: ‘КА7003АХ’, ‘vin’: ‘1’, ‘vehicleLicenseId’: ‘1’, ‘serialNumber’: ‘140457003’, ‘status’: ‘Active’, ‘expirationDate’: ‘11.12.2020’, ‘name’: ‘XXXX’, ‘address’: ‘XXXX’, ‘phone’: ‘XXXX’, ’email’: ‘xxxx’, ‘website’: ‘xxxx’, ‘validOn’: ‘11.12.2020’}]
Здесь видны:
- name — имя;
- address — адрес;
- phone — телефон;
- email — email
- vin — VIN-код авто;
- status — статус;
- и др.
vin и vehicleLicenseId проверяются, но не используются в запросе — для поиска важен (нужен) только номерной знак. И благодаря нему хакер мог получить доступ к личным данным владельца авто.
То есть система должна была проверять, принадлежит ли указанный номер текущему пользователю, но не делала этого.
Таким образом, злоумышленники могли красть конфиденциальную информацию других пользователей, а именно: имя, адрес, телефон, электронную почту и т.д, зная только номер авто.
Стоит сделать ремарку, что о поиске владельца по номеру авто интересуются многие. Автор материала периодически мониторил данный сайт с 2017-го года на предмет подобной проблемы — еще до появления приложения «Дія» — и найденной информации в ответах сервера при использовании браузера никогда не было.
По номеру авто по адресу https://policy-web.mtsbu.ua/ — как несколько лет назад, так и при существовании «Дія» — можно получить VIN-код, тип и название транспортного средства, а также серию и номер страхового полиса + страховую компанию. Но ФИО владельца, адреса и телефона тут нет.
Другими словами, белый хакер обнаружил способ получать информацию о транспортных средствах по одному лишь номеру, а также предоставил описание, как скачать детальную базу всех транспортных средств страны — и получил лишь $250.
Тот факт, что Минцифры проводит подобные программы — похвальный. С другой стороны, из-за запутанной системы регистрации «этических» хакеров, сложная система поиска уязвимостей и низкие выплаты за поиск серьезных багов могут отпугнуть сильных участников от участия в таких конкурсах в будущем. А значит, эффект от проведения такой программы — неполный, и может создавать ощущение лишь видимой защищенности.
Автор: AIN.UA