ActivePerlPerlIS.dll远程缓冲区溢出漏洞

  受影响的软件及系统:
  ==================
  Microsoft Windows NT 4.0
  Microsoft Windows 2000
  Microsoft Windows XP
  综述:
  =====
  NSFOCUS安全小组发现微软Windows系统的Multiple UNC Provider(MUP)系统驱动中存在一个缓冲区溢出漏洞,本地攻击者可能利用 这个漏洞导致系统重启或获取Local SYSTEM权限。
  漏洞分析:
  ==========
  当Microsoft Windows NT/2000/XP系统中的应用程序使用UNC格式(例如:\\ip\sharename)来访问其他主机上的文件时,操作系统会将此请求交给Multiple UNC Provider(MUP)进行处理。MUP会将请求发给多个转发程序 (redirector),并根据其响应找到合适的转发程序。MUP运行在核心态,由mup.sys实现其功能。
  当收到一个UNC文件请求时,MUP会先将其保存在内核中的一个缓冲区中,缓冲区的大小为UNC请求长度加上0x1000字节。在将请求发 送给转发程序时,它会再将这个请求拷贝到缓冲区中,附加在原来的那个请求的后面。然而,如果文件请求的长度超过0x1000字节,就可 能覆盖缓冲区之外的内存数据。这些动态分配的内存之间通常包含一些管理结构的数据,通过重写这些数据,当内核重新分配或者释放内 存时,就有可能改变任意内核内存的内容。例如,攻击者可以通过修改idt门来给调用者更高的权限。
  成功地利用这个漏洞,本地攻击者能够修改内核内存中的内容,因此可以获取LocalSYSTEM或者其他任意权限。根据我们的测试,在Windows 2000下可以成功地利用这个漏洞,但并不总是能成功,因为要利用这个漏洞还依赖于内核什么时候会去处理被溢出的内存。如果使用随机数据,系统可能会蓝屏并重 新启动。Windows NT 存在同样的溢出问题,但是似乎更难被利用。
  临时解决方法:
  ===========
  禁止不可信用户登录您的系统。
  厂商状态:
  ==========
  2001.10.17 我们将这个问题通报给了微软公司。
  2001.11.09 微软告知重现了这个问题
  2001.12.05 微软提供了补丁程序供测试,测试发现此问题已被解决
  2002.4.4 微软已就此发布了一个安全公告(MS02-017)以及相应补丁
  您可以在下列地址看到微软安全公告的详细内容:
  http://www.microsoft.com/technet/security/bulletin/ms02-017.asp
  补丁程序可以在下列地址下载:
  . Microsoft Windows NT 4.0:
  http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37630
  . Microsoft Windows NT 4.0 Terminal Server Edition:
  http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37652
  . Microsoft Windows 2000:
  http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37555
  . Microsoft Windows XP:
  http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37583
  附加信息:
  ==========
  通用漏洞披露(Common Vulnerabilities and Exposures)组织CVE已经为此问题分配了一个候选名 CAN-2002-0151。此名字是为了收录进CVE列表做候选之用,(http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被正式加入CVE列表之前可能会有较大的变化。