Search
Close this search box.

Exploitation: mime sniffing

Op het moment dat je een website bezoekt, worden er diverse bestanden opgehaald door de webbrowser, zoals HTML, CSS, JavaScript, afbeeldingen en andere media. De browser bepaalt hoe deze bestanden verwerkt moeten worden aan de hand van het MIME-type dat door de server wordt meegestuurd. Maar wanneer deze informatie ontbreekt of onjuist is, gaan sommige browsers zelf “sniffen” wat voor bestand het zou kunnen zijn. Dit proces heet MIME sniffing.

Een aanvaller kan hiervan misbruik maken door een bestand dat bijvoorbeeld een HTML- of script inhoud bevat, te laten doorgaan als een onschuldig bestandstype, zoals een afbeelding of tekstbestand. Als de browser het bestand vervolgens als uitvoerbare code behandelt, kan dit leiden tot het uitvoeren van kwaadaardige scripts met dezelfde impact als bijvoorbeeld XSS.

Cross-site scripting (XSS)

XSS is een aanval waarbij de aanvaller de browser van een slachtoffer misleidt om schadelijke code uit te voeren die afkomstig lijkt van een betrouwbare website. Het doel van XSS-aanvallen is vaak om sessiecookies te stelen, keylogging, phishing of CSRF.

Mime sniffing

Mime sniffing ontstaat wanneer een browser probeert te raden wat voor type bestand het is, in plaats van te vertrouwen op het MIME-type dat door de server is opgegeven. Dit lijkt handig, maar het opent de deur voor misbruik. Als een server bijvoorbeeld een bestand met HTML- of JavaScript-inhoud aanbiedt als een ogenschijnlijk onschuldig type zoals text/plain of image/jpeg, kan een browser alsnog besluiten de inhoud als actieve code uit te voeren.

Dit gedrag maakt het mogelijk om bijvoorbeeld een kwaadaardig script te laten uitvoeren via een bestand dat bedoeld lijkt als download of als statische content. Het risico wordt nog groter wanneer dit gecombineerd wordt met andere kwetsbaarheden, zoals open directories of foutieve permissies, waardoor een aanvaller bestanden kan uploaden of manipuleren.

Mime sniffing is in essentie een browser functie die met goede bedoelingen is ontworpen, maar die in een onveilig systeem ernstige gevolgen kan hebben. Moderne browsers en webstandaarden raden daarom aan om mime sniffing uit te schakelen via specifieke headers, zoals:

				
					X-Content-Type-Options: nosniff

				
			

Door deze header te gebruiken, wordt de browser gedwongen om het opgegeven MIME-type strikt te respecteren, waardoor de kans op het uitvoeren van ongewenste scripts aanzienlijk kleiner wordt.

Niet super spannend wel handig om bewust van te zijn 😉