martes, 7 de febrero de 2017

¿Creías que las imágenes eran inofensivas? Podrías estar equivocado...

Si alguna vez creíste que las imágenes que te encuentras por la red son inofensivas, temo decirte que estás equivocado. Con ello, no me refiero a aquellas falsas imágenes disfrazadas de JPEG o PNG que en realidad muestran ser un ejecutable, sino imágenes reales que puedes encontrarte navegando por la red.

A pesar de ser una técnica ya conocida, está volviendo a utilizarse con relativa frecuencia. Para un atacante, cualquier método es válido, desde Javascripts adjuntos en un e-mail hasta documentos de Word con macros ocultas. Esta vez, hablamos de un método que hace uso de JS, pero se ejecuta sin que el usuario le dé tiempo a preguntar.

Esta vez nos centraremos en los ficheros SVG, para los que no los conozcan, es un formato de gráfico vectorial cuyo formato esta expresado en XML.

Un ejemplo de una imagen SVG que genera un círculo rojo de radio 50 pixeles:
<svg width="130" height="130">
   <circle cx="60" cy="60" r="50" stroke="black" stroke-width="4" fill="red" />
</svg> 

Si probáis esto en un navegador, obtendremos una imagen tal que así...














Una vez visto esto diréis: Bueno, parece útil. Nada más lejos de la realidad, esto puede utilizarse con fines maliciosos... 

Es posible introducir código JavaScript que se ejecutará conforme se cargue la imagen, por lo que quedará camuflado para el usuario y no necesitará confirmar nada para que este actúe.

Para ello, vamos a poner un ejemplo que no supone peligro para el usuario, pero si demostrará lo que puede ocurrir:

<svg width="130" height="130">
   <a xlink:href="javascript:alert(location)">
   <script>
         alert('Hola UAD! :}');
   </script>
   <circle cx="60" cy="60" r="50" stroke="black" stroke-width="4" fill="red" />
</svg>



Como veis, al abrir el contenido obtenemos la imagen correspondiente al círculo y la ventanita avisándo de que se ha ejecutado el JavaScript, pero... ¿Y si no hubiese avisado al usuario? Podría haberse ejecutado cualquier otra cosa de fondo, como la descarga de un archivo.

Afortunadamente, este tipo de técnicas tienen lugar dentro de la Sandbox del navegador, por lo que no "deberían" escapar de este, sin embargo pueden llegar a provocar una confusión en el usuario y ejecutar un binario que el script oculto descargue, o ejecutar otro tipo de código malicioso que actúe dentro del navegador de la víctima.


Fernando Díaz

No hay comentarios:

Publicar un comentario