CVE:CVE-2007-3147
CNNVD:CNNVD-200706-139
雅虎通是一款非常流行的即时通讯工具。
雅虎通的Webcam Upload ActiveX控件实现上存在缓冲区溢出漏洞，远程攻击者可能利用此漏洞控制用户机器。
雅虎通的Webcam Upload(ywcupl.dll)ActiveX控件没有正确的验证对Server属性的输入。如果用户受骗访问了恶意站点向该属性传送了超长字符串然后又调用了Send()方式的话，就可能触发栈溢出，导致执行任意指令。
漏洞起因是ActiveX控件在仅分配了1023字节的空间后对有漏洞的字符串调用了mbscpy。
03ada506    or    dword ptr [ebp-4],0FFFFFFFFh
03ada50a     cmp    eax,ebx
03ada50c     mov    dword ptr [esi+210h],eax  
03ada512     je    ywcupl+0xa5f4 03ada518    lea     ecx,[esi+174h]
                        ; Loads the payload into ECX
03ada51e     call    dword ptr [ywcupl!DllUnregisterServer+0x4b44
7c3a44b3     cmp    dword ptr [ecx+18h],10h
7c3a44b7     jb    MSVCP71!std::basic_string ,std::allocator>::_Myptr+0xa 
7c3a44b9     mov     eax,dword ptr [ecx+4]
                        ; Payload is in EAX
7c3a44bc    ret
03ada524    push    eax
                        ; push payload to the stack
03ada525     push      3FFh
                        ; Max size of 1023        
03ada52a     lea       eax,[ebp-414h]
                        ; EAX = 159dfb98 
                        ; (Destination buffer Location)
03ada530     push    eax
03ada531    push      offset ywcupl!DllUnregisterServer+0x6498 
                        ;"WebcamServer" gets 
                        ; pushed on the stack
03ada536     lea      ecx,[esi+0F8h]
                        ; ECX loads payload
03ada53c     call      ywcupl+0x4a72
....
03ad4ac1     push     dword ptr [ebp+14h]
                        ; pushes our payload to the stack
03ad4ac4     push      dword ptr [ebp+0Ch]
                        ; pushes 0x159dfb98 
                        ; (Destination Buffer
                        ; to copy payload)
03ad4ac7     call     ywcupl!DllUnregisterServer+0x28f2 (03aebfa6)
03aebfa6     jmp       dword ptr [ywcupl!DllUnregisterServer+0x4b9c]
                        ; Call MSVCR71!mbscpy 
这时ActiveX控件没有对server字符串变量执行边界检查便调用了mbscpy，如果该变量超长的话就可能在到达栈底的时候导致页面边界访问破坏。
到达页面边界后就会调用异常处理程序试图清除访问破坏。由于栈已被负载所溢出，因此异常处理器会加载负载并在以下代码调用：
7c9037ae     push     dword ptr [ebp+14h]
7c9037b1     push      dword ptr [ebp+10h]
7c9037b4     push      dword ptr [ebp+0Ch]
7c9037b7     push      dword ptr [ebp+8]
7c9037ba    mov       ecx,dword ptr [ebp+18h]
                        ; ECX loads payload
7c9037bd     call      ecx
                        ; Calls payload
solution:Upgrade yahoo messenger to a higher version than 2.0.1.4,8.0,8.0.0.863,8.0.1,8.0_2005.1.1.4,8.1.0.249,and avoid the version 2.0.1.4,8.0,8.0.0.863,8.0.1,8.0_2005.1.1.4,8.1.0.249