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(网友投票)