TL;DR – fecha de nacimiento o número de seguro social no es una buena idea para asegurar el acceso a los datos.
Puzzle – ¿Cuál es la diferencia entre las dos imágenes de abajo?
Pero empecemos por el principio. Desafortunadamente, como suele ser el caso en el mundo de ti, la conveniencia no va de la mano con la seguridad. Creo que esta vez fue similar. Sin embargo, hay un conjunto de datos confidenciales en los que no se deben hacer concesiones. Dichos datos incluyen, pero no se limitan a, información sobre nuestra salud.
Alarmado por un mensaje de mi amigo Kacpra sobre cómo se concede el acceso a los resultados de laboratorio, decidí investigar la solución responsable de esto con más detalle.
Como se puede ver en los gráficos anteriores – para acceder a su resultado a través de la funcionalidad de "inicio de sesión simplificado" necesita dos información:
- Id. de pedido, donde los números de pedido subsiguientes están aumentando;
- ordenando la fecha de nacimiento de la persona [día=X&mes=X&año=X]
Bajo ciertas suposiciones, el número de combinaciones de fechas de nacimiento que se pueden asignar a un id. de pedido es de solo unas 19.000 combinaciones. No es difícil adivinar que no es un problema importante generar todas estas combinaciones y comprobar si coinciden con el número de pedido.
Resultó que mis suposiciones eran correctas y después de varios cientos de enumeraciones lograron hacer coincidir los datos de acceso:
Esto permitió la información sensible del paciente tal como:
- nombre;
- nombre;
- pesel;
- fecha de nacimiento;
- dirección de residencia;
- el resultado de las pruebas;
Otro ejemplo de un intento de enumeración correcto:
Tan pronto como confirmé mi susceptibilidad, informé de este error al software responsable, junto con las recomendaciones de reparación:
¿Qué hacer, cómo vivir?
Una de las medidas de seguridad más comunes contra este tipo de ataques es implementar captcha. Después de varios (por ejemplo, tres) intentos fallidos de acceder a los datos del pedido, se le pedirá al usuario de la aplicación que reescriba el código captcha mostrado. Tenga en cuenta, sin embargo, que la implementación de dicho mecanismo es sólo (o hasta) una desaceleración del atacante, que en los casos más simples será capaz de brutforss aún más la fecha de nacimiento con escáneres de OCR o servicios de lectura captcha dedicados.
Una característica de seguridad mejor y recomendada es acceder a los resultados del pedido a través de una contraseña aleatoria suficientemente largaque llegará al número de teléfono del cliente.
Afortunadamente, el error se solucionó bastante rápido mediante la implementación del mecanismo reCAPTCHA de google: