Páginas

jueves, 4 de junio de 2015

Jugando a hacer maldades con HappyForce

En esta ocasión me gustaría hablar sobre una aplicación que hemos comenzado a usar en mi actual empresa. La aplicación se llama HappyForce y se emplea para poder tener un feedback sobre el estado de felicidad de la empresa y sus departamentos de manera anónima.

HappyForce se encuentra disponible en iOS, en Android o a través de un navegador web si así lo preferimos.

Cada día la aplicación te pregunta cómo te sientes y tú reflejas tu estado de ánimo para la estadística (de manera anónima):


Puedes consultar las estadísticas a nivel de departamento:

Además puedes realizar encuestas sobre tus empleados sobre una pregunta, y lo más interesante de todo, los empleados tienen la posibilidad de hacer comentarios en la aplicación y votar si les gusta o les disgusta los comentarios que han realizado las otras personas.


Los comentarios los tenemos restringidos a un comentario al día (lo que probablemente previene que deje de ser constructiva y se convirtiera en un foro público donde igual la gente se encendiera rápidamente).

Es en esta lógica de comentarios, donde se encuentra la pequeña vulnerabilidad que vamos a describir, que nos va a permitir:

  • Crear todos los comentarios que queramos.
  • Hacer que esos comentarios salgan siempre los primeros independientemente de la fecha actual.
Es decir, un atacante malintencionado podría saturar la base de datos a base de crear infinitos comentarios, y lo que es más importante, si creara suficiente volumen, sería muy sencillo ocultar los comentarios reales para los usuarios legítimos de la aplicación.

El fallo se encuentra a la hora de enviar nuevos comentarios. Si observamos el formato que se envía al servicio, desde la versión Web (no he revisado el código de las aplicaciones nativas, pero seguramente el servicio será similar):



Observamos que en la petición se envía la fecha actual (la fecha se envía en milisegundos desde 1970). Esta fecha se analiza en la parte del servidor para ver si ya hemos votado y si ya hemos votado ese día no nos deja votar de nuevo:


Pero...¿Qué ocurre si una mente perversa como la nuestra, mete una fecha del futuro? Efectivamente, que no solo nos deja crear un comentario, sino que además como los comentarios se ordenan por fecha, el servidor lo mostrará el primero de todos hasta que llegue la fecha que introducimos (es decir que si mandamos un comentario como si fuera escrito en el año 2500 nos aseguraremos que nuestros descendientes lo vean):



Por fortuna esta funcionalidad ya está resuelta y ahora el servidor os informará con un: 


Finalmente nada más deciros que disfrutéis la aplicación porque la verdad es muy interesante y no seáis muy malvados!!! :)

1 comentario: