Auditoría al servicio de preinscripción de la UNEX

Publico ahora los datos referentes a esta auditoría ya que, como explicaré más adelante, la Universidad de Extremadura ya me ha contestado y ha solucionado el problema.

Internet danger

Todo se remonta a hace una semana. Estaba yo por Berlín en el hotel, mientras fuera caía el diluvio universal, y por razones ajenas a mi control, acabé en la página de preinscripción para master de la UNEX (¡llámeme loco!). El caso es que después de aceptar todos los pasos iniciales, acabas por llegar a una página con un formulario típico donde te piden básicamente los datos personales, académicos y tu preferencia a la hora de cursar uno u otro máster (hablo solo de la parte de máster ya que sinceramente la de grado y doctorado no la he comprobado, aunque supongo que de ocurrir lo mismo que ocurría, ya lo habrán solucionado también).

PabloYglesias-Extremadura

Una vez los completas y le das a enviar, te sale una página de confirmación y la opción de enviarte un email con el PDF o directamente imprimirlo. Como sé de buena tinta lo que pasa con este tipo de opciones, me decidí por el segundo, que abre una nueva ventana, y ésta carga otra con el PDF online para su descarga/impresión.

Aquí saltaron las primeras alarmas. La URL envía una petición GET en claro con un identificador numérico que se te asigna automáticamente al realizar la preinscripción.

http://uex21.unex.es:8002/prmaster/pk_preinsForm.pr_imprimirPreins?pnumsolicitud=XXXX

(Donde XXXX es el número de la solicitud)

En mi caso se me había asignado un número cercano al 1600, lo que me hizo pensar que quizás (solo quizás) el número no se asignaba con aleatoriedad sino de forma incremental según realizabas la preinscripción.

Y ya siendo puñeteros, lo mismo tampoco hacía controles de quién accedía y quien no.

Dicho y hecho. Cambié el número por otro inferior, y ¡voilà!

PabloYglesias-Extremadura2

Acceso directo a los datos personales, académicos y preferenciales de preinscripción en claro, como una perita en dulce delante de mis ojos. Cerca de 1600 registros (por aquel entonces) que incluían nombre, apellidos, teléfonos, emails, dirección, estudios, notas y todo lo que un usurpador de identidad o vendedor de datos pudiera soñar.

Para colmo, y como se puede ver en la imagen superior, justo por debajo cargaba el formulario (convenientemente reseteado, eso sí), pero con el identificador asociado, de tal manera que puestos a pensar mal, ya no solo tenía acceso a una basta base de datos de información segmentada por universitarios, sino que además podía modificar las peticiones a mi antojo, eliminando o incluyendo datos incorrectos para anular preinscripciones (y así quitarme competencia), o directamente preinscribiendo a gente en lo que yo quisiera.

Y todo esto sin recurrir a un wireshark y snifeo de peticiones…

Raudo y veloz, y puesto que me interés es puramente ético, me puse en contacto con el responsable de informática de la Universidad, así como con la secretaría, informando de todo lo anteriormente mencionado, ofreciendo alternativas para solucionar temporalmente el problema.

Y aquí es donde tengo que aplaudir el buen quehacer de este equipo, que en apenas unas horas (recordar que estamos en Julio) recibí una cordial respuesta (no siempre la recibes, y lamentablemente, de recibirla, no suele ser cordial) agradeciendo el aviso y haciéndome saber que estaban trabajando en ello. Apenas tres días después, recibía otro confirmando que la vulnerabilidad ya había sido resuelta, controlando que la petición se hace correctamente, y que habilitarían una conexión SSL (entiendo que esto llevará más tiempo).

PabloYglesias-Extremadura3

El resultado final es el que se ve en el pantallazo. Un simple control evita que cualquiera pueda acceder a datos que no son suyos. Siguen enviando el número de solicitud en claro en la URL, pero al menos (y sin usar técnicas más invasivas, que requieren unos conocimientos mínimos en seguridad) los datos ya están a buen recaudo fuera del alcance de malechores…, y de aficionados como un servidor.

El corolario de esta entrada es por tanto animar a todos los lectores a que utilicen en primera instancia los canales reglamentarios para informar de vulnerabilidades. Entiendo (y he vivido en más de una ocasión) que muchas veces ni se recibe respuesta, o incluso amenazan con denunciarte. Pero para esos casos, tenemos guías de actuación (ES) tan geniales como la que Antonio Sanz escribía hace apenas un mes.

El trabajo de un desarrollador es desarrollar, y muchas veces, bajo la presión de un presupuesto mínimo o unos tiempos escasos. Es por ello que aunque el interés de todo el equipo sea hacer el sistema más inexpugnable de la historia, acabarán apareciendo fallos humanos o requisitos básicos que se quedan fuera del presupuesto, y por tanto, no acaban por ser controlados.

Enviar ese email me costó unos 10 min de mi vida, y con ello he evitado que los datos de casi 2000 usuarios quedaran expuestos. Podría haberme descargado esa base de datos y venderla en el mercado negro, sacándome seguramente una buena tajada, o modificar los datos para hacerles la vida imposible a unos pobres inocentes, pero ¿de verdad merecería la pena?

El derecho a publicar los resultados lo tienes (a no ser que la empresa/organización detrás te haga firmar algún tipo de contrato), por lo que no seré un poco más rico, pero al menos puedo dormir tranquilo sabiendo que he hecho las cosas correctamente, y puedo traer a esta humilde posada una batallita que sirva quizas para alimentar el sentido de responsabilidad cívica y moral de alguno de los lectores.

 

Imagen de HalfPoint, Internet Danger (EN) cedida por Depositphotos.com.