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)
147 lines
5.8 KiB
Text
147 lines
5.8 KiB
Text
-----BEGIN PGP SIGNED MESSAGE-----
|
|
Hash: SHA1
|
|
|
|
=============================================================================
|
|
FreeBSD-SA-04:17.procfs Security Advisory
|
|
The FreeBSD Project
|
|
|
|
Topic: Kernel memory disclosure in procfs and linprocfs
|
|
|
|
Category: core
|
|
Module: sys
|
|
Announced: 2004-12-01
|
|
Credits: Bryan Fulton, Ted Unangst, and the SWAT analysis tool
|
|
Coverity, Inc.
|
|
Affects: All FreeBSD releases
|
|
Corrected: 2004-12-01 21:33:35 UTC (RELENG_5, 5.3-STABLE)
|
|
2004-12-01 21:34:23 UTC (RELENG_5_3, 5.3-RELEASE-p2)
|
|
2004-12-01 21:34:43 UTC (RELENG_5_2, 5.2.1-RELEASE-p13)
|
|
2004-12-01 21:33:57 UTC (RELENG_4, 4.10-STABLE)
|
|
2004-12-01 21:35:10 UTC (RELENG_4_10, 4.10-RELEASE-p5)
|
|
2004-12-01 21:35:57 UTC (RELENG_4_8, 4.8-RELEASE-p27)
|
|
CVE Name: CAN-2004-1066
|
|
|
|
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
|
|
|
|
The process file system, procfs(5), implements a view of the system
|
|
process table inside the file system. It is normally mounted on
|
|
/proc, and is required for the complete operation of programs such as
|
|
ps(1) and w(1).
|
|
|
|
The Linux process file system, linprocfs(5), emulates a subset of
|
|
Linux's process file system and is required for the complete operation
|
|
of some Linux binaries.
|
|
|
|
II. Problem Description
|
|
|
|
The implementation of the /proc/curproc/cmdline pseudofile in the procfs(5)
|
|
file system on FreeBSD 4.x and 5.x, and of the /proc/self/cmdline
|
|
pseudofile in the linprocfs(5) file system on FreeBSD 5.x reads a process'
|
|
argument vector from the process address space. During this operation,
|
|
a pointer was dereferenced directly without the necessary validation
|
|
steps being performed.
|
|
|
|
III. Impact
|
|
|
|
A malicious local user could perform a local denial of service attack by
|
|
causing a system panic; or he could read parts of kernel memory. Such
|
|
memory might contain sensitive information, such as portions of the file
|
|
cache or terminal buffers. This information might be directly useful, or
|
|
it might be leveraged to obtain elevated privileges in some way. For
|
|
example, a terminal buffer might contain a user-entered password.
|
|
|
|
FreeBSD 4.x does not implement the /proc/self/cmdline pseudofile in
|
|
its linprocfs(5) file system, and is therefore only affected if the
|
|
procfs(5) file system is mounted.
|
|
|
|
In its default configuration, FreeBSD 5.x does not utilize procfs(5)
|
|
or linprocfs(5) and will therefore be unaffected by this vulnerability
|
|
unless the configuration is changed.
|
|
|
|
IV. Workaround
|
|
|
|
Unmount the procfs and linprocfs file systems if they are mounted.
|
|
Execute the following command as root:
|
|
|
|
umount -A -t procfs,linprocfs
|
|
|
|
Also, remove or comment out any lines in fstab(5) that reference
|
|
`procfs' or `linprocfs', so that they will not be re-mounted at next
|
|
reboot.
|
|
|
|
V. Solution
|
|
|
|
Perform one of the following:
|
|
|
|
1) Upgrade your vulnerable system to 4-STABLE or 5-STABLE, or to the
|
|
RELENG_5_3, RELENG_5_2, RELENG_4_10, 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.10,
|
|
5.2, and 5.3 systems.
|
|
|
|
a) Download the relevant patch from the location below, and verify the
|
|
detached PGP signature using your PGP utility.
|
|
|
|
[FreeBSD 4.x]
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:17/procfs4.patch
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:17/procfs4.patch.asc
|
|
|
|
[FreeBSD 5.x]
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:17/procfs5.patch
|
|
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-04:17/procfs5.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/miscfs/procfs/procfs_status.c 1.20.2.6
|
|
RELENG_4_10
|
|
src/UPDATING 1.73.2.90.2.6
|
|
src/sys/conf/newvers.sh 1.44.2.34.2.7
|
|
src/sys/miscfs/procfs/procfs_status.c 1.20.2.5.4.1
|
|
RELENG_4_8
|
|
src/UPDATING 1.73.2.80.2.30
|
|
src/sys/conf/newvers.sh 1.44.2.29.2.28
|
|
src/sys/miscfs/procfs/procfs_status.c 1.20.2.4.8.2
|
|
RELENG_5
|
|
src/sys/compat/linprocfs/linprocfs.c 1.84.2.1
|
|
src/sys/fs/procfs/procfs_status.c 1.52.2.1
|
|
RELENG_5_3
|
|
src/UPDATING 1.342.2.13.2.5
|
|
src/sys/compat/linprocfs/linprocfs.c 1.84.4.1
|
|
src/sys/conf/newvers.sh 1.62.2.15.2.7
|
|
src/sys/fs/procfs/procfs_status.c 1.52.4.1
|
|
RELENG_5_2
|
|
src/UPDATING 1.282.2.21
|
|
src/sys/compat/linprocfs/linprocfs.c 1.78.2.1
|
|
src/sys/conf/newvers.sh 1.56.2.20
|
|
src/sys/fs/procfs/procfs_status.c 1.49.2.1
|
|
- -------------------------------------------------------------------------
|
|
-----BEGIN PGP SIGNATURE-----
|
|
|
|
iD8DBQFBrlpUFdaIBMps37IRAkqSAJ9bJt5VXd0g+OpZq76O84LGEtw3HgCfayws
|
|
iuc0B5+J0K67LvDIUA6+wck=
|
|
=2l7f
|
|
-----END PGP SIGNATURE-----
|