[IT-эмиграция, Интерфейсы, Информационная безопасность, Хранение данных] Как плохо спроектированный UX у теста на коронавирус чуть не посадил нас на самоизоляцию, но дырка в безопасности спасла

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
16-Сен-2020 19:42


Это я, пишу скрипт по перебору параметров для POST запроса на gov.tr, сидя перед границей в Хорватию.
Как все начиналось
Мы с моей женой путешествуем по миру и работаем удаленно. Недавно переезжали из Турции в Хорватию (самая оптимальная точка, чтобы заехать в Европу). Чтобы не сесть на карантин в Хорватии, нужно иметь справку об отрицательном анализе на ковид, сделанном не позже 48 часов до въезда.
Выяснили, что относительно выгодно (2500 рублей) и быстро (всем результаты приходят в течение 5 часов) делают тест в аэропорту Стамбула, из которого мы как раз и вылетали.
В аэропорт приехали за 7 часов до вылета, нашли пункт сдачи теста. Делают все сумбурно: подходишь, даешь паспорт, платишь, получаешь 2 наклейки с barcode, идешь в мобильную лабораторию, там у тебя забирают одну из этих наклеек для идентификации твоего анализа. После выходишь, и тебе говорят: заходи на этот сайт: enabiz.gov.tr/PcrTestSonuc, вбивай свой баркод и последние 4 цифры паспорта, через какое-то время будет результат.

Но если вбивать данные сразу после сдачи анализа, страница выдает ошибку.


Уже тогда в мою голову закрались мысли о “прекрасном” UX, в котором при любой ошибке оператора, который вбивал паспортные данные, нет никакого способа узнать свой результат.
Перед вылетом
Приходит время вылета, я вбиваю свои данные и вижу, что документы по ним уже есть, хотя и результата теста пока нет.


Даже видно, что тесты поступили в лабораторию 1.5 часа назад. Но на ввод данных моей жены все еще выдается ошибка, что запись не найдена. А главное, не получится просто сходить и спросить, что не так, т.к. тест мы сдавали в зоне до паспортного контроля.
При посадке на рейс с нас потребовали результаты теста, но, к счастью, мы смогли убедить представителя аэропорта, что они скоро появятся (показали им баркоды), а, в крайнем случае, мы сядем на карантин.
Стоило мне зайти в самолет, как по моему коду появилась информация, что у меня тест отрицательный.

По прилету
И вот тут начинается веселье! Как только мы прилетели и подключились к местному WiFi, выяснилось, что запись моей жены так и не находится в базе. А на самой границе к документам подходили очень внимательно: пограничник брал тест на коронавирус и уносил в отдельную комнату на проверку его реальности. Мы решили, что расскажем нашу трустори как есть и узнаем, какие у нас есть варианты.
Пока мы стояли в очереди, я решил проверить на правильных (своих) и неправильных данных, как реагирует страница валидации.
Выяснилось, что она отправляет пост запрос на www.enabiz.gov.tr/PcrTestSonuc/GetPcrRaporVerifyWithKimlik, со следующими параметрами:
barkodNo=XX
kimlikNo=YY
kimlikTipi=2
где barkodNo – номер баркода, kimlikNo – номер паспорта, kimlikTipi – фиĸсированный параметр, равный 2 (если заполнять тольĸо первые два поля). Никаких токенов не было видно. На правильные параметры (мои данные) запрос отдавал 1, а на неправильные – 0.
Из постмана я попробовал перебрать 40 комбинаций (вдруг ошибка в один символ), но ничего не вышло.
В этот момент мы подошли к пограничнику, он выслушал нашу историю и предложил карантин. Но нам явно не хотелось сидеть 14 дней в квартире, поэтому мы попросились немного подождать в транзитной зоне, чтобы за пару часов попробовать разобраться с проблемой. Пограничник вошел в наше положение, сходил узнать, можно ли нам посидеть в белой зоне, и, с согласия руководителя, сказал: «okay, just couple of hours».
Я начал искать телефон тех, ĸто делал тест на ĸорону, и параллельно решил протестировать безумную гипотезу: если у этой системы такой ужасный UX, то и система безопасности не должна быть хорошей, хотя и домен gov.tr.
В итоге, сидя на звонках, я написал небольшой скрипт, который перебирал все числа от 0000 до 9999 в поле kimlikNo. barkodNo у нас был на наклейке, поэтому он не мог быть неверным.
Представляете мое удивление, когда даже после 500 непрерывных запросов я не был забанен, а скрипт продолжал бегать со скоростью 20 запросов в секунду с WiFi аэропорта.
Звонки большого успеха не дали: меня перенаправляли от одного департамента ĸ другому. Но очень скоро скоро скрипт выдал заветное значение 6505, что было совсем не похоже на реальные 4 цифры паспорта.
После загрузки документа, выяснилось, что там явно не паспорт моей жены (таких номеров даже не бывает у российских загранников), но все остальные данные (включая имя, фамилию и дату рождения) являются верными.

Самое интересное, что баркоды тоже не являются случайными, а идут почти один за одним. Тем самым, в теории, я бы мог найти контакты, кому достался номер паспорта моей жены, да и в целом плавно выкачать приватные данные других людей.
Но было 9 утра и ночь без сна, я опаздывал на онлайн встречу и был рад, что нас пропустили без карантина, поэтому просто начал свой путь по Европе.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_itemigratsija (IT-эмиграция), #_interfejsy (Интерфейсы), #_informatsionnaja_bezopasnost (Информационная безопасность), #_hranenie_dannyh (Хранение данных), #_lichnyj_opyt (личный опыт), #_koronavirus (коронавирус), #_granitsy (границы), #_itemigratsija (
IT-эмиграция
)
, #_interfejsy (
Интерфейсы
)
, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
, #_hranenie_dannyh (
Хранение данных
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 19:38
Часовой пояс: UTC + 5