El problema del PDF es probablemente una referencia a un problema anterior en el que los complementos de PDF preinstalados ejecutarán automáticamente el JavaScript especificado en el fragmento de la URL.
No hay una lista completa de formatos de archivo que sean peligrosos. No solo es esta lista negra, sino que también ignora polyglots :
El término a veces se aplica a los programas que son válidos en más de un idioma, pero no realizan estrictamente la misma función en cada uno.
Por ejemplo, es posible construir un GIF que también es JavaScript y un Página HTML que también es un JPEG . Cualquier formato de archivo que sea seguro, pero para el que es posible escribir un políglota con otro idioma inseguro, es potencialmente inseguro.
Cuando un servidor envía un archivo, también envía el tipo MIME de ese archivo en un encabezado Content-Type. Todo está bien cuando el tipo de contenido que el servidor afirma es consistente con el contexto esperado en el que se usa ese contenido. ¿Qué sucede cuando el servidor no envía un tipo de contenido? ¿Qué sucede cuando se envía un archivo con un tipo de contenido cuando se espera un tipo diferente?
La tristeza sucede.
Algunos navegadores consideran que el tipo de contenido que el servidor afirma tiene autoridad y si el contenido no se puede analizar como ese tipo, el contenido no se procesa. Otros ignoran el tipo afirmado del servidor e intentan adivinar (oler el contenido) para su tipo. Este rastreo puede tomar la forma de heurísticas como el sufijo del nombre del archivo en la URL que lo especifica, el primer par de bytes "mágicos" del contenido, o simplemente intentar analizar el archivo con diferentes analizadores hasta que se ajuste uno. El tipo de analizador probado a veces está limitado por la etiqueta en particular (el contenido de instancia esperado por una etiqueta img
solo intentará analizarse de acuerdo con los formatos de imagen nativos admitidos por el navegador). El problema se ve agravado aún más por los complementos como Java y Flash y por los diferentes tipos de caché y la función de "guardar archivos" en los navegadores que pueden o no recordar qué tipo de contenido fue declarado por el servidor.
Además, cualquier formato de archivo binario puede potencialmente aumentar los privilegios al hacer que se desborden los búferes en el código que lo decodifica.
Si está tratando de servir contenido de fuentes que no son de confianza, necesita un proxy y normalizarlo.