¿Cómo analizaría una imagen para averiguar si hay scripts incrustados en ella?

12

¿Cómo analizaría una imagen para averiguar si hay scripts o posibles malware incrustados en ella? ¿Qué herramientas / métodos utilizar?

    
pregunta m4ck 27.12.2011 - 05:05
fuente

4 respuestas

10

Supongo que aceptará los archivos de imágenes cargados por el usuario y los servirá a otros usuarios a través de una aplicación web. En ese caso, aquí hay dos vectores de ataque diferentes.

(1) archivos que pueden interpretarse como imagen y otro tipo.

Esto incluye:

(1a) archivos con etiquetas HTML incrustadas, que luego pueden ser cargadas como HTML por un navegador que rastrea contenido, y las secuencias de comandos dentro del contexto de seguridad de su dominio causan el JavaScript XSS tradicional.

(1b) archivos que se pueden interpretar como datos de complemento, especialmente Java (ataque GIFAR). El solo hecho de alojar estos puede comprometer el XSS porque la misma política de origen en Java y Flash se basa en la ubicación donde se encuentra el archivo, no en la página de inclusión.

Normalmente, estos archivos pueden ser imágenes válidas del tipo esperado así como que funcionan como el tipo de destino vulnerable.

Puede dificultar estos ataques procesando las imágenes enviadas, cargándolas y volviéndolas a guardar. Puede hacer esto de todos modos para realizar recortes, cambiar el tamaño o realizar cambios en el nivel de calidad.

En principio, es posible que alguien envíe una imagen que, cuando se comprime con el algoritmo que esté utilizando, muestre una imagen con <script> u otro contenido incorrecto, pero esto es probablemente poco práctico en la realidad.

De cualquier manera, debe mitigar este ataque al enviar cualquier archivo enviado por un usuario desde un dominio separado que no tenga la capacidad de crear secuencias de comandos o compartir cookies con el dominio del sitio web principal. (Puede ser un subdominio siempre que no se sirva nada en ningún dominio ancestro compartido).

(2) imágenes con formato incorrecto que explotan errores en los decodificadores de imágenes del navegador para provocar la ejecución de código arbitrario. Estos no son comunes hoy en día, pero ha habido errores en el decodificador de imágenes en el pasado y es posible que surjan algunos más.

Esto también puede eliminarse cargando y volviendo a guardar la imagen; Incluso el simple hecho de no recibir un error en la carga es generalmente una buena señal. Sin embargo, es posible que haya un error en su propio decodificador de imagen, lo que haría que su servidor sea vulnerable a los mismos problemas.

Asegúrese de que los componentes de procesamiento de imágenes del lado del servidor estén actualizados y, donde pueda, limite la cantidad de formatos de entrada aceptados para reducir la superficie de ataque. También es posible que desee considerar la ejecución del manejo de imágenes en un proceso de privilegios más bajos (privsep) si esta es una amenaza probable para su aplicación.

La carga de una imagen para su procesamiento también conlleva el riesgo de ataques de denegación de servicio del lado del servidor a través de imágenes muy grandes (en tamaño y / o bombas de compresión). Sanity: compruebe el tamaño y la resolución del archivo desde el encabezado del archivo de imagen antes de intentar cargar.

Dependiendo de lo que sea su aplicación, puede haber un beneficio limitado de la detección de vulnerabilidades de imagen con formato incorrecto porque (aparte de su rareza) es generalmente fácil para un atacante alojarlo en otro lugar y publicar la imagen o un enlace en otro usuario. Contenido enviado.

    
respondido por el bobince 27.12.2011 - 11:10
fuente
2

Además de la respuesta de @ bobince, también debe tener cuidado con las secuencias de comandos incrustadas en los metadatos de la imagen. Esto es un riesgo si está mostrando, por ejemplo, datos EXIF de imágenes enviadas por el usuario. (Encontré un par de vulnerabilidades de XSS en una galería de imágenes popular basada en este método de inyección).

Muchas herramientas / bibliotecas le mostrarán metadatos de imágenes. Exiv2 es una herramienta útil para ver y manipular los metadatos de imagen EXIF e IPTC.

    
respondido por el bstpierre 27.12.2011 - 14:45
fuente
1

Para evitar que Internet Explorer > = 8 elimine MIME una respuesta del tipo de contenido declarado, puede agregar X-Content-Type-Options strong con el valor nosniff . Consulte enlace

    
respondido por el Omar Elfada 28.12.2011 - 18:21
fuente
-1

La mayoría de los detectores de virus utilizan una detección basada en firmas para descubrir malware incrustado en cualquier archivo.

Sin embargo, esos programas maliciosos rara vez se ejecutan si se trata de una imagen real (extensión de archivo), la imagen se muestra con un programa correcto, que no intenta "ejecutar" una imagen.

    
respondido por el jcisio 27.12.2011 - 07:45
fuente

Lea otras preguntas en las etiquetas