安全研究

安全漏洞
Microsoft Windows工作站服务远程缓冲区溢出漏洞(MS03-049/KB828749)

发布日期:2003-11-11
更新日期:2003-11-13

受影响系统:
Microsoft Windows XP Professional SP1
Microsoft Windows XP Professional
Microsoft Windows XP Home SP1
Microsoft Windows XP Home
Microsoft Windows XP
Microsoft Windows 2000SP4
Microsoft Windows 2000SP3
Microsoft Windows 2000SP2
不受影响系统:
Microsoft Windows NT 4.0SP6a
Microsoft Windows ME
Microsoft Windows 2003
描述:
BUGTRAQ  ID: 9011
CVE(CAN) ID: CVE-2003-0812

Microsoft DCE/RPC服务可以提供网络管理功能,这些功能提供管理用户帐户和网络资源管理的功能。部分网络管理功能在Windows目录下的"debug"子目录会生成调试日志文件。

Microsoft Workstation服务在处理日志记录时缺少充分的边界缓冲区检查,远程攻击者可以利用这个漏洞提供超长参数触发缓冲区溢出,以SYSTEM权限在系统上执行任意指令。

日志功能中使用vsprintf()在日志文件中生成字符串,日志文件名为"NetSetup.LOG",其保存在Windows "debug"目录中。

这个记录函数有部分处理Workstation服务命令的函数调用,如"NetValidateName", "NetJoinDomain"等,在这NetValidateName()中,"computer name"作为第二个参数最终记录在日志文件中。

如我们使用NetValidateName() API:

   NetValidateName(L"\\\\192.168.0.100","AAAAAAAA",NULL,NULL,0);

那么我们可以在远程主机中产生如下记录条目:

    08/13 13:01:01 NetpValidateName: checking to see if '' is valid as type 0 name
    08/13 13:01:01 NetpValidateName: '' is not a valid NetBIOS \\AAAAAAAA name: 0x57
    
如果我们指定超长字符串作为NetValidateName() API的第二个参数,如果调试文件可写就可以在特定主机上发生缓冲区溢出。

一般如果是NTFS文件系统,在Windows目录中的"debug"目录不允许所有人可写,这表示不能使用NULL会话来生成日志。WsImpersonateClient() API在打开日志文件前调用,如果连接客户端没有有效的权限来写日志文件,那么CreateFile()就会失败,vsprintf()就不会被执行,因此此漏洞在FAT32系统和"%SYSTEMROOT%\debug"目录可写的情况下可被利用。

但是部分扩展RPC函数实现在Windows XP上在调用WsImpersonateClient()前打开日志文件,不过这些RPC函数没有提供文档化说明,不过可以观察在WKSSVC.DLL中的函数表观察到。这些扩展命令的RPC号开始于0x1B,如0x1B调用NetpManageComputers(),但在打开日志文件前不调用WsImpersonateClient()。

NetpManageComputers()的使用没有被公开化,但是我们可以在"LMJoin.h"中找到NetAddAlternateComputerName() API的原型定义,这个API从NETAPI32.DLL导出,这个API也一样没有文档化。我们可以执行这个RPC函数(0x1B)使用如下API产生包:

   NetAddAlternateComputerName(L"\\\\192.168.0.200",long_unicode_string,NULL,NULL,0);

我们不需要特殊权限在远程主机上写第二个产生到日志文件中,如定义超长Unicode字符串作为第二个参数("AlternateName"),在第一个参数定义的远程系统就会由于缓冲区溢出而崩溃。Unicode字符串"long_unicode_string"会在日志记录函数调用前被转换为ASCII字符串。

<*来源:Microsoft Security Team (secure@microsoft.com
  
  链接:http://www.microsoft.com/technet/security/bulletin/MS03-049.asp
*>

建议:
临时解决方法:

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

* 在防火墙上过滤UDP 138, 139, 445端口和TCP 138, 139, 445端口。
* 使用个人防火墙过滤进入的流量,比如Windows XP捆绑的Internet连接防火墙。
* 在Windows 2000和Windows XP自带的高级TCP/IP过滤。
* 禁用Workstation服务。
    
注意: 禁用此服务将导致很多依赖它的服务失效,例如您将不能访问共享资源, 不能使用拨号、 *DSL、Cable modem连接等等。仅推荐有经验的用户使用此方法。

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS03-049)以及相应补丁:
MS03-049:Buffer Overrun in the Workstation Service Could Allow Code Execution (828749)
链接:http://www.microsoft.com/technet/security/bulletin/MS03-049.asp

补丁下载:

Microsoft Windows 2000 Service Pack 2, Service Pack 3, Service Pack 4

http://www.microsoft.com/downloads/details.aspx?FamilyId=2467FE46-D167-479C-9638-D4D79483F261&displaylang=en

Microsoft Windows XP, Microsoft Windows XP Service Pack 1

http://www.microsoft.com/downloads/details.aspx?FamilyId=F02DA309-4B0A-4438-A0B9-5B67414C3833&displaylang=en

Microsoft Windows XP 64-Bit Edition

http://www.microsoft.com/downloads/details.aspx?FamilyId=2BE95254-4C65-4CA5-80A5-55FDF5AA2296&displaylang=en

浏览次数:6911
严重程度:12(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障