安全研究

安全漏洞
Novell iManager Schema菜单类名称栈溢出漏洞

发布日期:2010-06-23
更新日期:2010-06-24

受影响系统:
Novell iManager 2.7
不受影响系统:
Novell iManager 2.7.4
Novell iManager 2.7.3 ftf4
描述:
BUGTRAQ  ID: 40480
CVE ID: CVE-2010-1929

Novell iManager是一款基于WEB的应用程序,可以使用无线设备管理、配置Novell eDirectory对象。

iManager在Schema菜单下提供了一个功能允许创建类,类名称最长为32个字符。这个限制是由客户端在表单字段中将maxlength属性设置为32来强制的,但在服务端没有执行验证来确保用户所定义的类名称没有超过32个字符。已认证的用户可以通过篡改在创建新类时发送类名称的POST请求就可以触发栈溢出,导致覆盖返回地址和SEH,以当前用户(iManager工作站的情况)或SYSTEM权限(iManager服务器的情况)执行任意代码。

在服务器端,创建新的类是由iManager Tomcat web服务器jclient.dll模块中的jclient._Java_novell_jclient_JClient_defineClass@20函数处理的,该函数会未经长度检查调用子例程将用户定义的类名称拷贝到固定大小的栈缓冲区。以下iManager Tomcat web服务器的反汇编代码说明了这个漏洞:

/-----
[jvm.dll + 0x1055CC]

6D9B55CC  |.  8B7D 18       MOV EDI,DWORD PTR
SS:[EBP+18]                    ;  edi = destination buffer in the stack
6D9B55CF  |.  83E1 3F       AND ECX,3F
6D9B55D2  |.  D3E0          SHL EAX,CL
6D9B55D4  |.  8D7472 0C     LEA ESI,DWORD PTR
DS:[EDX+ESI*2+C]               ;  esi = pointer to class name
6D9B55D8  |.  8BC8          MOV
ECX,EAX                                      ;  ecx = length of class name
6D9B55DA  |.  8BD1          MOV EDX,ECX
6D9B55DC  |.  C1E9 02       SHR ECX,2
6D9B55DF  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR
DS:[ESI]   ;  *BUFFER OVERFLOW*

- -----/

<*来源:Francisco Falcon
  
  链接:http://marc.info/?l=full-disclosure&m=127732886932682&w=2
        http://secunia.com/advisories/40281/
*>

建议:
临时解决方法:

* 创建WAF规则,限制提交给URI /nps/servlet/webacc/的POST请求中的EnteredClassID和NewClassName参数长度。

厂商补丁:

Novell
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://support.novell.com/security-alerts

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