雅虎通是一款非常流行的即时通讯工具。 雅虎通的Webcam Viewer ActiveX控件实现上存在漏洞,远程攻击者可能利用此漏洞控制用户机器。 雅虎通的Webcam Viewer(ywcvwr.dll)ActiveX控件没有正确地验证对Server属性的输入。如果用户受骗访问了恶意站点向该属性传送了超长字符串然后又调用了Receive()方式的话,就可能触发栈溢出,导致执行任意指令。 漏洞起因是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...
雅虎通是一款非常流行的即时通讯工具。 雅虎通的Webcam Viewer ActiveX控件实现上存在漏洞,远程攻击者可能利用此漏洞控制用户机器。 雅虎通的Webcam Viewer(ywcvwr.dll)ActiveX控件没有正确地验证对Server属性的输入。如果用户受骗访问了恶意站点向该属性传送了超长字符串然后又调用了Receive()方式的话,就可能触发栈溢出,导致执行任意指令。 漏洞起因是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