Il problema PDF è probabilmente un riferimento a un vecchio problema per cui i plug-in PDF preinstallati eseguivano automaticamente JavaScript specificato nel frammento URL.
Non esiste un elenco completo di formati di file pericolosi. Non solo è questa lista nera, ma ignora anche i poliglotti :
The term is sometimes applied to programs that are valid in more than one language, but do not strictly perform the same function in each.
Ad esempio, è possibile costruire un GIF che è anche JavaScript e un pagina HTML che è anche un JPEG . Qualsiasi formato di file sicuro ma per il quale è possibile scrivere un poliglotta con un altro linguaggio non sicuro, è potenzialmente pericoloso.
When a server sends a file, it also sends that file’s MIME type in a Content-Type header. All is well when the Content-Type the server asserts is consistent with the expected context in which that content gets used. What happens when the server does not send a Content-Type? What happens when a file with one Content-Type is sent when a different type is expected?
Sadness happens.
Some browsers consider the content-type the server asserts to be authoritative and if the content fails to parse as that type, the content is not rendered. Others ignore the server asserted type and try to guess (sniff the content) for its type. This sniffing can take the form of heuristics like the suffix of the file name in the URL that specifies it, the “magic” first couple of bytes of the content, or simply trying to parse the file with different parsers until one fits. The type of parser tried is sometimes constrained by the particular tag (fr’instance content expected by an img
tag would only attempt to be parsed according to native image formats supported by the browser.). The problem is further exacerbated by plugins like Java and Flash and by different types of caches and “file save” feature in browsers which may or may not remember what content-type was asserted by the server.
Inoltre, qualsiasi formato di file binario può potenzialmente escalationare i privilegi spuntando buffer overflow nel codice che lo decodifica.
Se stai provando a pubblicare contenuti da fonti non attendibili, devi eseguire il proxy e normalizzarlo.