Operating System:

Published:

02 December 2004

Protect yourself against future threats.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

===========================================================================
             AUSCERT External Security Bulletin Redistribution

    ESB-2004.0750 -- FreeBSD Security Advisory FreeBSD-SA-04:17.procfs
             Kernel memory disclosure in procfs and linprocfs
                              2 December 2004

===========================================================================

        AusCERT Security Bulletin Summary
        ---------------------------------

Product:           procfs
                   linprocfs
Publisher:         FreeBSD
Operating System:  FreeBSD 5.x
                   FreeBSD 4.x
Impact:            Access Privileged Data
                   Denial of Service
Access:            Existing Account
CVE Names:         CAN-2004-1066

- --------------------------BEGIN INCLUDED 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-----

- --------------------------END INCLUDED TEXT--------------------

You have received this e-mail bulletin as a result of your organisation's
registration with AusCERT. The mailing list you are subscribed to is
maintained within your organisation, so if you do not wish to continue
receiving these bulletins you should contact your local IT manager. If
you do not know who that is, please send an email to auscert@auscert.org.au
and we will forward your request to the appropriate person.

NOTE: Third Party Rights
This security bulletin is provided as a service to AusCERT's members.  As
AusCERT did not write the document quoted above, AusCERT has had no control
over its content. The decision to follow or act on information or advice
contained in this security bulletin is the responsibility of each user or
organisation, and should be considered in accordance with your organisation's
site policies and procedures. AusCERT takes no responsibility for consequences
which may arise from following or acting on information or advice contained in
this security bulletin.

NOTE: This is only the original release of the security bulletin.  It may
not be updated when updates to the original are made.  If downloading at
a later date, it is recommended that the bulletin is retrieved directly
from the author's website to ensure that the information is still current.

Contact information for the authors of the original document is included
in the Security Bulletin above.  If you have any questions or need further
information, please contact them directly.

Previous advisories and external security bulletins can be retrieved from:

        http://www.auscert.org.au/render.html?cid=1980

If you believe that your computer system has been compromised or attacked in 
any way, we encourage you to let us know by completing the secure National IT 
Incident Reporting Form at:

        http://www.auscert.org.au/render.html?it=3192

===========================================================================
Australian Computer Emergency Response Team
The University of Queensland
Brisbane
Qld 4072

Internet Email: auscert@auscert.org.au
Facsimile:      (07) 3365 7031
Telephone:      (07) 3365 4417 (International: +61 7 3365 4417)
                AusCERT personnel answer during Queensland business hours
                which are GMT+10:00 (AEST).
                On call after hours for member emergencies only.
===========================================================================

-----BEGIN PGP SIGNATURE-----
Comment: http://www.auscert.org.au/render.html?it=1967

iQCVAwUBQa7ygih9+71yA2DNAQKmagP8DHoOvXxOoEu6w1x8D4hJXplG9vlS9/tT
zRqaGDnqXfGCqjzlIbL2MA16U5PE85atAN/oCQpVosoR4RULgBCFDfoG9cmmZRIa
b3lKag9bNXVYXdrQsP4KVWRXaWo1SIWrDYFp+RK3DrOxowwLL27/HaiEYFkVTCmT
8bdPTcVVzjA=
=teo3
-----END PGP SIGNATURE-----