Share on Google+Share on FacebookTweet about this on Twitter

Durante años he tenido que oir eso de:

No eres demasiado estricto siempre con eso de la seguridad? Quizás un poco fanático? Realmente un usuario de a pie necesita ser “tan estricto” con sus cosas?

En un mundo ideal todo el tráfico por inet podría ser completamente abierto, las contraseñas no existirían, nadie sería curioso ni tendría la necesidad de robar o de entrar en las casas o… Evidentemente ese mundo no es el que nosotros vivimos y nunca podemos saber hasta que punto el que tenemos al lado de nosotros está dispuesto a respetar nuestra intimidad. Somos demasiados confiados o somos demasiado tontos? o quizás somos fanaticos?

Bueno, en la segunda entrada veremos como podemos hacer que nuestro dispositivo sea un poco más seguro. En esta vamos a enseñar y demostrar lo vulnerable que pueden ser los sistemas simplemente por confianza de que hay siempre buena voluntad y que nadie es malo, o que nadie se aprovecha de los defectos de un sistema o… Realmente “asaltar” un sistema, por sencillo que sea, tiene alguna utilidad? Normalmente o satisfacción personal o dinero. Imaginemos que estamos en nómina de una empresa para lograr la máxima información de un determinado individuo.

Nosotros no vamos a hacer nada de eso, además, me parece completamente amoral. Por el contrario vamos a verlo ilustrado en un simple ejemplo con el juegecito PuzzleManiak.

PuzzleManiak es un juego que trae dentro unos ¿29? juegecitos de puzzles diferentes. A mi gusto es una de las mejores aplicaciones para pasar el rato, algunos son muy buenos y otros son clásicos de siempre. El juego tiene un sistema de puntuación Online, esas cosillas que siempre le encanta a los ambiciosos o a los que buscan siempre un aliciente: Hay que ser el mejor!!. Cada juego tiene diferentes niveles de dificultad y/o tamaño, así como su propio ranking de puntuación local como en internet.

El Ranking local son puntuaciones almacenadas para seguir nuestros progresos, el Ranknig en internet nos vale para seguir un progreso en comparación con otras personas del mundo. El ranking en internet a su vez se divide en:

a) Ranking por Puzzle: Diario, Semanal, Mensual y Global de cada una de las dificultades y/o tamaños
b) Puzzle del día: Una vez al día se tiene acceso a un puzzle determinado normalmente de dificultad y/o tamaño grande. Todos los participantes hacen el mismo puzzle, y se envian los datos a inet. Este Ranking recoge la puntuación de los participantes en el Puzzle del día, y el ranking global generado por los 10 últimos días del puzzle del día
c) Hall de la fama: Cada puzzle tiene un campeon global recogido en el Hall de la fama
d) Ranking Global: Y para acabar un Ranking general en el que se tiene en cuenta cada punto obtenido en cualquier ranking por puzzle

Seguro que muchos de vosotros sabeis que juego es o lo habeis usado alguna que otra ocasión.

El caso es que quería demostrar la vulnerabilidad de algunos sistemas y he escogido esto de ejemplo. Lo relativamente simple que puede ser engañar, falsear, hackear un sistema de puntuaciones online. Lo que hace que sea relativamente simple es precisamente eso, la falta de seguridad por parte del creador de la aplicación por suponer que hay buena voluntad. Evidentemente en este caso es una tontería, y le tengo que mandar un correo a su creador para que lo corrija y de paso que elimine mi puntuación ;). Pero muestra precisamente lo que digo, la importancia siempre, aunque haya la mejor confianza, la mejor buena voluntad… de usar sistemas seguro. Ya no solo para protegernos nosotros mismos, sino para que los demás sepan que están protegidos.

Os dejo las capturas de las puntuaciones actuales, aunque quien quiera puede consultarlas online en http://www.puzzlemaniak.com/blog/


Estas dos pertenecen al ranking del puzzle del día y el global del ranking del puzzle del día por 10 días. Aquí no tengo aun la máxima puntuación porque aun no han pasado 10 días. Sí, ya se que casi 37 segundos es una barbaridad comparado a los próximso resultados, pero 37 segundos si comparais con el resto es algo ínfimo. Pero aun hay más:

Este es un ranking del puzzle Map en su categoría 20*24 y 50 regiones. Todas las demás categorías y de todos los puzzles tienen el mismo resultado, soy el número 1 con un tiempo siempre de 1 centésima de segundo. Sinceramente? Soy bueno en algunos puzzles, muy bueno en otros!! pero evidentemente jamás con ese tiempo. Al estar el puesto primeor en todos los puzzles en todas las categorías, el ranking global queda así:


Creo que no me ha quedado ni un solo record sin coger, luego tengo la máxima puntuación posible, soy el gran campeon de todos los tiempos!!

Pero bueno, ahora hay que desvelar el secreto. Como ha podido pasar esto?

Es simple. Los datos enviados desde el servidor de la aplicación como desde nuestra misma aplicación al servidor deberían de ir encriptados completamente o al menos usar un algoritmo hash para “encriptar” los datos de los puntos.

Es cierto que el servidor sí aplica algunas medidas de seguridad. Por ejemplo, cada vez que enviamos datos a su servidor les enviamos nuestro nombre de usuario claro está y también la MAC de nuestro dispositivo. Supongo que será para fines de validación, por ejemplo en “el puzzle del día”, y así evitar poder hacer el “puzzle del día” más de una vez. También sirve de ID único, así en el ranking podríamos tener dos nombres de usuarios iguales, ya que su MAC es diferente. Claro que cambiar la MAC del dispositivo es tarea simple. Al menos han tenido la delicadeza de “cifrar” la MAC, le aplica un cálculo simple para no enviarla en plano, seguramente ni siquiera la almacenen en plano, lo cual es de agradecer.

Tambien usan un sistema de hash para verificar que los datos que se envian al servidor no se han alterado. Este sistema se basa simplemente en calcular un hash o firma dependiente de la puntuación obtenida en el puzzle en cuestión, el nombre del usuario y de la MAC de este. De esos tres datos se obtiene una “firma” que se envía conjunta a los datos al servidor. El servidor comprueba los puntos, la MAC y el usuario y calcula la firma. Si la firma que obtiene es la misma que la enviada por la aplicación se permiten los datos.

El sistema no es malo del todo, pero tiene muchos fallos de seguridad. Para empezar los puntos se guardan antes en disco, lo cual es posible editarlos, y este ficharo no está encriptado ni tiene ninguna comprobación CRC ni ningún otro sistema. Esto implica que con un poco de ingenio podemos alterarlos como queramos.

Por otro lado que exista un sistema de hash para cifrar algunos datos es positivo, pero es insuficiente como hemos podido ver. El tráfico debería de ser todo o casi todo encriptado. No me ha resultado nada complicado inyectar exitosamente los datos enviados al servidor y al dispositivo para poder “jugar” con los puntos como quiera.

———————-
———————-

Evidentemente esto no está haciendo un daño a nadie ni a ninguna instalaciones, y como digo informaré con pelos y señales al dueño para que tome medidas, pero es un ejemplo del problema de la seguridad. Por mucho que creamos que nuestro sistema es seguro, siempre hay alguien más listo que nosotros, y esto es una gran verdad

Tampoco creo que haya que ser alarmista ni un enfermo mental de la seguridad. Pero sí creo que cada tipo de datos se debe de tratar con su nivel de seguridad correcto. En los listados tan solo vemos puntos y nombres de usuarios, pero si fueran nombres y apellidos + números de teléfonos estaríamos ante un gravísimo incidente, aquí en españa penado con fuertes multas y muy vigilado por la Agencia Española de Protección de Datos.

Siempre que tengamos datos sensibles o privados hay que protegerlos de la forma adecuada, y muchas veces la seguridad nunca es excesiva.

Esta entrada no es directa a nuesto dispositivo, quitando un poco lo de PuzzleManiak, pero si que usaremos esta entrada de trampolín para la segunda parte: “La importancia de la Seguridad II: Securizando el iPhone/iPod” Que escribiré después

Un saludo.