Good morning,
"Fame-hungry sociopath torches cars, finds browser flaws
WARSAW, Poland (AP) -- police are on a look out for a local adolescent
vandal who continues to terrorize local IT workers in what appears to be
a bizzare bid for fame. Larry Seltzer reports from the scene."
Well, I just had to do this, forgive me.
There seems to be an interesting class of concurrency-related bugs in
popular browsers. This is quite similar to signal-handling flaws you might
be familiar with: many browser events can be triggered asynchronously, for
example using Javascript timers, while some components of the browser are
still running. In many cases, a new action might be initiated that
interferes with or counters the interrupted (or still executing) task.
Problems like this may leave the program in inconsistent state, and later
cause double frees or related issues. That usually opens the door to
system compromise through careful manipulation of memory contents. The
attacks would depend heavily on network latency and jitter, but can be
executed.
Given that the tip of that iceberg has been probed recently - for example
here: http://www.mozilla.org/security/announce/2006/mfsa2006-46.html - I
assumed it is now the time to post my older example.
A fairly reliable example is when Firefox is interrupted by a Javascript
handler while parsing a deeply nested XML document for display. If the
browser is then redirected from the script to a new location, the
unfinished parsing process is aborted, and all its structures are freed -
but these were not left in the expected state by the parser.
This is a demo that will usually crash Firefox in a couple of seconds
(SEGV on Linux and MacOS, silent crashes on Windows):
http://lcamtuf.coredump.cx/ffoxdie.html
Have fun!
PS. For the easily amused: MSIE loves "<DT><H1 STYLE=width:1px><LI></H1>"
/mz
http://lcamtuf.coredump.cx/
Update :
Here's another separate issue that typically causes fault on memory access
to website-influenced memory access:
http://lcamtuf.coredump.cx/ffoxdie3.html
This is separate from the previously presented example (which, remarkably,
also had a tendency to trigger an unrelated call stack overflow due to XML
parsing glitch on some platforms, which caused some confusion - my bad).
Note that because it depends on timing more heavily, it may not work in
the first shot on all computers (though it should).
/mz
//SecurityReason Note : All Exploits included in ExploitAlert