lunes, agosto 04, 2014

Mi niña de 2 años me ayuda a hackear la app de Pocoyó
por Deepak Daswani

Al igual que cuando uno comienza a introducirse en el mundo de la seguridad informática, empieza a interiorizar siglas y palabros que hasta entonces te eran desconocidos (SQLi, XSS, CSRF, Buffer Overflow, etcétera.) y a identificar a referentes internacionales como Kevin Mitnick, Charlie Miller o El Maligno, cuando uno se adentra en el fascinante universo de la paternidad, además de asimilar nuevos conceptos y rutinas, comienza también a conocer a otro tipo de referentes que le acompañan en esta nueva etapa. Hablamos cómo no, de los famosos y carismáticos personajes de la infancia, como Bob Esponja, Peppa Pig, o el grandioso Pocoyó. Los protagonistas de estas populares series infantiles de dibujos están presentes en numerosos aspectos de la vida de los bebés, desde la propia televisión donde se originan, hasta los juguetes, el menaje o ropa infantil.

Como no podía ser de otra forma, el Universo 2.0 pone a disposición de todos los que somos padres nuevos canales para que nuestros hijos puedan disfrutar de sus personajes favoritos en cualquier momento y en cualquier lugar. Es posible acceder a numerosos capítulos de estas series a través de vídeos en Youtube, así como diferentes apps para SmartTV o dispositivos móviles, generalmente de forma gratuita.

Figura 1: Canal Youtube de Pocoyó

Al igual que nosotros utilizamos a diario varios dispositivos para acceder a la misma información, nuestros hijos, los llamados nativos digitales, que interaccionan con la tecnología mejor que muchos adultos aún siendo bebés, eligen indistintamente diversas opciones dependiendo de las posibilidades que tengan a su alcance, así como de la paciencia y permisividad de sus padres. En particular a mi pequeña Lara le gusta disfrutar de las aventuras de Pocoyó y sus amigos a pantalla completa en la SmartTV, pero cuando esto no es posible accede a dichos contenidos desde el canal de Youtube o la aplicación móvil del iPad.

Figura 2: Aplicación de Pocoyó para SmartTV Samsung

De entre las diferentes aplicaciones móviles desarrolladas por Zinkia, la productora de Pocoyó, en concreto la que utiliza mi hija se llama Pocoyó TV. Esta app permite al usuario ver cualquiera de los 52 capítulos de la primera temporada de Pocoyó, con la particularidad de que sólo los primeros 5 están disponibles de manera gratuita. Si se desea visualizar alguno de los otros 47 restantes, es necesario pasar por caja para desbloquear dicho capítulo mediante la contratación de una suscripción por un período de tiempo determinado. Esto a priori puede sonar un poco incoherente ya que estos capítulos están disponibles de manera gratuita en otros medios como el Canal de Youtube oficial de Pocoyó, o la aplicación móvil de Pocoyó para SmartTV, ambos pertenecientes a la propia Zinkia.

Figura 3: Además de publicidad, la app para iPad bloquea capítulos que son públicos en otras plataformas

En cualquier caso, entiendo que aunque suene contradictorio el planteamiento, pueda suponer una pequeña fuente de ingresos adicional para la compañía, ya que al no tratarse de grandes cantidades de dinero muchos padres contratarán la suscripción, en algunas ocasiones por desconocimiento y en otras por comodidad o dejadez por no abrir el buscador de Youtube y localizar el capítulo bloqueado desde el iPad.

Figura 4: Suscripción para desbloquear el capítulo en la app de iPad

Es solo una pequeña fuente de ingresos más que puede venir de las que apps, de las que ya se han contabilizado más de 10 millones de descargas entre todas las aplicaciones de Pocoyó para todas las plataformas.

Figura 5: Más de 10.000.000 de apps descargadas.

Más allá de que para alguno pueda ser cuestionable cobrar por capítulos que se ofrecen gratuitamente a través de otros canales, lo que sí que es importante es que esto se haga bien. Esto viene a colación de que hace unos meses, mi hija se estrenó con tan sólo 2 años en esto de encontrar fallos de seguridad o implementación, ya que mientras yo analizaba las capturas de tráfico de mi propia red WiFi cuando trabajaba en el post sobre Whatsapp Discover, ella veía plácidamente el Capítulo 2 de Pocoyó desde el iPad, con lo que su tráfico se coló en dicha captura: 

Figura 6: Petición de descarga del Capítulo 2 de Pocoyó en Español desde la app de iPad

Como se puede ver en la imagen, a la hora de descargar un capítulo para poder verlo en la aplicación, se accede directamente mediante HTTP al vídeo de dicho capítulo en formato mp4, que se descarga desde el servidor. Nada ofuscado u oculto en dicha petición.

Hace unos días, decidí investigar un poco más esto que llamó mi atención en aquel momento. Así que tras hacer pasar el tráfico de mi iPhone por el proxy Burp, comprobé que en la versión actual de la aplicación, la descarga de los capítulos se sigue realizando a través de HTTP en formato mp4 directamente desde el servidor.

Figura 7: Descarga de capítulos de Pocoyó desde la app de iPhone visto con Burp

Así que se me ocurrió ver qué pasaba si en vez de pedir el vídeo del Capítulo 2 que está disponible de manera gratuita, construyo la URL para el Capítulo 9 que es de pago, cambiando simplemente un dígito por otro. El resultado era de esperar: 

Figura 8: Descarga de los capítulos bloqueados de Pocoyó desde la web

Tras realizar varias pruebas, me di cuenta que todos los capítulos podrían descargarse gratuitamente del servidor no sólo en Español, sino en el resto de idiomas que ofrece la aplicación, con lo que si ya antes era absurdo contratar la suscripción, ahora carecía completamente de sentido alguno.

Figura 9: Los capítulos de Pocoyó están disponibles en estos idiomas

Para constatar esta suposición, basta con pedir un capítulo de Pocoyó en Japonés del servidor, y el mismo se descarga directamente sin ninguna validación de por medio.

Figura 10: Descarga de un capítulo de Pocoyó en Japonés

Más allá de un problema de seguridad, en el caso de que el contenido no pudiera obtenerse de otra forma gratis, hablamos de un problema conceptual de implementación que daría al traste totalmente con el modelo de negocio de la aplicación. De nada sirve cobrar por algo que no conseguimos tan siquiera ocultar, y ya se sabe que eso de la seguridad por oscuridad no suele funcionar. Con un sencillo script con Wget podríamos obtener todos los capítulos en cualquier idioma. He aquí un ejemplo para poder tener la versión en portugués:

Figura 11: Wget desde Kali Linux para descargar los 52 capítulos de Pocoyó

En aras de agradecer a la productora los ratos agradables que Lara pasa mientras observa con atención las aventuras de Eli, Pato, Nua y Pocoyó, decidí informar de este problema a los responsables de la compañía, quienes me agradecieron el reporte informándome de que se lo comunicarían a sus desarrolladores para futuras actualizaciones de la aplicación.

Tan sólo unos días después, han subido a la App Store una actualización de la aplicación con nuevas funcionalidades, pero en principio este problema sigue aún vigente ya que han debido considerar que al estar el contenido público por otros medios, no tenía sentido de momento actualizar el sistema. No obstante, este problema se repite en muchas apps que cobran por contenido, así que valga el ejemplo de Pocoyó para explicaros qué no se debe hacer nunca.

Autor: Deepak Daswani
Sitio web: http://deepakdaswani.es
Twitter: @dipudaswani

7 comentarios:

Monino dijo...
Este comentario ha sido eliminado por el autor.
Juan Luis Valverde dijo...

Que crack!!

Ya mismo tenemos a Lara publicando artículos de como vulnerar la seguridad de cual sea la red social o software de mensajería que se utilicen...

Jonathan Novel dijo...

Bravo Deepak!
Excelente trabajo!
Saludos!

Deepak Daswani dijo...

Gracias! Me alegro que os guste. Tampoco es nada complejo, pero sí que es curioso :)

Martín V dijo...

¡Muy bueno Chema!
Soy un desarrollador un poco novato y he pecado de esa misma mala práctica en un proyecto reciente, pero estoy buscando una forma de hacerlo mejor.
¿Cómo piensas que podría realizar la comunicación para que no sea accesible tan fácilmente?
(Estoy consultando desde una app Android a un webservice por POST, y me devuelve la URL completa del archivo que estoy buscando...)

María García dijo...

Me ha encantado :)

neTToxic dijo...

Mis aplausos, tiene que haber sido muy dificil encontrar dicho fallo... seguramente haya una humadera sobre Tenerife de lo que te habrás quemado la cocotera Daswa... Bravisimo !

Entrada destacada

Navaja Negra: La CON de Albacete el 29 de Septiembre @navajanegra_ab @elevenpaths @0xWord

Es la sexta edición de esta CON que comenzó hace ya más de un lustro en la ciudad de Albacete , reúne el próximo 29 de Septiembre a una b...

Entradas populares