jueves, 1 de octubre de 2015

En producción, mejor desactivar los mensajes de error

Cuando tenemos una web en producción, debemos de tener los mensajes de error desactivados para que el usuario no pueda saber como funciona por dentro, ya que damos demasiadas pistas si la persona que lo está viendo quiere atacarnos.


"Espiado" por una imagen...

Hoy os traigo algo que la mayoría de desarrolladores ya sabíamos, pero que no está de más saber para todo el que quiera saberlo (pero que lol).

Me refiero a que nuestros emails nos espían ¿COMO! O_o? Pues fácil, cuando por ejemplo nos metemos a nuestro gestor de correo online (Gmail, Hotmail, Chimichanga, etc, etc…), si al abrir los mensajes tenemos activado que automáticamente los correos con formato html carguen las imágenes, ahí ya el sitio web o empresa que te ha enviado el correo ya sabe que lo has leído y desde donde lo has leido (mediante seguimiento IP por ejemplo). 

¿Te estás preguntando por qué?

El por qué es sencillo. Muchas imágenes que se nos cargan no tienen una fuente que apunte directamente a una imagen normal colgada en un servidor contenedor de la misma. Sino que son fuentes que apuntan a fuentes dinámicas con identificación única de usuario.

¿Pero qué me estas contando?
dicho de otra manera,  con un ejemplo:

si te envían un email, que por ejemplo en una imagen pone este source:

http://servidortal/rutapascual/imagepubli?id=200&client=422445

la primera parte http://servidortal/ es el dominio del servidor
la segunda rutapascual/imagepubli es el path dentro del servidor que apunta al fichero que supuestamente cargará
y aquí en la tercera y cuarta parte la parte de espionaje

id=200&client=422445

id=200 puede que nos esté diciendo que el fichero enlazado cargue una imagen dinámica que esté identificada por el número 200

client=422445 seguramente sea nuestro id de cliente de newsletter (por ejemplo) único

Por este motivo, cuando el gestor de correo carga la página, el script que nos devuelve una imagen (el del src de la etiqueta img), seguramente tenga activo algún tipo de vigilante que cuando recibe la petición de carga con el id de usuario único, la empresa ya sabe que ese email ha sido leido por X persona en X fecha, además de saber también desde que dirección IP ha sido cargado (pudiendo hacer geolocalización del usuario).
—————-
A continuación os pongo unas capturas de ejemplo, en las que vemos que no obtenemos el mismo resultado visualizando la imagen desde un gestor online como gmail o hotmail que si lo hiciésemos a través de un gestor de correo local como outlook o thunderbird (estos segundos gestores locales nos exponen mucho más ya que no nos filtran nada al no hacernos de proxys intermediarios).

CASO 1: Ejemplo de visualización en la web de GMAIL



CASO 2: Ejemplo de visualización en el gestor de correo LOCAL


En este caso estamos tan expuestos que pueden averiguar nuestra IP, sistema y tipo de gestor utilizado entre otras muchas cosas.

CASO 3: Ejemplo de  visualización en gestor de correo de GMAIL (App de Android)


Ahora vemos que la aplicación de cliente de Gmail para Android, es simplemente un cliente de la aplicación web de Google, y por lo tanto también utiliza el proxy de Google para cargar las imágenes.

CASO 4: Ejemplo de visualización en gestor de correo móvil Android para cuentas Hotmail




Aquí podemos ver, que este gestor de correo no utiliza ningún tipo de protección proxy para la carga de imágenes, y por lo tanto es nuestro dispositivo el que descarga directamente la imagen del servidor (lo sabemos porque los datos que aparecen en la imagen son los nuestros).

CASO 5: Servidor de correo web empresarial con las políticas de seguridad bien configuradas



Este gestor de correo, aunque no nos haga de intermediario de la descarga de la imagen, simplemente no nos la carga al hacer una lectura de cabeceras de correo electrónico y ver que algo no cuadra (efectivamente las cabeceras del correo están manipuladas). Y aunque podamos cambiar las políticas para este remitente y dejarnos cargar la imagen, ya somos nosotros los que decidimos arriesgarnos a cargarlo teniendo en cuenta las consecuencias de lo visto anteriormente en los otros ejemplos ;-).

—————-
CONCLUSIÓN:
Si no queréis estar tan controlados, activar que no se carguen las imágenes automáticamente, excepto a vuestra expresa petición y sabiendo que el remitente sea lo más altamente fiable posible (y aun asi sigue habiendo riesgos…)