[UNIX] zoo Stack Overflow



The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion

The SecuriTeam alerts list - Free, Accurate, Independent.

Get your security news from a reliable source.
http://www.securiteam.com/mailinglist.html

- - - - - - - - -



zoo Stack Overflow
------------------------------------------------------------------------


SUMMARY

zoo is a file archiving utility for maintaining collections of files. It
uses Lempel-Ziv compression to provide space savings in the range of 20 to
80 percent depending on the type of data. Written by Rahul Dhesi, and
posted to the USENET newsgroup comp.sources.misc.

A specially crafted archive may trigger a stack overflow in zoo, and allow
an attacker to seize control of the program.

DETAILS

fullpath()/misc.c accepts a pointer to a directory entry and returns the
combined directory name and filename. fullpath() calls the function
combine()/misc.c, and assume that the length of the string returned is
never
longer than 256 bytes. In fact, the string returned can be made a little
longer than 512 bytes.

If the string is in fact longer than 256 bytes, a static variable can be
overflowed in the function fullpath()/misc.c . This string is later used
in a strcpy() on a destination buffer of 256 bytes on the stack.

It is then easy to overwrite EIP and take control of the program.

Patch:
diff -u -r -r zoo-2.10.old/misc.c zoo-2.10.orig/misc.c
--- zoo-2.10.old/misc.c 1991-07-05 12:00:00.000000000 -0400
+++ zoo-2.10.orig/misc.c 2006-01-29 17:20:35.000000000 -0500
@@ -135,11 +135,16 @@
char *fullpath (direntry)
struct direntry *direntry;
{
- static char result[PATHSIZE];
+ static char result[PATHSIZE+PATHSIZE+12]; // Room for enough space
combine (result,
direntry->dirlen != 0 ?
direntry->dirname : "",
(direntry->namlen != 0) ? direntry->lfname
:
direntry->fname
);
+
+ if (strlen (result) >= PATHSIZE) {
+ prterror ('f', "Combined dirname and filename too
long\n");
+ }
+
return (result);
}


ADDITIONAL INFORMATION

The information has been provided by Jean-S bastien Guay-Leroux.
The original article can be found at:
<http://www.guay-leroux.com/projects/zoo-advisory.txt>
http://www.guay-leroux.com/projects/zoo-advisory.txt



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


This bulletin is sent to members of the SecuriTeam mailing list.
To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@xxxxxxxxxxxxxx
In order to subscribe to the mailing list, simply forward this email to: list-subscribe@xxxxxxxxxxxxxx


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

DISCLAIMER:
The information in this bulletin is provided "AS IS" without warranty of any kind.
In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.



Relevant Pages