安全研究

安全漏洞
Juniper SSL-VPN客户端ActiveX控件远程溢出漏洞

发布日期:2006-04-26
更新日期:2006-04-26

受影响系统:
Juniper Networks IVE OS 1.x - 5.x
不受影响系统:
Juniper Networks IVE OS 5.3 r2.1
Juniper Networks IVE OS 5.2 r4.1
Juniper Networks IVE OS 5.1 r8
Juniper Networks IVE OS 5.0 r6.1
Juniper Networks IVE OS 4.2 r8.1
描述:
BUGTRAQ  ID: 17712

Juniper的SSL VPN系列产品可为用户提供安全的远程接入服务。

Juniper的SSL-VPN客户端ActiveX控件中存在远程溢出漏洞,远程攻击者可能利用此漏洞在客户机器上执行任意指令。

JuniperSetupDLL.dll是从JuniperSetup.ocx ActiveX控件加载的。如果在ProductName参数中指定了如下的超长字符串的话,就会在JuniperSetupDLL.dll函数中触发栈溢出:

--- object classid="clsid:E5F5D008-DD2C-4D32-977D-1A0ADF03058B" id=NeoterisSetup codebase="path_to_JuniperSetup.cab#version=1,0,0,3">
.....
---PARAM NAME="ProductName" VALUE="AAAAAAA (long 'A')">
.....

script language=javascript
NeoterisSetup.startSession();
end script

有漏洞的函数如下:

.text:04F15783 ; int __stdcall sub_4F15783_ilvdlp(char *szProductName,LPCSTR lpValueName,LPBYTE lpData,LPDWORD lpcbData)
.text:04F15783 sub_4F15783_ilvdlp proc near
.text:04F15783
.text:04F15783 SubKey = byte ptr -10Ch
.text:04F15783 Type = dword ptr -8
.text:04F15783 hKey = dword ptr -4
...
.text:04F157BF lea eax, [ebp+SubKey]
.text:04F157C5 push offset szUninstallRegistryKey
.text:04F157CA push eax
.text:04F157CB call strcpy
.text:04F157D0 push [ebp+szProductName]
.text:04F157D3 lea eax, [ebp+SubKey]
.text:04F157D9 push eax
.text:04F157DA call strcat

.data:04F1EA10 ; char szUninstallRegistryKey[]
.data:04F1EA10 szUninstallRegistryKey db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\',0

这个函数的第一个参数(szProductName)是用于创建卸载注册表项的产品名。ProductName参数的值字段传送给szProductName,未经任何边界检查便使用strcat()函数拷贝到了本地缓冲区SubKey。因此,如果能够传送特制的ProductName参数的话,就可以覆盖栈中的返回地址并执行任意代码。

<*来源:Yuji Ukai
  
  链接:http://juniper.net/support/security/alerts/PSN-2006-03-013.txt
        http://www.eeye.com/html/research/advisories/AD20060424.html
*>

建议:
厂商补丁:

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

http://www.juniper.net/

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