FreeBSD Security Advisories
2004-Jul-01 01:19 UTC
FreeBSD Security Advisory FreeBSD-SA-04:13.linux
-----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-----