3571e53040
patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
164 lines
5.7 KiB
Text
164 lines
5.7 KiB
Text
-----BEGIN PGP SIGNED MESSAGE-----
|
|
Hash: SHA1
|
|
|
|
=============================================================================
|
|
FreeBSD-SA-04:13.linux Security Advisory
|
|
The FreeBSD Project
|
|
|
|
Topic: Linux binary compatibility mode input validation error
|
|
|
|
Category: core
|
|
Module: kernel
|
|
Announced: 2004-06-30
|
|
Credits: Tim Robbins
|
|
Affects: All 4.x and 5.x releases
|
|
Corrected: 2004-06-30 17:31:44 UTC (RELENG_4)
|
|
2004-06-30 17:34:38 UTC (RELENG_5_2, 5.2.1-RELEASE-p9)
|
|
2004-06-30 17:33:59 UTC (RELENG_4_10, 4.10-RELEASE-p2)
|
|
2004-06-30 17:33:24 UTC (RELENG_4_9, 4.9-RELEASE-p11)
|
|
2004-06-30 17:32:24 UTC (RELENG_4_8, 4.8-RELEASE-p24)
|
|
CVE Name: CAN-2004-0602
|
|
FreeBSD only: YES
|
|
|
|
For general information regarding FreeBSD Security Advisories,
|
|
including descriptions of the fields above, security branches, and the
|
|
following sections, please visit
|
|
<URL:http://www.freebsd.org/security/>.
|
|
|
|
I. Background
|
|
|
|
FreeBSD is binary-compatible with the Linux operating system through a
|
|
loadable kernel module/optional kernel component.
|
|
|
|
II. Problem Description
|
|
|
|
A programming error in the handling of some Linux system calls may
|
|
result in memory locations being accessed without proper validation.
|
|
|
|
III. Impact
|
|
|
|
It may be possible for a local attacker to read and/or overwrite
|
|
portions of kernel memory, resulting in disclosure of sensitive
|
|
information or potential privilege escalation. A local attacker can
|
|
cause a system panic.
|
|
|
|
IV. Workaround
|
|
|
|
The only known workaround is to disable the linux binary compatibility
|
|
layer and prevent it from being (re)loaded. Note that step (a) must be
|
|
performed before step (b).
|
|
|
|
a) To prevent the linux compatibility layer being (re)loaded, remove the
|
|
/boot/kernel/linux.ko file (on FreeBSD 5.x) or the /modules/linux.ko
|
|
file (on FreeBSD 4.x), and add or change the following line in
|
|
/etc/rc.conf:
|
|
|
|
linux_enable="NO" # Linux binary compatibility loaded at startup (or NO).
|
|
|
|
Add or change the following lines in /boot/loader.conf:
|
|
|
|
linux_load="NO" # Linux emulation
|
|
linprocfs_load="NO"
|
|
|
|
In addition, remove any linprocfs file system listed in /etc/fstab.
|
|
|
|
b) To disable the linux binary compatibility layer, first determine if
|
|
it is loaded:
|
|
|
|
# kldstat -v | grep linuxelf
|
|
|
|
If no output is produced, the linux compatibility layer is not loaded;
|
|
stop here.
|
|
|
|
If the linux compatibility layer is loaded, determine if it is compiled
|
|
into the kernel or loaded as a module:
|
|
|
|
# kldstat | grep linux.ko
|
|
|
|
If no output is produced, the linux compatibility layer is compiled
|
|
into the kernel. Remove the line
|
|
|
|
options COMPAT_LINUX
|
|
|
|
from your kernel configuration file and recompile the kernel as
|
|
described in
|
|
<URL:http://www.freebsd.org/handbook/kernelconfig.html> and reboot the
|
|
system.
|
|
|
|
If output is produced, then the linux compatibility layer is loaded as
|
|
a kernel module. If the module is not currently being used (by a
|
|
process running under linux emulation, for example) then it may be
|
|
possible to unload it:
|
|
|
|
# kldunload linux
|
|
# kldstat | grep linux.ko
|
|
|
|
If this does not successfully unload the module, reboot the system.
|
|
|
|
V. Solution
|
|
|
|
Perform one of the following:
|
|
|
|
1) Upgrade your vulnerable system to 4-STABLE; or to the RELENG_5_2,
|
|
RELENG_4_10, RELENG_4_9, or RELENG_4_8 security branch dated after the
|
|
correction date.
|
|
|
|
2) To patch your present system:
|
|
|
|
The following patches have been verified to apply to FreeBSD 4.8, 4.9,
|
|
4.10 and 5.2 systems.
|
|
|
|
a) Download the relevant patch from the location below, and verify the
|
|
detached PGP signature using your PGP utility.
|
|
|
|
[FreeBSD 5.2]
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:13/linux5.patch
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:13/linux5.patch.asc
|
|
|
|
[FreeBSD 4.8, 4.9, 4.10]
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:13/linux4.patch
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:13/linux4.patch.asc
|
|
|
|
b) Apply the patch.
|
|
|
|
# cd /usr/src
|
|
# patch < /path/to/patch
|
|
|
|
c) Recompile your kernel as described in
|
|
<URL:http://www.freebsd.org/handbook/kernelconfig.html> and reboot the
|
|
system.
|
|
|
|
VI. Correction details
|
|
|
|
The following list contains the revision numbers of each file that was
|
|
corrected in FreeBSD.
|
|
|
|
Branch Revision
|
|
Path
|
|
- -------------------------------------------------------------------------
|
|
RELENG_4
|
|
src/sys/compat/linux/linux_ioctl.c 1.55.2.13
|
|
RELENG_5_2
|
|
src/UPDATING 1.282.2.17
|
|
src/sys/compat/linux/linux_ioctl.c 1.112.2.1
|
|
src/sys/conf/newvers.sh 1.56.2.16
|
|
RELENG_4_10
|
|
src/UPDATING 1.73.2.90.2.3
|
|
src/sys/compat/linux/linux_ioctl.c 1.55.2.12.4.1
|
|
src/sys/conf/newvers.sh 1.44.2.34.2.4
|
|
RELENG_4_9
|
|
src/UPDATING 1.73.2.89.2.12
|
|
src/sys/compat/linux/linux_ioctl.c 1.55.2.12.2.1
|
|
src/sys/conf/newvers.sh 1.44.2.32.2.12
|
|
RELENG_4_8
|
|
src/UPDATING 1.73.2.80.2.27
|
|
src/sys/compat/linux/linux_ioctl.c 1.55.2.10.6.1
|
|
src/sys/conf/newvers.sh 1.44.2.29.2.25
|
|
- -------------------------------------------------------------------------
|
|
-----BEGIN PGP SIGNATURE-----
|
|
Version: GnuPG v1.2.4 (FreeBSD)
|
|
|
|
iD8DBQFA48FqFdaIBMps37IRArpeAKCP1G1bFmYiD0v3Qdg8pq5zkV7JywCcDUHn
|
|
dz5yJTOovQSmIaLVD/Ei8Xw=
|
|
=SVrJ
|
|
-----END PGP SIGNATURE-----
|