CVE:CVE-2006-2086
CNNVD:CNNVD-200604-546
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参数的话，就可以覆盖栈中的返回地址并执行任意代码。
solution:Upgrade juniper junipersetup_control to a higher version than *