FreeBSD Security Vulnerabilities
Privacy and Legal Notice
INFORMATION BULLETIN
G-24: FreeBSD Security Vulnerabilities
May 23, 1996 14:00 GMT
PROBLEM: Three vulnerabilities have been identified in the FreeBSD
operating system: 1) vfsload Library, 2) Union File System
Code, and 3) Manual Page Reader.
PLATFORM: FreeBSD 2.0, 2.0.5, 2.1, 2.1-stable, and 2.2-current
DAMAGE: The first vulnerability allows local users to gain unauthorized
permissions. The second vulnerability allows local users to
compromise system stability. The third vulnerability allows
local users to gain access privileges of the "man" user.
SOLUTION: Install the proper patches and/or use the workarounds provided
below.
VULNERABILITY Knowledge of how to exploit these vulnerabilities are becoming
ASSESSMENT: widely known.
CIAC has obtained information from FreeBSD pertaining to three security
vulnerabilities. The three vulnerabilities are identified in this bulletin
in the following matter: 1) vfsload Library, 2) Union File System Code,
and 3) Manual Page Reader. The FreeBSD urges you to act on this information
as soon as possible. CIAC recommends that you install the proper patches
and/or use the workarounds described below.
[ Start of FreeBSD Bulletins ]
1. vfsload Library Vulnerability
=============================================================================
FreeBSD-SA-96:09 Security Advisory
FreeBSD, Inc.
Topic: unauthorized access via mount_union / mount_msdos (vfsload)
Category: core
Module: libc
Announced: 1996-05-17
Affects: FreeBSD 2.0, 2.0.5, 2.1, 2.1-stable, and 2.2-current
Corrected: 1996-05-17 2.1-stable and 2.2-current sources
Source: FreeBSD native bug
FreeBSD only: yes
Patches: ftp://freebsd.org/pub/CERT/patches/SA-96:09/
=============================================================================
I. Background
A bug was found in the vfsload(3) library call that affects all
versions of FreeBSD from 2.0 through 2.2-CURRENT that caused a
system vulnerability. This problem is present in all source
code and binary distributions of FreeBSD version 2.x released
before 1996-05-18.
The FreeBSD project is aware of active exploits of this
vulnerability.
All FreeBSD users are encouraged to use the workaround provided
until they can update their operating system to a version with
this vulnerability fixed.
II. Problem Description
The mount_union and mount_msdos programs invoke another system
utility in an insecure fashion while setuid root.
III. Impact
The problem could allow local users to gain unauthorized
permissions.
This vulnerability can only be exploited by users with a valid
account on the local system.
IV. Solution(s)
Update operating system sources and binaries to FreeBSD 2.1-stable
or FreeBSD 2.2-current as distributed later than 1996-05-18 or
if you are currently running 2.1 or later, you may apply the
solution patches available at the URL listed at the top of this
message.
The OS updates fix the actual problem in the vfsload(3) library
routine. Once the vfsload() library routine is fixed, the
workaround listed below is not necessary to solve this problem.
However, an additional stability problem has come to light
(ref. FreeBSD SA-96:10) so the FreeBSD project suggests
using both the setuid workaround and the solution for best results.
V. Workaround
This vulnerability can quickly and easily be limited by removing
the setuid permission bit from the mount_union and mount_msdos
program. This workaround will work for all versions of FreeBSD
affected by this problem.
As root, execute the command:
% chmod u-s /sbin/mount_union /sbin/mount_msdos
then verify that the setuid permissions of the files have been
removed. The permissions array should read "-r-xr-xr-x" as
shown here:
% ls -l /sbin/mount_union /sbin/mount_msdos
-r-xr-xr-x 1 root bin 151552 Apr 26 04:41 /sbin/mount_msdos
-r-xr-xr-x 1 root bin 53248 Apr 26 04:40 /sbin/mount_union
In addition to changing the permissions on the executable files,
if you have the source code installed, we suggest patching the
sources so that mount_union will not be installed with the
setuid bit set:
*** /usr/src/sbin/mount_union/Makefile Sun Nov 20 14:47:52 1994
- --- /usr/src/sbin/mount_union/Makefile Fri May 17 10:36:09 1996
***************
*** 8,14 ****
CFLAGS+= -I${.CURDIR}/../../sys -I${MOUNT}
.PATH: ${MOUNT}
- - BINOWN= root
- - BINMODE=4555
- -
.include
- --- 8,11 ----
*** /usr/src/sbin/i386/mount_msdos/Makefile Sun Dec 4 00:01:24 1994
- --- /usr/src/sbin/i386/mount_msdos/Makefile Fri May 17 11:31:57 1996
***************
*** 6,14 ****
SRCS= mount_msdos.c getmntopts.c
MAN8= mount_msdos.8
- - BINOWN= root
- - BINMODE= 4555
- -
MOUNT= ${.CURDIR}/../../mount
CFLAGS+= -I${MOUNT}
.PATH: ${MOUNT}
- --- 6,11 ----
=============================================================================
2. Union File System Code Vulnerability
=============================================================================
FreeBSD-SA-96:10 Security Advisory
FreeBSD, Inc.
Topic: system stability compromise via mount_union program
Category: core
Module: unionfs
Announced: 1996-05-17
Affects: FreeBSD 2.0, 2.0.5, 2.1, 2.1-stable, and 2.2-current
Corrected: (workaround) 2.1-stable and 2.2-current as of 1996-05-17
Source: 4.4BSD (lite)
FreeBSD only: no
Patches: ftp://freebsd.org/pub/CERT/patches/SA-96:10/
=============================================================================
I. Background
A bug was found in the union file system code which can allow
an unprivileged local user to compromise system stability.
This problem is present in all source code and binary
distributions of FreeBSD version 2.x released before 1996-05-18.
All FreeBSD users are encouraged to use the workaround provided
until the FreeBSD Project distributes a full solution.
II. Problem Description
The union filesystem code had problems with certain mount ordering
problems. By executing a certain sequence of mount_union commands,
an unprivileged local user may cause a system reload.
NOTE: This is a different problem than the one discussed in
FreeBSD SA-96:09. The workaround for this vulnerability is
similar to the one discussed in 96:09, but the proper solution
for the unauthorized access problem in 96:09 does not address
this vulnerability.
III. Impact
The problem could allow local users to compromise system stability.
This vulnerability can only be exploited by users with a valid
account on the local system.
IV. Solution(s)
The FreeBSD project is currently developing a solution to this
problem, however the proper solution will not be available until
a future FreeBSD release. We do not anticipate releasing patches
for previous versions of FreeBSD due to the extensive nature of this
fix. This security advisory will be updated as new information is
made available.
V. Workaround
This vulnerability can quickly and easily be limited by removing
the setuid permission bit from the mount_union program. This
workaround will work for all versions of FreeBSD affected by
this problem.
As root, execute the command:
% chmod u-s /sbin/mount_union
then verify that the setuid permissions of the files have been
removed. The permissions array should read "-r-xr-xr-x" as
shown here:
% ls -l /sbin/mount_union
-r-xr-xr-x 1 root bin 53248 Apr 26 04:40 /sbin/mount_union
In addition to changing the permissions on the executable files,
if you have the source code installed, we suggest patching the
sources so that mount_union will not be installed with the
setuid bit set:
*** /usr/src/sbin/mount_union/Makefile Sun Nov 20 14:47:52 1994
- --- /usr/src/sbin/mount_union/Makefile Fri May 17 10:36:09 1996
***************
*** 8,14 ****
CFLAGS+= -I${.CURDIR}/../../sys -I${MOUNT}
.PATH: ${MOUNT}
- - BINOWN= root
- - BINMODE=4555
- -
.include
- --- 8,11 ----
=============================================================================
3. Manual Page Reader Vulnerability
=============================================================================
FreeBSD-SA-96:11 Security Advisory
Revised: Wed May 22 00:11:46 PDT 1996 FreeBSD, Inc.
Topic: security compromise from man page utility
Category: core
Module: man
Announced: 1996-05-21
Affects: FreeBSD 2.0, 2.0.5, 2.1, 2.1-stable, and 2.2-current
Corrected: 2.1-stable and 2.2-current as of 1996-05-21
FreeBSD only: yes
Patches: ftp://freebsd.org/pub/CERT/patches/SA-96:11/
=============================================================================
I. Background
FreeBSD replaced the standard BSD manual page reader with
code developed by a third party to support compressed manual
pages. A bug was found in the manual page reader which can
allow an unprivileged local user to compromise system security
in a limited fashion. This problem is present in all source
code and binary distributions of FreeBSD version 2.x released
before 1996-05-21.
II. Problem Description
The man program is setuid to the "man" user. By executing a
particular sequence of commands, an unprivileged local user
may gain the access privileges of the "man" user. However,
root access could be obtained with further work.
III. Impact
The "man" user has no particular special privileges, it is
the owner of the /usr/share/man/cat[0-9] directory hierarchy.
Unformatted system manual pages are owned by the "bin" user.
However, further exploits once "man" is obtained could
possibly allow a local user to obtain unlimited access via
a trojan horse.
This vulnerability can only be exploited by users with a valid
account on the local system.
IV. Workaround
One may simply disable the setuid bit on the /usr/bin/man file.
This will disable caching of formatted manual pages, no system
functionality will be lost. This workaround will suffice for
all versions of FreeBSD affected by this problem.
As root, execute the command:
# chmod u-s /usr/bin/man
then verify that the setuid permissions of the files have been
removed. The permissions array should read "-r-xr-xr-x" as
shown here:
# ls -l /usr/bin/man
-r-xr-xr-x 1 man bin 28672 May 19 20:38 /usr/bin/man
We also suggest applying the following patch to the source
distribution so that the man program will not be installed
setuid man should you rebuild from sources:
*** /usr/src/gnu/usr.bin/man/man/Makefile Sun Feb 25 13:39:52 1996
--- /usr/src/gnu/usr.bin/man/man/Makefile Wed May 22 00:13:05 1996
***************
*** 1,7 ****
PROG= man
SRCS= man.c manpath.c glob.c
- BINMODE=4555
- BINOWN= man
.if exists(${.CURDIR}/../lib/obj)
LDADD= -L${.CURDIR}/../lib/obj -lman
--- 1,5 ----
V. Solution
The FreeBSD team is in the process of rewriting portions of
the manual program to avoid this and similar vulnerabilities.
This security advisory will be updated when a complete solution
is available.
=============================================================================
FreeBSD, Inc.
Web Site: http://www.freebsd.org/
Confidential contacts: security-officer@freebsd.org
PGP Key: ftp://freebsd.org/pub/CERT/public_key.asc
Security notifications: security-notifications@freebsd.org
Security public discussion: security@freebsd.org
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.
=============================================================================
[ End of FreeBSD Bulletins ]
CIAC wishes to acknowledge the contributions of FreeBSD, Inc. for the
information contained in this bulletin.
DOE-CIRC can be contacted at:
Voice: +1 866-941-2472 (7 x 24)
E-mail: doecirc@doecirc.energy.gov
World Wide Web: http://www.doecirc.energy.gov/