受影响的软件及系统: ================== Activestate ActivePerl 5.6.1.629 以及更低版本 - Microsoft Windows IIS 4.0 - Microsoft Windows IIS 5.0 不受影响的软件及系统: ==================== Activestate ActivePerl 5.6.1.630 - Microsoft Windows IIS 4.0 - Microsoft Windows IIS 5.0 综述: ===== NSFOCUS安全小组发现ActivePerl所带的一个动态链接库(perlIS.dll)在处理超长文件名时存在一个缓冲区溢出漏洞,攻击者可能利用这个漏洞远程执行任意代码。 漏洞分析: ========== ActivePerl 是ActiveState公司开发的一套二进制perl软件包,可应用于Linux,Solaris, Windows系统下。ActivePerl for windows包含一个名为perlIS.dll的动态链接库文件,它是一个ISAPI扩展,为微软IIS服务器提供了一个高性能的perl接口。 PerlIS可以对用户发送的perl脚本请求进行处理,然而,它没有正确检查用户提交的URL 请求的长度。如果用户发送一个超长的URL请求,PerlIS会调用strcpy()将其拷贝到一个堆栈中的缓冲区里,这会触发一个缓冲区溢出。攻击者可以覆盖堆栈中的一些敏感数据,例如返回地址等等,如果精心构造URL请求的内容,攻击者就可以远程执行任意代码。 成功地利用这个漏洞,在IIS 5.0中,攻击者可以获取IWAM_machinename用户的权限. 在IIS 4.0中,攻击者可以获取Local SYSTEM权限。 漏洞测试: ========== $ lynx http://host/cgi-bin/`perl -e 'print "A" x 360'`.pl The remote procedure call failed. 临时解决方法: =========== 我们建议用户按照参考如下步骤消除漏洞(以IIS 4.0为例): 1. 打开Internet 服务管理器 2. 右击你的服务器(例如 "* nsfocus"),在菜单中选择"属性"栏 3. 选择"主属性" 4. 选择 WWW 服务 | 编辑 | 主目录 | 配置 5. 在扩展名列表中找到对应perlIS.dll的项(通常映射到".pl"或".cgi") 6. 点击"配置",然后点击"检查文件是否存在"选项 6. 保存设置,然后重启IIS服务。 厂商状态: ========= 2001.10.15 我们将这个问题通报给了ActiveState公司。 2001.10.23 ActiveState公司告知已经在build 630中修复此安全问题 您可以在下列地址下载ActivePerl的最新版本: http://www.activestate.com/ProdUCts/ActivePerl/download.plex 附加信息: ========== 通用漏洞披露(Common Vulnerabilities and EXPosures)组织CVE已经为此问题分配了一个候选名 CAN-2001-0815。此名字是为了收录进CVE列表做候选之用, (http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被正式加入CVE列表之前可能会有较大的变化。
(出处:http://www.sheup.com)