måndag 30 mars 2009

Är det JavaScript eller en GIF?

Jasvir Nagra, Google, visade på en intressant sak - filer som är flera saker samtidigt, så kallade polyglots. GIF-formatet tillåter att filen både innehåller en bild och skript såsom JavaScript eller Perl.

<img src="http://www.thinkfu.com/images/thinkfu-js.gif"> ger ...


Men den bilden innehåller också JavaScript som kan köras som <script src="http://www.thinkfu.com/images/thinkfu-js.gif"></script>. Jag kan dock inte köra skript här i bloggen så jag kan inte visa den delen.

Läs hela hans blogginlägg och se skriptet köras här.

Coolt.

Farligt om webbappen filtrerar på filtyp.

2 kommentarer:

Integralis sa...

Sedan när spelar det roll var JS hostas? Om jag injicera en script tag i din HTML så behöver jag inte peka på din site, utan kan ladda koden från vilken URL som helst.

Visst kan det finnas galna tillämpningar där man bara kan trycka in en relativ URI i en script-tags src-attribut, men att säga att det är allmänt farligt är väl att ta i?

John Wilander sa...

Jag tänker typ:
Webbappen tillåter bara korrekta bildfiler att laddas upp. GIF:en från killen på Google är en korrekt GIF.

Sen enforce:ar sajten att skript bara får laddas från den egna domänen. Bra - attackeraren har ju laddat upp en GIF med skript.

Detaljerna är inte superviktiga eftersom det finns extremt många skumma sätt att hantera uppladdning och tillåtna skript -- i ramverk såväl som hemmahack.

Ett av grundproblemen inom datasäkerhet är blandningen av data och kod i samma minnesstruktur. Där hittar man buffer overflow med injicerad kod. Där hittar man SQL-injektion.

Att en GIF kan innehålla kod är således farligt. I alla fall enligt mig.