安全研究
安全漏洞
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(网友投票)
绿盟科技给您安全的保障