vulnerability researcher;vulnerability discoverer;exploit writer;virus writer;fisher;attacker; which one are u belong to?
查看文章 |
还以为quartz.dll增加了一个是否解析quicktime文件的接口呢
2009-07-17 22:16
quartz.dll解析quicktime文件的代码质量实在太差了. 造成至少如下漏洞. CVE-2009-1537 CVE-2009-1538 CVE-2009-1539 这次补丁,代码质量明显提高不少,估计那两个directshow 0day是玩不转了. 简单看了下修补后的代码,一开始还以为quartz.dll设置了一个是否解析quicktime文件的接口呢 HKEY_CURRENT_USER, Software\\Microsoft\\Multimedia\\DirectShow SkipQTParse 乍看这个名字还真那么回事呢,还觉得不错,咱们需要的就是这样的接口. 后来分析quartz.dll才发现不是这么这么回事. 该接口是用来控制代码是否执行VerifyQTFile函数(该函数是用来校验各atom size的). 程序员定义这个SkipQTParse按照字面的理解应该是跳过quicktime parse代码. 结果搞成了用来控制代码是否执行VerifyQTFile函数了. 是否也算一个bug? .text:7D05C784 mov [ebp+var_50], eax .text:7D05C787 lea eax, [ebp+hKey] .text:7D05C78A push eax ; phkResult .text:7D05C78B push 20019h ; samDesired .text:7D05C790 push esi ; ulOptions .text:7D05C791 push offset aSoftwareMic_11 ; "Software\\Microsoft\\Multimedia\\DirectSho"... .text:7D05C796 push 80000001h ; hKey .text:7D05C79B mov dword ptr [ebp+Data], esi .text:7D05C79E mov [ebp+hKey], esi .text:7D05C7A1 mov [ebp+cbData], 4 .text:7D05C7A8 call ds:__imp__RegOpenKeyExW@20 ; RegOpenKeyExW(x,x,x,x,x) .text:7D05C7AE test eax, eax .text:7D05C7B0 jnz short loc_7D05C7D3 .text:7D05C7B2 lea eax, [ebp+cbData] .text:7D05C7B5 push eax ; lpcbData .text:7D05C7B6 lea eax, [ebp+Data] .text:7D05C7B9 push eax ; lpData .text:7D05C7BA push esi ; lpType .text:7D05C7BB push esi ; lpReserved .text:7D05C7BC push offset aSkipqtparse ; "SkipQTParse" .text:7D05C7C1 push [ebp+hKey] ; hKey .text:7D05C7C4 call ds:__imp__RegQueryValueExW@24 ; RegQueryValueExW(x,x,x,x,x,x) .text:7D05C7CA push [ebp+hKey] ; hKey .text:7D05C7CD call ds:__imp__RegCloseKey@4 ; RegCloseKey(x) .text:7D05C7D3 .text:7D05C7D3 loc_7D05C7D3: ; CODE XREF: CQT::CreateOutputPins(void)+145 j .text:7D05C7D3 cmp dword ptr [ebp+Data], esi .text:7D05C7D6 jnz short loc_7D05C7EA .text:7D05C7D8 push esi .text:7D05C7D9 push edi .text:7D05C7DA push [ebp+var_30] .text:7D05C7DD call ?VerifyQTFile@@YGHPAEKK@Z ; VerifyQTFile(uchar *,ulong,ulong) .text:7D05C7E2 test eax, eax .text:7D05C7E4 jz loc_7D05D10B .text:7D05C7EA .text:7D05C7EA loc_7D05C7EA: ; CODE XREF: CQT::CreateOutputPins(void)+16B j .text:7D05C7EA push 'dhvm' .text:7D05C7EF push [ebp+var_50] .text:7D05C7F2 lea eax, [ebp+var_3C] .text:7D05C7F5 push eax .text:7D05C7F6 lea eax, [ebp+var_38] .text:7D05C7F9 push eax .text:7D05C7FA lea eax, [ebp+var_30] .text:7D05C7FD push eax .text:7D05C7FE mov ecx, ebx .text:7D05C800 call ?QTDescend@CQT@@AAEHAAPAEAAK0PAEK@Z ; CQT::QTDescend(uchar * &,ulong &,uchar * &,uchar *,ulong) .text:7D05C805 test eax, eax |
最近读者:
