La semana pasada la ONPE anunció públicamente una hackathon sobre el voto electrónico, pero en el formulario de inscripción acabó exponiendo el nombre, fecha de nacimiento y número de todos los DNIs del Perú.
La hackathon de la ONPE
El 7 de junio, la ONPE anunció la organización de su hackathon 2018 con el título «DESAFIANDO LA SOLUCIÓN DEL VOTO ELECTRÓNICO PRESENCIAL». Según las bases del concurso, el objetivo es «…aportar en el mejoramiento de la gestión pública a través del desarrollo de soluciones tecnológicas electorales.», pero según la nota de prensa el objetivo es «fomentar soluciones tecnológicas en la gestión pública, el intercambio académico y cultural bajo un enfoque de ideas innovadoras en beneficio de los ciudadanos y la difusión de mecanismos de seguridad del Voto Electrónico Presencial, como una solución tecnológica electoral confiable.»
Sin embargo, el video de difusión parece describir un evento exclusivamente de seguridad, para poner a prueba la implementación del voto electrónico presencial:
Confundidos por estos mensajes contradictorios, decidimos investigar los requisitos de inscripción para aprovechar lo que parecía ser una oportunidad de interactuar con los equipos técnicos de ONPE y del voto electrónico.
El problema de seguridad en la inscripción
Para inscribirse en el evento es necesario escoger un nombre de equipo y luego registrar a tres integrantes para ese equipo. Lo interesante es que el formulario no pide nombres, edades, de hecho no pide ningún ingreso de información personal. Lo único que pide es el número de DNI de los participantes.
Luego de ingresar el DNI de un integrante, el sistema indica que presionemos «VALIDAR» para cargar los datos de la persona, en este ejemplo hemos usado el DNI del Presidente Vizcarra. Curiosamente, alguien ya ha registrado el DNI del ex presidente PPK.
Al presionar «VALIDAR», el sistema carga el nombre, sexo, y si la persona es mayor de edad.
Si han leído nuestro blog recientemente ya deben estar sospechando cómo acaba esto. Especialmente si han leído nuestro reporte sobre cómo RENIEC expuso la fotografía de todos los DNIs del Perú.
Este formulario de inscripción carga (o cargaba) la información desde una dirección de la siguiente forma:
http://hackathon.pe/hackathon_ve/person/04412417
En esa dirección, el sistema respondía con la información de dicho DNI en el formato de datos JSON:
Esta dirección puede (o podía) ser consultada sin necesidad de identificarse con algún tipo de usuario, ni romper algún tipo de seguridad, ni nada por el estilo. Es una dirección públicamente accesible, sin ningún control de acceso, repeticiones, ni nada por el estilo.
La descarga masiva de datos
Tal como la última vez que reportamos este tipo de problemas, decidimos revisar si era posible abusar de este error de manera automatizada y de esa forma descargar la información de cientos de personas sin mayor esfuerzo, y potencialmente la de millones de personas.
Confirmamos rápidamente que no había ningún tipo de limitación o seguridad asociada a esta dirección web, así que decidimos crear una prueba de concepto, es decir, un programa sencillo que demuestre la vulnerabilidad de forma sencilla.
Luego de una mañana de trabajo y pruebas, desarrollamos una aplicación que demostraba cómo era posible descargar automáticamente estos datos y convertirlos en un archivo de Microsoft Excel, o sea, una hoja de cálculo, una base de datos con nombres, fechas de nacimiento y números de DNI.
En el siguiente video pueden ver cómo en menos de treinta segundos logramos descargar la información de cincuenta personas, y archivarla en formato Excel, todo esto sin intervención humana, es decir, de manera completamente automática.
VIDEO JSON
Nuestro reporte
HISTORIA DE COMO LO REPORTAMOS
Preocupación permanente
Nuestra preocupación sobre cómo se usan nuestros datos en el Estado vuelve a confirmarse. Este tipo de aplicaciones, hechas sobre la marcha y sin mayor cuidado, parecen muy simples pero acaban generando vulnerabilidades y agujeros de seguridad que exponen información de todos los peruanos.
Nos preocupa que con el objetivo de aparentar modernidad, este tipo de problemas sigan apareciendo. En el caso concreto de esta inscripción, quizá un formulario de Google Forms hubiese sido suficiente, pero sin duda menos «impresionante».
Seguiremos vigilando este tipo de iniciativas y sus inevitables errores.
Ex Director de Tecnología (2017-2019)
Comunicador Social de la Universidad de Lima. Antes colaborador en GNOME, Debian, WebKit.