发新话题
打印

[转载]Microsoft Windows CSRSS.EXE栈溢出漏洞(MS05-018)

[转载]Microsoft Windows CSRSS.EXE栈溢出漏洞(MS05-018)

  信息来源:www.nsfocus.net

受影响系统:
Microsoft Windows 2000 SP4
Microsoft Windows 2000 SP3
Microsoft Windows XP SP2
Microsoft Windows XP SP1
Microsoft Windows XP 64-bit Edition SP1
Microsoft Windows XP 64-Bit Edition 2003版(Itanium)
Microsoft Server 2003 for Itanium-based Systems
Microsoft Server 2003
不受影响系统:
Microsoft Windows XP Professional x64 Edition
Microsoft Server 2003 x64 Edition
Microsoft Server 2003 SP1 for Itanium-based Sys
Microsoft Server 2003 Service Pack 1
描述:
--------------------------------------------------------------------------------
CVE(CAN) ID: CAN-2005-0551

Windows内核是操作系统核心部分,提供系统级别服务,如设备和内存管理,分配处理器时间和管理错误处理。

Win32 API在实现命令行和其他基于字符的用户界面时使用控制台窗口。实现上述功能的特定代码位于CSRSS.EXE系统进程中。CSRSS.EXE进程的WINSRV.DLL文件创建并管理控制台窗口。如果用户从控制台窗口的系统菜单中选择了“属性”选项的话,包含有控制台窗口信息的数据结构就被拷贝到了文件映射的对象。该数据结构被称为CONSOLE_STATE_INFO,结构如下:

typedef struct _CONSOLE_STATE_INFO
   {
    /* 0x00 */  DWORD cbSize;
    /* 0x04 */  COORD ScreenBufferSize;
    /* 0x08 */  COORD WindowSize;
    /* 0x0c */  POINT WindowPosition;
    /* 0x14 */  COORD FontSize;
    /* 0x18 */  DWORD FontFamily;
    /* 0x1c */  DWORD FontWeight;
    /* 0x20 */  WCHAR FaceName[32];    /* Buffer Overflow */
    /* 0x60 */  DWORD CursorSize;
    /* 0x64 */  BOOL  FullScreen;
    /* 0x68 */  BOOL  QuickEdit;
    /* 0x6c */  BOOL  DefaultWindowPos;
    /* 0x70 */  BOOL  InsertMode;
    /* 0x74 */  WORD  ScreenColors;
    /* 0x76 */  WORD  PopupColors;
    /* 0x78 */  BOOL  HistoryNoDup;
    /* 0x7c */  DWORD HistoryBufferSize;
    /* 0x80 */  DWORD NumberOfHistoryBuffers;
    /* 0x84 */  COLORREF ColorTable[16];
    /* 0xc4 */  DWORD CodePage;
    /* 0xc8 */  DWORD hwnd;
    /* 0xcc */  WCHAR ConsoleTitle[2];
   } CONSOLE_STATE_INFO, *PCONSOLE_STATE_INFO;

该结构中的值被传送到了WINSRV.DLL中的代码,但该代码没有正确的验证数据。攻击者可以发送全部为0的CONSOLE_STATE_INFO就可以导致CSRSS进程终止和系统崩溃(蓝屏)。

CONSOLE_STATE_INFO数据结构中还包含有指定字体名称的字符串FaceName[32]。该字符串通过wcscpy()函数拷贝到了固定大小的栈缓冲区,但没有任何检查,如下所示:

   0x5FFB39DF push [ebp+lpFaceName]
   0x5FFB39E2 lea eax, [ebp-54h]
   0x5FFB39E5 push eax
   0x5FFB39E6 call j_wcscpy

攻击者可以通过提供大于32个字节的字符串触发栈溢出,这样就可以完全控制计算机,执行任意代码。

<*来源:David Fritz
  
  链接:http://www.idefense.com/applicat ... mp;flashstatus=true
      http://www.microsoft.com/technet/security/Bulletin/MS05-018.mspx
*>

建议:
--------------------------------------------------------------------------------
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 创建如下注册表键:

  HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System

添加名为DisableCMD的DWORD,将值设置为1禁用命令行提示和批处理文件,或设置为2禁用命令行提示但允许批处理文件。

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS05-018)以及相应补丁:
MS05-018:Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege and Denial of Service (890859)
链接:http://www.microsoft.com/technet/security/Bulletin/MS05-018.mspx

浏览次数:116
严重程度:0(网友投票)
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题