Lucene search
K

FreeBSD-SA-99.05.fts.txt

🗓️ 28 Sep 1999 00:00:00Reported by Packet StormType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 24 Views

FreeBSD Security Advisory outlines fts library buffer overflow vulnerability affecting root access.

Code
`----- Forwarded message from FreeBSD Security Officer <[email protected]> -----  
  
Delivered-To: [email protected]  
Date: Wed, 15 Sep 1999 23:25:21 -0600 (MDT)  
From: FreeBSD Security Officer <[email protected]>  
Subject: FreeBSD Security Advisory: FreeBSD-SA-99:05.fts  
Reply-To: [email protected]  
X-Loop: FreeBSD.org  
Precedence: bulk  
To: undisclosed-recipients: ;  
  
-----BEGIN PGP SIGNED MESSAGE-----  
  
=============================================================================  
FreeBSD-SA-99:05 Security Advisory  
FreeBSD, Inc.  
  
Topic: fts library routine vulnerability  
  
Category: core  
Module: kernel  
Announced: 1999-09-15  
Affects: FreeBSD 3.2 (and earlier)  
FreeBSD-current before the correction date.  
FreeBSD 3.2-stable before the correction date.  
Corrected: FreeBSD-3.3 RELEASE  
FreeBSD-current as of 1999/08/26  
FreeBSD-3.2-stable as of 1999/08/26  
The FreeBSD-3.3-RC series of releases are not affected.  
FreeBSD only: NO  
  
Patches: ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-99:05/  
  
I. Background  
  
The fts library routines provide a convenient way for a program to  
walk a hierarchy of files.  
  
II. Problem Description  
  
The fts library functions had a buffer overflow in them where which  
would lead to a core dump when periodic ran the security checking  
scripts (or other scripts which traverse trees that can be controlled  
by users). periodic(3) should limit core size to zero to disable core  
dumps while it is executing commands, but does not do so. In  
addition, the kernel should not follow symbolic links.  
  
All three of these problems caused a situation where it was possible  
for an attacker could create or overwrite an arbitrary file on the  
system with a moderate degree of controll of its contents to cause a  
problem.  
  
III. Impact  
  
Local users could gain root access.  
  
IV. Workaround  
  
One can workaround this problem by preventing core dumps for periodic.  
This solution is less than completely satisfying, since it only plugs  
the known exploit hole. None the less, this may provide a short term  
stopgap solution until a new kernel and userland can be installed.  
  
# mv /usr/sbin/periodic /usr/sbin/periodic.bin  
# cat > /usr/sbin/periodic  
#!/bin/sh  
ulimit -c 0  
/usr/sbin/periodic.bin $*  
^D  
# chmod 555 /usr/sbin/periodic  
  
V. Solution  
  
Apply the following patches to libc and do a make world. Please also  
see the companion advisory FreeBSD-SA-99:04.core.asc in the advisories  
directory of our ftp site for details on the kernel portions of this  
fix.  
  
Index: lib/libc/gen/fts.c  
===================================================================  
RCS file: /home/imp/FreeBSD/CVS/src/lib/libc/gen/fts.c,v  
retrieving revision 1.10  
retrieving revision 1.11  
diff -u -r1.10 -r1.11  
--- fts.c 1999/08/15 19:21:29 1.10  
+++ fts.c 1999/09/02 07:45:07 1.11  
@@ -963,6 +963,24 @@  
return (sp->fts_path == NULL);  
}  
  
+static void  
+ADJUST(p, addr)  
+ FTSENT *p;  
+ void *addr;  
+{  
+ if ((p)->fts_accpath >= (p)->fts_path &&   
+ (p)->fts_accpath < (p)->fts_path + (p)->fts_pathlen) {  
+ if (p->fts_accpath != p->fts_path)  
+ errx(1, "fts ADJUST: accpath %p path %p",  
+ p->fts_accpath, p->fts_path);  
+ if (p->fts_level != 0)  
+ errx(1, "fts ADJUST: level %d not 0", p->fts_level);  
+ (p)->fts_accpath =   
+ (char *)addr + ((p)->fts_accpath - (p)->fts_path);   
+ }  
+ (p)->fts_path = addr;   
+}  
+  
/*  
* When the path is realloc'd, have to fix all of the pointers in structures  
* already returned.  
@@ -974,18 +992,18 @@  
{  
FTSENT *p;  
  
-#define ADJUST(p) { \  
- (p)->fts_accpath = \  
- (char *)addr + ((p)->fts_accpath - (p)->fts_path); \  
+#define ADJUST1(p) { \  
+ if ((p)->fts_accpath == (p)->fts_path) \  
+ (p)->fts_accpath = (addr); \  
(p)->fts_path = addr; \  
}  
/* Adjust the current set of children. */  
for (p = sp->fts_child; p; p = p->fts_link)  
- ADJUST(p);  
+ ADJUST(p, addr);  
  
/* Adjust the rest of the tree. */  
for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) {  
- ADJUST(p);  
+ ADJUST(p, addr);  
p = p->fts_link ? p->fts_link : p->fts_parent;  
}  
}  
  
  
=============================================================================  
FreeBSD, Inc.  
  
Web Site: http://www.freebsd.org/  
Confidential contacts: [email protected]  
Security notifications: [email protected]  
Security public discussion: [email protected]  
PGP Key: ftp://ftp.freebsd.org/pub/FreeBSD/CERT/public_key.asc  
  
Notice: Any patches in this document may not apply cleanly due to  
modifications caused by digital signature or mailer software.  
Please reference the URL listed at the top of this document  
for original copies of all patches if necessary.  
=============================================================================  
  
-----BEGIN PGP SIGNATURE-----  
Version: 2.6.3ia  
Charset: noconv  
Comment: Processed by Mailcrypt 3.4, an Emacs/PGP interface  
  
iQCVAwUBN+B9rFUuHi5z0oilAQHGYgP+IwrmdUBtCw1r8J/lt/wBrxH5wug70K1V  
t2graun2wIWvtkh+kmwKJP4tonzlxi/YhyqqATh4pFIZb5CUEtCR2/gcpHPwB4NX  
oNuIGGBtKftrrFnPf9aArFu/XFjrxyUPetYoXtfgGc5y6VlI6mupDnwt9oj34EeY  
VIb92qSfH+c=  
=tPng  
-----END PGP SIGNATURE-----  
  
  
This is the moderated mailing list freebsd-announce.  
The list contains announcements of new FreeBSD capabilities,  
important events and project milestones.  
See also the FreeBSD Web pages at http://www.freebsd.org  
  
  
To Unsubscribe: send mail to [email protected]  
with "unsubscribe freebsd-announce" in the body of the message  
  
----- End forwarded message -----  
  
--   
Patrick Oonk - PO1-6BONE - [email protected] - www.pine.nl/~patrick  
Pine Internet B.V. PGP key ID BE7497F1   
Tel: +31-70-3111010 - Fax: +31-70-3111011 - http://www.pine.nl/  
-- Pine Security Digest - http://security.pine.nl/ (Dutch) ----  
Excuse of the day: The computer fletely, mouse and all.  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation