百度空间 | 百度首页 
 
查看文章
 
a typo == a vulnerability 也谈这两天这个DirectShow MPEG2 0day
2009-07-06 21:41
一个typo,估计是MS的程序员看程序的时候打扫了下键盘,多变了一个&出来 ,导致了一个严重的安全问题。
不过这样的代码应该自己简单测试下就可以测试出来的,难道这块代码没怎么做测试就放了出来?!


ReadFromStream(LPSTREAM ppvData)
{
        SafeArrayCreate(xx,x, user_controlled_len);
        SafeArrayAccessData(xx,& ppvData);
        ReadFile(x,& ppvData, user_controlled_len);// 正确的写法应该是 ReadFile(x, ppvData, user_controlled_len)

}


.text:59F0D732                 lea     eax, [ebp+ppvData]
.text:59F0D735                 push    eax             ; ppvData
.text:59F0D736                 push    ebx             ; psa
.text:59F0D737                 call    ds:__imp__SafeArrayAccessData@8 ; SafeArrayAccessData(x,x)
.text:59F0D73D                 test    eax, eax
.text:59F0D73F                 jl      short loc_59F0D7BD
.text:59F0D741                 mov     eax, [edi]
.text:59F0D743                 push    0
.text:59F0D745                 push    [ebp+dwSize]    ; come from file
.text:59F0D748                 lea     ecx, [ebp+ppvData]
.text:59F0D74B                 push    ecx
.text:59F0D74C                 push    edi
.text:59F0D74D                 call    dword ptr [eax+0Ch] ; mshtml!FatStream::Read stack buffer overflow here
.text:59F0D750                 push    ebx             ; psa

设置killbit保护吧
0955AC62-BF2E-4CBA-A2B9-A63F772D46CF

类别:技术讨论 | 添加到搜藏 | 浏览() | 评论 (4)
 
最近读者:
 
网友评论:
1
2009-07-07 11:07 | 回复
貌似光KILL这一个不够
 
2
2009-07-07 11:25 | 回复
奇怪,指针当缓冲区本身写,只要有点测试这种问题应该很容易就暴露出来的,40字节就能覆盖到SEH。
 
3
2009-07-08 15:39 | 回复
那就改这汇编了:lea     ecx, [ebp+ppvData]
 
4
2009-07-12 16:50 | 回复
回复teamtopkarl:正确的应该是mov eax,[ebp+ppvData].


 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu