Lucene search
K

Microsoft Internet Explorer 9 MSHTML CDispNode::InsertSiblingNode Use-After-Free

🗓️ 08 Dec 2016 00:00:00Reported by SkyLinedType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 81 Views

Microsoft Internet Explorer 9 MSHTML CDispNode::InsertSiblingNode Use-After-Free vulnerabilit

Related
Code
`Since November I have been releasing details on all vulnerabilities I  
found that I have not released before. This is the twenty-eighth entry  
in the series. This information is available in more detail on my blog  
at http://blog.skylined.nl/20161208001.html. There you can find a repro  
that triggered this issue in addition to the information below.  
  
Today's release is again not very interesting, because it also was one  
of the first bugs I found and reported back in 2012, before I had  
developed the tools and skills to properly analyze MSIE bugs. This  
report is therefore very scarce in information. I did get some more  
details from EIP about the root cause, which I've included.  
  
If you find this information useful, and would like to help me make time  
to continue releasing this kind of information, you can make a donation  
in bitcoin to 183yyxa9s1s1f7JBpAPHPmzAQ346y91Rx5DX.  
  
Follow me on http://twitter.com/berendjanwever for daily browser bugs.  
  
MSIE 9 MSHTML CDispNode::InsertSiblingNode 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 and attack vectors  
------------------------------------------  
* Microsoft Internet Explorer 9  
An attacker would need to get a target user to open a specially  
crafted web-page. JavaScript does not appear to be required for an  
attacker to triggering the vulnerable code path.  
  
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 `FreeEntryOffset`  
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 `FreeEntryOffset` 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 at  
http://www.zerodayinitiative.com/advisories/ZDI-13-082/  
  
Time-line  
---------  
* 27 September 2012: This vulnerability was found through fuzzing.  
* 3 October 2012: This vulnerability was submitted to EIP.  
* 11 October 2012: This vulnerability was rejected by EIP.  
* 2 November 2012: This vulnerability was submitted to ZDI.  
* 19 November 2012: This vulnerability was acquired by ZDI.  
* 22 January 2013: This vulnerability was disclosed to Microsoft by ZDI.  
* 29 May 2013: Microsoft addresses this vulnerability in MS13-037.  
* 8 December 2016: Details of this vulnerability are released.  
  
Cheers,  
  
SkyLined  
  
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>  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation