Co je MIME sniffing
MIME sniffing (někdy také content sniffing) je chování prohlížeče, kdy se snaží určit typ souboru podle jeho struktury, místo aby se řídil informací, kterou poslal server.
Na první pohled to může působit jako užitečná Afunkce – například když server pošle špatný typ souboru a prohlížeč ho přesto správně zobrazí.
Problém nastává ve chvíli, kdy se tím otevře prostor pro spuštění obsahu, který měl být pouze zobrazený (např. jako text nebo obrázek).
Jak MIME sniffing funguje
Každý soubor nebo odpověď serveru má přiřazený MIME typ, který říká, jak s ním má prohlížeč zacházet (např. zobrazit jako obrázek nebo spustit jako skript).
Pokud se ale prohlížeč rozhodne tento údaj ignorovat, začne obsah analyzovat sám. Na základě jeho struktury se pak pokusí určit, o jaký typ jde – a podle toho ho zpracuje.
Kdy může vzniknout problém
Problém nastává ve chvíli, kdy obsah obsahuje škodlivý kód, ale je označený jako neškodný soubor.
Pokud prohlížeč provede MIME sniffing, může:
- spustit kód, který měl být jen uložený jako data
- interpretovat soubor jinak, než bylo zamýšleno
- umožnit útok, který by jinak nebyl možný
Jak se proti MIME sniffingu bránit
Ochrana spočívá v tom, že se prohlížeči zakáže typ obsahu odhadovat.
K tomu slouží HTTP hlavička:
- X-Content-Type-Options: nosniff
Ta zajistí, že prohlížeč bude respektovat deklarovaný MIME typ a nebude se ho snažit měnit.