Cómo la UX mal diseñada de la prueba del coronavirus casi nos aisla, pero el agujero de seguridad nos salvó



Este soy yo, escribiendo un script para iterar sobre los parámetros de una solicitud POST a gov.tr, sentado frente a la frontera con Croacia.



Cómo todo empezó



Mi esposa y yo viajamos por el mundo y trabajamos de forma remota. Recientemente nos mudamos de Turquía a Croacia (el punto más óptimo para llamar en Europa). Para no ir a la cuarentena en Croacia, debe tener un certificado de análisis negativo para el covid, elaborado a más tardar 48 horas antes de la entrada.



Descubrimos que es relativamente rentable (2500 rublos) y rápidamente (todos los resultados llegan en 5 horas) hacen una prueba en el aeropuerto de Estambul, del que acabamos de despegar.



Llegamos al aeropuerto 7 horas antes de la salida, encontramos un punto de prueba. Lo hacen todo de manera caótica: vienes, das tu pasaporte, pagas, obtienes 2 pegatinas de códigos de barras, vas al laboratorio móvil, donde te quitan una de estas pegatinas para identificar tu análisis. Luego sales y te dicen: ve a este sitio: enabiz.gov.tr/PcrTestSonuc , escribe tu código de barras y los últimos 4 dígitos de tu pasaporte, al cabo de un rato obtendrás el resultado.







Pero si ingresa los datos inmediatamente después del análisis, la página da un error.









Incluso entonces, pensamientos de UX "excelente" se deslizaron en mi cabeza, en los cuales, con cualquier error del operador que martilleó los datos del pasaporte, no hay forma de averiguar su resultado.



Antes de la salida



Llega el momento de la salida, manejo mis datos y veo que ya hay documentos para ellos, aunque todavía no hay resultado de prueba.









Incluso se puede ver que las pruebas llegaron al laboratorio hace 1,5 horas. Pero la entrada de datos de mi esposa todavía arroja un error de que no se encontró ningún registro. Y lo más importante, no podrá simplemente ir y preguntar qué está mal, porque Pasamos la prueba en el área antes del control de pasaportes.



Al abordar el vuelo, nos exigieron los resultados de la prueba, pero, afortunadamente, logramos convencer al representante del aeropuerto de que aparecerían pronto (les mostró los códigos de barras) y, como último recurso, entraríamos en cuarentena.



Tan pronto como subí al avión, apareció la información en mi código de que mi prueba era negativa.







A la llegada



¡Y aquí es donde comienza la diversión! Tan pronto como llegamos y nos conectamos al WiFi local, resultó que el registro de mi esposa aún no estaba en la base de datos. Y en la propia frontera, se acercaron a los documentos con mucho cuidado: el guardia fronterizo hizo una prueba de coronavirus y los llevó a una habitación separada para comprobar su realidad. Decidimos que contaríamos nuestra historia tal como es y averiguaríamos qué opciones tenemos.



Mientras estábamos en la cola, decidí verificar los datos correctos (my) e incorrectos, cómo reacciona la página de validación. Resultó



que estaba enviando una solicitud de publicación a www.enabiz.gov.tr/PcrTestSonuc/GetPcrRaporVerifyWithKimlik , con los siguientes parámetros:



barkodNo = XX

kimlikNo = YY

kimlikTipi = 2

donde barkodNo es el número de código de barras,kimlikNo - número de pasaporte, kimlikTipi - parámetro fijo igual a 2 (si completa solo los dos primeros campos). No había tokens visibles. La solicitud dio 1 para los parámetros correctos (mis datos), y 0 para los incorrectos.



Desde el cartero, traté de iterar más de 40 combinaciones (de repente, un error de un carácter), pero no salió nada.



En ese momento nos acercamos al guardia fronterizo, escuchó nuestra historia y ofreció cuarentena. Pero claramente no queríamos sentarnos en el apartamento durante 14 días, así que pedimos esperar un poco en la zona de tránsito para tratar de solucionar el problema en un par de horas. El guardia fronterizo entró en nuestra posición, fue a averiguar si podíamos sentarnos en la zona blanca y, con el consentimiento del jefe, dijo: “vale, solo un par de horas”.



Comencé a buscar el número de teléfono de los que estaban haciendo la prueba de Corona, y al mismo tiempo decidí probar una hipótesis loca: si este sistema tiene una UX tan terrible, entonces el sistema de seguridad no debería ser bueno, aunque el gov.tr.



Como resultado, mientras estaba en llamadas, escribí un pequeño script que iteraba sobre todos los números del 0000 al 9999 en el campo kimlikNo. barkodNo teníamos en la pegatina, por lo que no podía estar mal.



Imagínese mi sorpresa cuando, incluso después de 500 solicitudes continuas, no me prohibieron, y el script siguió ejecutándose a una velocidad de 20 solicitudes por segundo desde el WiFi del aeropuerto.



Las llamadas no tuvieron mucho éxito: me redirigieron de un departamento ĸ a otro. Pero muy pronto el guión produjo el codiciado valor 6505, que no se parecía en nada a los 4 dígitos reales del pasaporte.



Después de cargar el documento, resultó que claramente no estaba el pasaporte de mi esposa (tales números ni siquiera existen para los extranjeros rusos), pero todos los demás datos (incluidos el nombre, el apellido y la fecha de nacimiento) son correctos.







Lo más interesante es que los códigos de barras tampoco son aleatorios, sino que van casi uno por uno. Por lo tanto, en teoría, podría encontrar contactos que obtuvieron el número de pasaporte de mi esposa y, en general, extraer sin problemas los datos privados de otras personas.



Pero eran las 9 am y una noche sin dormir, llegué tarde a una reunión en línea y me alegré de que nos dejaran pasar sin cuarentena, así que recién comencé mi viaje por Europa.



All Articles