Microsoft Windows MSDTC堆溢出漏洞(MS06-018)

2006-10-28T00:00:00
ID SSV:272
Type seebug
Reporter Root
Modified 2006-10-28T00:00:00

Description

Microsoft Windows是微软发布的非常流行的操作系统。

Windows系统的MSDTC进程处理畸形的DCE-RPC请求时存在漏洞,远程攻击者可能利用此漏洞对服务器执行拒绝服务攻击。

在MSDTC.EXE进程中MSDTCPRX.DLL起到了RPC Server的作用,使用动态TCP端口做为其RPC端点,{906B0CE0-C70B-1067-B317-00DD010662DA} v1.0作为其唯一的接口。由于缺少输入验证,函数CRpcIoManagerServer::BuildContext中存在堆溢出漏洞。具体的说,该函数试图用空的GUID字符串覆盖其pszGuidOut参数(相当于传送给BuildContext/BuildContextW的第五个字符串参数)。由于在字符串拷贝之前没有检查目标字符串的长度,因此可能覆盖包含有RPC存根(stub)数据的堆块。

在NT 4.0中有漏洞的拷贝操作是“strcpy(arg_10, pszNULL_GUID)”调用,在Windows 2000中是“wcscpy(arg_28, pwszNULL_GUID)”调用。

Microsoft Windows XP SP2 Microsoft Windows XP SP1 Microsoft Windows Server 2003 Microsoft Windows 2000 临时解决方法:

NSFOCUS建议采取如下措施以降低威胁:

  • 禁用分布式事务处理协调器
  • 禁用网络DTC访问
  • 在防火墙处阻止端口号大于1024的端口上的所有非法入站通讯以及任何其他特殊配置的RPC端口
  • 使用个人防火墙,如Windows XP和Windows Server 2003捆绑的Internet连接防火墙
  • 在支持高级TCP/IP过滤功能的系统上启用此功能
  • 在受影响的系统上使用IPSec来阻断受影响的端口

厂商补丁:

Microsoft

Microsoft已经为此发布了一个安全公告(MS06-018)以及相应补丁: MS06-018:Vulnerability in Microsoft Distributed Transaction Coordinator Could Allow Denial of Service (913580) 链接:http://www.microsoft.com/technet/security/Bulletin/MS06-018.mspx?pf=true