首页
社区
课程
招聘
[转帖]MFC库文档标题更新栈溢出漏洞
发表于: 2010-7-13 02:14 4602

[转帖]MFC库文档标题更新栈溢出漏洞

2010-7-13 02:14
4602
刚才从IDC发给我的漏洞列表中,发现如下这个漏洞可不简单,贴出来给大家看看。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Microsoft Windows MFC库文档标题更新栈溢出漏洞
SEBUG-ID:19920
SEBUG-Appdir:Microsoft Windows
Published:2010-07-05
Vulnerable:
 
Microsoft Windows XP SP3
Microsoft Windows XP SP2
Microsoft Windows 2000 SP4
 
Discription:
 
BUGTRAQ  ID: 41333
 
Microsoft Windows是微软发布的非常流行的操作系统。
 
Windows mfc42.dll库中CFrameWnd类的UpdateFrameTitleForDocument()函数在更新文档标题时存在栈溢出漏洞,用户受骗打开了恶意的档案文件并向该函数传送了超长的标题字符串参数就可以触发这个溢出,导致执行任意代码。
 
<*References
 
    http://secunia.com/advisories/40298/
 
*>
SEBUG Solution:
 
厂商补丁:
 
Microsoft
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
 
http://www.microsoft.com/technet/security/
 
// sebug.net [2010-07-07]

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (3)
雪    币: 224
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
大虾 能说说这个漏洞 厉害不
UpdateFrameTitleForDocument()函数的参数 怎么利用
2010-7-16 21:41
0
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
public:
        void UpdateFrameTitleForDocument(LPCTSTR lpszDocName);
2010-7-22 09:47
0
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
void CFrameWnd::UpdateFrameTitleForDocument(LPCTSTR lpszDocName)
{
    CString WindowText;
 
    if (GetStyle() & FWS_PREFIXTITLE)
    {
        // get name of currently active view
        if (lpszDocName != NULL)
        {
            WindowText += lpszDocName;
 
            // add current window # if needed
            if (m_nWindow > 0)
            {
                TCHAR szText[32];
                 
                // :%d will produce a maximum of 11 TCHARs
                wsprintf(szText, _T(":%d"), m_nWindow);
                WindowText += szText;
            }
            WindowText += _T(" - ");
        }
        WindowText += m_strTitle;
    }
    else
    {
        // get name of currently active view
        WindowText += m_strTitle;
        if (lpszDocName != NULL)
        {
            WindowText += _T(" - ");
            WindowText += lpszDocName;
 
            // add current window # if needed
            if (m_nWindow > 0)
            {
                TCHAR szText[32];
                 
                // :%d will produce a maximum of 11 TCHARs
                wsprintf(szText, _T(":%d"), m_nWindow);
                WindowText += szText;
            }
        }
    }
 
    // set title if changed, but don't remove completely
    // Note: will be excessive for MDI Frame with maximized child
    AfxSetWindowText(m_hWnd, (LPCTSTR) WindowText);
}


上面是mfc7.1中的代码
仔细看了下 wsprintf可能是会造成危害,可是szText已经有32个字节了
这个问题只存在于mfc4.2了吧
2010-7-22 09:52
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册