ONPE filtró los datos personales de millones de peruanos durante más de medio año

Entre octubre del año pasado y junio de este año, los nombres, apellidos, fecha de nacimiento, sexo y edad de todos los peruanos mayores de edad fueron accesibles y descargables a través de la página web de la ONPE. Un error informático en el formulario de inscripción de su Hackaton del año pasado, repetido en su más reciente versión, permitía a cualquier usuario de Internet descargar todos nuestros datos personales sin vulnerar ninguna medida de seguridad ni levantar ninguna alerta en ONPE. Esta es la historia de cómo Hiperderecho descubrió el error, lo reportó a las autoridades y logró que se solucione, aunque la autoridad nunca reconoció su error.

El 7 de junio de este año la ONPE anunció la organización de su hackathon 2018 con el título «Desafiando la Solución del Voto Electrónico Presencial». Su finalidad era invitar a grupos de estudiantes de ingeniería y computación a encontrar vulnerabilidades en los módulos de voto electrónico presencial que la entidad ha desarrollando y viene desplegando. En el contexto de la polémica implementación de este sistema, ONPE esperaba ganar un poco de legitimidad a través de este concurso. Nosotros decidimos investigar los requisitos de inscripción para aprovechar lo que parecía ser una oportunidad de interactuar con los equipos técnicos de la ONPE y del voto electrónico.

El problema de seguridad en el formulario de inscripción

Para inscribirse en el evento era necesario escoger un nombre para tu equipo y registrar tres integrantes. Lo interesante es que el formulario no pedía ingresar ningún dato personal, excepto el número de Documento Nacional de Identidad de cada integrante del equipo.

El formulario de inscripción de la hackathon de ONPE. Como ejemplo, para nuestro primer integrante usamos el DNI del Presidente Vizcarra.

Al ingresar cualquier DNI, y presionar el botón «VALIDAR», veíamos cómo se cargaban los datos de la persona: nombre, sexo, y si son mayores de edad. En este ejemplo hemos usado el DNI del Presidente Vizcarra.

Luego de presionar el botón de «VALIDAR», el sistema carga los datos del DNI ingresado.

Al presionar «VALIDAR», el formulario de inscripción recuperaba la información desde una dirección que tenía la siguiente forma http://hackathon.pe/hackathon_ve/person/04412417.

En esa dirección, el sistema respondía con la información del DNI consultado. Los datos eran entregados en formato JSON:

Los datos del Presidente Vizcarra en JSON, un formato de intercambio de datos muy usado en programación web.

Esta dirección podía ser consultada sin necesidad de identificarse con una contraseña. Tampoco era necesario superar medidas de seguridad. Era una dirección públicamente accesible, sin ningún control de acceso, de repeticiones, ni nada por el estilo.

El peligro

Tal como la última vez que reportamos este tipo de problemas, decidimos revisar si era posible abusar de este error de manera automatizada para descargar la información de cientos de personas en solo unos segundos. Potencialmente, haciendo posible descargar la información de todos los DNIs de todos los peruanos y peruanas mayores de edad.

Después de confirmar que el servicio de ONPE no imponía límites de pedidos o de seguridad, desarrollamos una prueba de concepto. En una mañana creamos una aplicación que descargaba automáticamente los datos y los guardaba como un archivo de Excel. Es decir, una base de datos con nombres, fechas de nacimiento y números de DNI.

Una pequeña muestra del archivo Excel generado en unos segundos.

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 de manera completamente automática y sin que ONPE detecte un comportamiento extraño.

Nuestro reporte

Descubrimos el problema el miércoles 13 de junio, lo documentamos y analizamos en los días siguientes. Incluso, durante esos días notamos que era algo tan evidente que otros especialistas que vieron el formulario lo encontraron de inmediato.

El lunes 18 le hicimos llegar a PeCERT, la oficina de PCM responsable de la seguridad digital en el Estado, un reporte detallado del problema que habíamos descubierto. Aunque nunca nos respondieron el correo (hasta la publicación de este artículo, seguimos esperando alguna respuesta), ese mismo día, casualmente luego de nuestro reporte, modificaron el formulario de inscripción para que los datos ya no se puedan ver en un navegador web, pero aún se podían acceder. Para los técnicos en la audiencia, simplemente cambiaron el método de GET a POST, que es como decir que le cambiaron la manija a la puerta, pero igual seguía abierta y sin llave.

El martes 19 le hicimos llegar a ONPE una carta por mesa de partes donde le explicábamos del problema y su gravedad. Esta carta tampoco tuvo respuesta hasta ahora. Sin embargo, en los días siguientes vimos que se quitó la funcionalidad de llenar el formulario solo con DNI, y empezaron a pedir todos los datos del los participantes. Es decir, ONPE corrigió el error y cambió su formulario.

Una vulnerabilidad antigua

Durante el proceso de documentación de este caso, descubrimos que esta no fue la primera vez que ONPE cometió ese error. En octubre de 2017, ONPE e IPD organizaron la primera versión de esta Hackaton bajo reglas parecidas y usando el mismo formulario. Lo que descubrimos fue que existía una ruta web alternativa y completamente independiente a la de la Hackaton 2018 que también otorgaba acceso a la base de personales incluyendo nombres, apellidos, fecha de nacimiento, sexo y edad de todos los peruanos mayores de edad.

Al visitar http://hackathon.pe/hackathon/person/04412417 era posible descargar los datos personales del titular de ese DNI. Al igual que en el caso anterior, era posible que alguien programe una rutina para descargar los datos personales de miles o millones de peruanos en pocas horas.

Consecuencias reales

En los últimos doce meses hemos encontrado cuatro diferentes vulnerabilidades en servicios web promovidos por el Estado. En todas estas ocasiones hemos detectado el mismo patrón: una institución se llena de entusiasmo y desarrolla o promueve una aplicación o sitio web para algún propósito, desde una encuesta en línea, hasta un código QR para verificar carnés. Sin embargo, en el proceso dejan de lado criterios de seguridad, o privacidad, de la información que manejan.

Este enfoque de aparentar modernización a toda costa nos preocupa porque todas estas ideas e iniciativas bien podrían ser muy útiles y efectivas, pero acaban desprestigiados por poner en peligro a los beneficiados. Nos preocupa también que con el afán de impresionar, o aparentar capacidad técnica, se desarrollan conceptos poco cuidados como este formulario de inscripción que cargaba información basados en el número de DNI. ¿Cuál era la necesidad real de eso? ¿Qué facilitaba? ¿Por qué no simplemente pedir el nombre y el DNI? Mejor aún, ¿por qué no usar un formulario en Google o SurveyMonkey y solo pedir los datos indispensables, todos proporcionados por los usuarios? La verificación siempre podía haberse hecho internamente.

Los peligros de esta filtración de datos son muchos. Nuestros datos personales ahora podrían estar en bases de datos privadas de empresas de márketing, a la venta en el mercado informal, o quizás en manos de secuestradores o extorsionadores. ¿Quién más podría beneficarse de una copia completa del padrón electoral? Muy probablemente, los partidos políticos que buscan su inscripción a través de planillones falsificados necesiten también de una lista actualizada de nombres, apellidos y números de documento de mayores de 18 años.

Este caso no debe terminarse con que ONPE solucionó el problema silenciosamente. Creemos que la exposición pública de los datos personales de más de 20 millones de peruanos debe de tener consecuencias reales. Dado que ONPE y la Presidencia del Consejo de Ministros ignoraron nuestra alerta, hemos decidido usar los mecanismo legales existentes para obtener una respuesta. Por eso, hoy Hiperderecho ha denunciado a la ONPE ante la Dirección General de Transparencia, Acceso a la Información Pública y Protección de Datos Personales del Ministerio de Justicia por infracción grave a la Ley de Protección de Datos Personales al haber compartido sin consentimiento, proporcionalidad o con medidas de seguridad los datos personales de todos los peruanos mayores de edad. Vivimos en un mundo en el que los filtrados de datos y los incidentes de ciberseguridad en el sector público y privado se van a hacer más frecuentes. Es hora de que los ciudadanos sepamos con quiénes podemos y no podemos contar para hacer valer nuestros derechos.

7 comentarios

  1. Este es el problema en el Perú te enseñan a desarrollar software funcional (trabaja bonito) pero no aplican DESARROLLO SEGURO y estando ya en producción (on line) no lo ponen a prueba con ciberataques controlados realizados por Pentesters o Hackers Éticos para minimizar riesgos a sufrir intrusiones. Buen trabajo, los felicito.

  2. Sergio Pretel Malpartida dice:

    El jurado Nacional de elecciones es un poder autónomo y representa a todos los ciudadanos amparado por la Constitución política del país y en Perú.Me parece que en los Últimos 40 años a los sres de onpe no le importa si los candidatos al sector público sean rateros, mentirosos, sin integridad honestidad,es decir seguimos desde 1492 con políticos saqueadores, chantajistas,coimeros corruptos,compinches, maquillajes de sus obras, vende patrias, alquilando por 20 años todos nuestros recursos y las empresas transnacionales están esclavizando a todos los peruanos ni que decir vigilantes, campesinos, prácticas pre profesionales etc por lo tanto digo es tan difícil cumplir ama sua, ama llulla, ama kella, ama yugo el dejadez de onpe le hace culpable de tantos muertos sobretodo de las pobrezas educación solo para los ricos pero una educación mediocre sin identidad de nuestros padres fundadores INCAS Manco Capac y Mama Ocllo por lo tanto sea electrónico mecánico será un herramienta de fraude el tema es confianza autoridad poder de decisión gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *