Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach

Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach
To ja, piszący skrypt wyliczający parametry żądania POST do gov.tr, siedzący przed granicą z Chorwacją.

Jak to wszystko się zaczęło

Razem z żoną podróżujemy po świecie i pracujemy zdalnie. Niedawno przenieśliśmy się z Turcji do Chorwacji (najlepszy punkt do zwiedzania Europy). Aby nie iść na kwarantannę w Chorwacji, trzeba mieć zaświadczenie o negatywnym teście covid wykonanym nie później niż 48 godzin przed wjazdem.

Dowiedzieliśmy się, że stosunkowo opłacalne (2500 rubli) i szybkie (wszystkie wyniki pojawiają się w ciągu 5 godzin) zrobić test na lotnisku w Stambule, z którego właśnie wylecieliśmy.

Przyjechaliśmy na lotnisko 7 godzin przed odlotem, znaleźliśmy punkt testowy. Robią wszystko chaotycznie: podchodzisz, dajesz paszport, płacisz, dostajesz 2 naklejki z kodem kreskowym, idziesz do mobilnego laboratorium, gdzie biorą od ciebie jedną z tych naklejek, aby zidentyfikować twoją analizę. Po wyjściu, a oni ci mówią: przejdź do tej strony: enabiz.gov.tr/PcrTestSonuc, wprowadź swój kod kreskowy i 4 ostatnie cyfry paszportu, po chwili będzie wynik.

Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach

Ale jeśli wprowadzisz dane natychmiast po przejściu analizy, strona wyświetli błąd.

Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach
Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach

Nawet wtedy w mojej głowie wkradły się myśli o „pięknym” UX, w którym przy jakimkolwiek błędzie operatora, który wjechał w dane paszportowe, nie ma sposobu, aby dowiedzieć się o swoim wyniku.

Przed odlotem

Nadchodzi godzina wyjazdu, wpisuję swoje dane i widzę, że dokumenty do nich już są, chociaż nie ma jeszcze wyniku testu.

Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach
Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach

Wiadomo nawet, że testy dotarły do ​​laboratorium 1.5 godziny temu. Ale wpis danych mojej żony nadal powoduje błąd, że wpis nie został znaleziony. A co najważniejsze, nie będziesz mógł po prostu pójść i zapytać, co jest nie tak, ponieważ. Zdaliśmy egzamin w strefie przed kontrolą paszportową.

Przy wejściu na pokład poproszono nas o wyniki badań, ale na szczęście udało nam się przekonać przedstawiciela lotniska, że ​​wkrótce się pojawią (pokazali kody kreskowe), aw ostateczności udamy się na kwarantannę.

Jak tylko wsiadłem do samolotu, mój kod pokazał, że mam negatywny test.

Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach

Po przyjeździe

I tu zaczyna się zabawa! Gdy tylko przylecieliśmy i połączyliśmy się z lokalnym WiFi, okazało się, że wpisu mojej żony nie ma w bazie danych. A na samej granicy do dokumentów podchodzono bardzo ostrożnie: straż graniczna zrobiła test na koronawirusa i zabrała go do osobnego pomieszczenia, żeby sprawdzić jego prawdziwość. Zdecydowaliśmy, że opowiemy naszą historię zaufania taką, jaka jest i dowiemy się, jakie mamy opcje.

Podczas gdy staliśmy w kolejce, postanowiłem sprawdzić, czy dane są poprawne (moje) i niepoprawne, jak reaguje strona walidacyjna.

Okazało się, że wysyła prośbę o przesłanie do www.enabiz.gov.tr/PcrTestSonuc/GetPcrRaporVerifyWithKimlik, o następujących parametrach:

nr kodu kreskowego=XX
kimlikNo=YY
kimlik Tipi=2
gdzie numer kodu kreskowego - numer kodu kreskowego, kimlik Nie - Numer paszportu, Kimlik Tipi – parametr stały równy 2 (jeśli wypełnione są tylko dwa pierwsze pola). Nie było widać żadnych tokenów. Żądanie zwróciło 1 dla poprawnych parametrów (moje dane) i 0 dla niepoprawnych.

Od listonosza próbowałem posortować 40 kombinacji (nagle błąd jednego znaku), ale nic z tego nie wyszło.

W tym momencie podeszliśmy do straży granicznej, wysłuchał naszej historii i zasugerował kwarantannę. Ale najwyraźniej nie chcieliśmy siedzieć w mieszkaniu przez 14 dni, więc poprosiliśmy o poczekanie trochę w strefie tranzytowej, aby spróbować rozwiązać problem w ciągu kilku godzin. Strażnik graniczny wszedł na nasze stanowisko, poszedł sprawdzić, czy możemy usiąść w białej strefie i za zgodą szefa powiedział: „ok, tylko kilka godzin”.

Zacząłem szukać telefonów tych, którzy zrobili koronę test, i równolegle postanowiłem przetestować szaloną hipotezę: jeśli ten system ma tak fatalny UX, to system bezpieczeństwa nie powinien być dobry, mimo że gov.tr domena.

W rezultacie, siedząc na rozmowach, napisałem mały skrypt, który sortował wszystkie liczby od 0000 do 9999 w polu kimlikNo. barkodNo mieliśmy na naklejce, więc nie mogło być źle.

Wyobraźcie sobie moje zdziwienie, gdy nawet po 500 ciągłych żądaniach nie zostałem zbanowany, a skrypt działał z prędkością 20 żądań na sekundę z lotniskowego WiFi.

Rozmowy nie przyniosły większego skutku: przekierowywano mnie z jednego działu do drugiego. Ale bardzo szybko skrypt dał upragnioną wartość 6505, która wcale nie przypominała prawdziwych 4 cyfr paszportu.

Po wgraniu dokumentu okazało się, że ewidentnie nie był to paszport mojej żony (rosyjscy cudzoziemcy nie mają nawet takich numerów), ale wszystkie inne dane (m.in. imię, nazwisko i data urodzenia) są prawidłowe.

Jak źle zaprojektowany interfejs użytkownika w teście na koronawirusa prawie doprowadził nas do samoizolacji, ale uratowała nas luka w zabezpieczeniach

Najciekawsze jest to, że kody kreskowe również nie są przypadkowe, ale idą prawie jeden po drugim. W teorii mogłem więc znaleźć kontakty, które zdobyły numer paszportu mojej żony iw ogóle płynnie wypompować prywatne dane innych osób.

Ale była 9 rano i nieprzespana noc, spóźniłem się na spotkanie online i cieszyłem się, że przepuścili nas bez kwarantanny, więc po prostu zacząłem swoją podróż po Europie.

Źródło: www.habr.com

Dodaj komentarz