安全研究

安全漏洞
Microsoft Windows DNS服务器RPC接口远程栈溢出漏洞(MS07-029)

发布日期:2007-04-12
更新日期:2007-05-08

受影响系统:
Microsoft Windows Server 2003 SP2
Microsoft Windows Server 2003 SP1
Microsoft Windows 2000 Server SP4
描述:
BUGTRAQ  ID: 23470
CVE(CAN) ID: CVE-2007-1748

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

Microsoft Windows DNS服务器的RPC接口在处理畸形请求时存在栈溢出漏洞。Lookup_ZoneTreeNodeFromDottedName()函数使用固定的本地缓冲区转换Name_ConvertFileNameToCountName()字符串,该字符串中可能包含有反斜线八进制字符。尽管在写入缓冲区时执行了一些边界检查,但攻击者可以使用包含有多个反斜线字符的字符串绕过检查,导致栈溢出。

可通过DNS RPC接口到达有漏洞的函数,执行流如下:

  R_DnssrvQuery(pa,buggybuffer,pc,DesiredAccess,pd);                  // RPC Exported function
  R_DnssrvQuery2(0,0,pa,buggybuffer,pc,DesiredAccess,pd);      
  RpcUtil_FindZone(buggybuffer,1,DesiredAccess);  
  Zone_FindZoneByName(buggybuffer);                                   // Here we go!
  Lookup_ZoneTreeNodeFromDottedName(buggybuffer,0,0x2000000);
            Name_ConvertFileNameToCountName(localbuffer,buggybuffer,0); // Using fixed size local buffer
                    extractQuotedChar(x,x,buggybuffer);               // Extract octal number          

如果远程攻击者能够向有漏洞的系统发送特制的RPC报文的话,就可以触发这个溢出,导致以DNS服务的安全环境执行任意指令(默认为Local SYSTEM)。


<*来源:Microsoft
  
  链接:http://www.microsoft.com/technet/security/advisory/935964.mspx?pf=true
        http://secunia.com/advisories/24871/
        http://www.us-cert.gov/cas/techalerts/TA07-103A.html
        http://research.eeye.com/html/alerts/zeroday/20070407.html
        http://www.microsoft.com/technet/security/bulletin/ms07-029.mspx?pf=true
        http://www.us-cert.gov/cas/techalerts/TA07-128A.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.milw0rm.com/exploits/3740
http://www.milw0rm.com/exploits/3737
http://metasploit.com/svn/framework3/trunk/modules/exploits/windows/dcerpc/msdns_zonename.rb
http://www.milw0rm.com/sploits/04152007-dnsxpl.rar

建议:
临时解决方法:

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

* 通过设置注册表禁止通过RPC远程管理DNS服务器:

1. 在开始菜单中点击“运行”,键入Regedit然后点击回车
2. 找到以下注册表位置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
3. 在“编辑”菜单中选择“新建”,然后点击DWORD Value
4. 在高亮显示的New Value #1中键入RpcProtocol,然后点击回车
5. 双击新建的值并将该值的数据更改为4
6. 重启DNS服务,更改生效

* 将以下注册表脚本保存为.REG文件并使用regedit.exe以/s命令行开关部署:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters]

"RpcProtocol"=dword:00000004

* 在防火墙上阻断1024到5000端口上所有未经认证的入站通讯
* 在系统上启用高级TCP/IP过滤
* 使用IPsec阻断1024到5000端口

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS07-029)以及相应补丁:
MS07-029:Vulnerability in Windows DNS RPC Interface Could Allow Remote Code Execution (935966)
链接:http://www.microsoft.com/technet/security/bulletin/ms07-029.mspx?pf=true

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