MIME sniffing protection

9

Como se sabe, las versiones anteriores de MSIE (antes de las 8) tienen el desagradable hábito de tratar las imágenes como HTML si "parecen" HTML, lo que puede generar vulnerabilidades desagradables en los sitios que permiten a las personas subir imágenes. A pesar de que está arreglado en IE8, todavía hay una gran cantidad de IE7 y antes, por lo que debe abordarse. Entonces, la pregunta es, ¿cuál es la mejor manera de abordarlo, dado:

  1. sitio PHP con archivos subidos
  2. No recodificar imágenes (es decir, no se pueden usar cosas como ImageMagick)
  3. Se debe permitir el acceso directo a las imágenes
  4. No podemos prohibir que las personas utilicen la extensión "incorrecta"

Verificando los primeros 256 bytes para algo como < (html | body | img | script | head) > ¿bastar? ¿Alguna forma mejor de hacerlo?

    
pregunta StasM 17.04.2011 - 09:50
fuente

2 respuestas

5

enlace es una excelente referencia general del problema. No es solo para imágenes, también para archivos txt y otros ...

    
respondido por el Phoenician-Eagle 17.04.2011 - 13:40
fuente
4

No, verificar los primeros 256 bytes (o cualquier número dado) definitivamente es no suficiente.

Incluso si pudieras verificar (por cierto, deberías verificar aproximadamente 4K bytes ...) que no hay HTML allí (ignorando la facilidad de ofuscar ese HTML a través de codificaciones, etc.), el HTML no es la única posibilidad maliciosa que podría estar escondida dentro de su imagen (¿asumo que se están subiendo las imágenes?)

Por ejemplo, consulte esta pregunta sobre vulnerabilidad de imagen dañada , no solo con desbordamientos de búfer, sino que como se indica en mi respuesta la posibilidad de GIFAR (y formatos similares), que es esencialmente un GIF completamente válido, pero también un archivo JAR válido y ejecutable. Esto se debe a que no todos los formatos de archivo tienen sus encabezados al principio del archivo.
Por lo tanto, verificar el comienzo explícitamente NO es el camino a seguir.

    
respondido por el AviD 17.04.2011 - 15:09
fuente

Lea otras preguntas en las etiquetas