-----BEGIN PGP SIGNED MESSAGE-----

=============================================================================
CERT(sm) Advisory CA-95:09                 
Original issue date: August 29, 1995
Last revised: August 30, 1996
              Information previously in the README was inserted
              into the advisory. Updated version number of AUSCERT checklist
              and the appendix.

              A complete revision history is at the end of this file.
                    
Topic: Solaris ps Vulnerability
- -----------------------------------------------------------------------------

               The text of this advisory is taken primarily 
           from AUSCERT advisory AA-95.07, with their permission.  

A vulnerability exists in Solaris systems that allows a race condition to be
exploited to gain root access.  The essential problem is that the ps(1)
program maintains a data file in the /tmp directory, and the /tmp directory is
world-writable, allowing users to delete other users' files in /tmp. This
vulnerability affects Solaris 2.x (SunOS 5.x) systems. 

An exploit program for this vulnerability has been published. We urge
you to take the actions described in Section III as soon as possible.

We will update this advisory as we receive additional information.
Please check advisory files regularly for updates that relate to your site.

- ------------------------------------------------------------------------------
I.   Description

     A race condition exists in at least one Solaris 2.x (SunOS 5.x) system
     program that can be exploited to gain root access if the user has access
     to the temporary files.  Access to temporary files may be obtained if the
     permissions on the /tmp and /var/tmp directories are set incorrectly. 
     The permissions on the /tmp directory are often reset incorrectly by
     the system if tmpfs (which is mounting swap as /tmp) is in use.

II.  Impact

     Users logged in to the system may gain unauthorized root privileges.
     
III. Solution
     
     A. Determine if your system is vulnerable

        To determine if you are running tmpfs, the following command can be
        used to verify if the file system for /tmp is swap:

          % /usr/sbin/df -k /tmp
          Filesystem          kbytes    used   avail capacity  Mounted on
          swap                 28348     12    28336     0%    /tmp

        or look in the file /etc/vfstab for the configuration line:

          #device     device   mount    FS      fsck    mount     mount
          #to mount   to fsck  point    type    pass    at boot   options
          swap          -      /tmp     tmpfs     -      yes         -

        If either of these two conditions exist, then you are running tmpfs
        and the system may automatically reset the permission bits of /tmp at
        the next reboot.

         To verify if your configuration is currently vulnerable, the
         following command may be used:

              % /usr/bin/ls -ld /tmp
              drwxrwxrwt   2 root     root       61 Aug 15 12:12 /tmp

         If the sticky bit (t) is not set (it will be an x), then the
         system is vulnerable.  In addition, we recommend that the owner
         and group for /tmp be changed to root and root, respectively.


     B. Perform the following workarounds

        These workarounds have been verified with Sun Microsystems. Apply
        these workarounds until you an install a patch. (Patch information is
        in Sec. C. below.)

        1. Immediate - fix /tmp permissions

           A workaround that takes effect immediately is to set the sticky bit
           on the /tmp directory using the following command as root:

             # /usr/bin/chmod 1777 /tmp

           Note that this command must be performed after each reboot if you
           are mounting swap as /tmp (using tmpfs).

          In addition, the ownership and group membership of the /tmp
          directory should be verified using /usr/bin/ls -ld /tmp, and if
          incorrect may be reset by:

             # /usr/bin/chown root /tmp
             # /usr/bin/chgrp root /tmp

           The AUSCERT UNIX Security Checklist addresses this issue in
           Section 5.5.  This section is reproduced in the appendix of this
           advisory. The entire AUSCERT checklist may be obtained from these
           locations.
          
           Sites outside of Australia should use the info.cert.org FTP site.

       ftp://info.cert.org/pub/tech_tips/AUSCERT_checklist_1.1
       ftp://ftp.auscert.org.au/pub/auscert/papers/unix_security_checklist_1.1

        2. Permanent - make the above change to /tmp permissions permanent

                The change noted in item B.1 above will be lost upon
                reboot. To make the changes permanent, create the
                following script as /etc/init.d/tmpfsfix:

          -----------------------------cut here--8<----------------------------
          #!/bin/sh

          if [ -d /tmp ]
          then
             /usr/bin/chmod 1777 /tmp
             /usr/bin/chgrp root /tmp
             /usr/bin/chown root /tmp
          fi
          ------------------------------cut here---8<--------------------------

          After creating this file, the following commands should be issued
          as root to make the file executable, set appropriate owner and group,
          and create the necessary symbolic link to ensure that it is executed
          upon reboot appropriately:

             # /usr/bin/ln -s /etc/init.d/tmpfsfix /etc/rc2.d/S06tmpfix
             # /usr/bin/chmod 744  /etc/init.d/tmpfsfix
             # /usr/bin/chown root /etc/init.d/tmpfsfix
             # /usr/bin/chgrp sys /etc/init.d/tmpfsfix
             # /bin/rm -f /etc/rc3.d/S79tmpfix

          If you have done item B.1 above, you can reboot at your leisure.
          Otherwise, reboot your system now. In either case, verify the
          permissions of /tmp immediately after your next system reboot.

       3. Check /var/tmp permissions

          We recommend that you also check and correct the /var/tmp
          directory.  Note that this directory is not usually mounted as
          tmpfs, so it normally would not be subject to automatic resetting
          of its permission bits on reboot.

           % /usr/bin/ls -ld /var/tmp
             drwxrwxrwt   2 root     root      512 Aug 15 11:35 /var/tmp

    C. Install a vendor patch

       On September 20, 1995, Sun Microsystems, Inc., provided the following
       information in their advisory.

- ---------------------------------------------------------------------------
			Begin Text provided by vendor

II. Announcement of patches for Solaris 2.x "ps_data" vulnerability

    A. Patch list

    We have produced patches for the versions of SunOS shown below.

         OS version      Patch ID    Patch File Name
         ----------      ---------   --------------- 
         5.3             101545-02   101545-02.tar.Z
         5.4             102711-01   102711-01.tar.Z
         5.4_x86         102712-01   102712-01.tar.Z

    B. Patch notes
 
    1. SunOS 4.1.x systems are not affected by this bug.

    2. The fix has been applied to the upcoming version of Solaris.


III. Checksum Table

    In the checksum table we show the BSD and SVR4 checksums and MD5
    digital signatures for the compressed tar archives.

   File            BSD          SVR4        MD5
   Name            Checksum     Checksum    Digital Signature
   --------------- -----------  ----------  --------------------------------
   101545-02.tar.Z 41218    77  47754  153  A8FB866780E7207D26CF16210BCFDC83
   102711-01.tar.Z 17256    69  20376  138  98A449372C5ABBDB7C37B08BFE0E6ED7
   102712-01.tar.Z 29867    68  56717  136  E324004BB8C09990B2790CB5D29D3AF5

   The checksums shown above are from the BSD-based checksum
   (on 4.1.x, /bin/sum;  on Solaris 2.x, /usr/ucb/sum) and from
   the SVR4 version on Solaris 2.x (/usr/bin/sum).

			End Text provided by vendor
- ---------------------------------------------------------------------------

..............................................................................
Appendix: Excerpt from AUSCERT UNIX Security Checklist (Version 1.1)
 5.5  File Permissions 
   *    ENSURE that the permissions of /etc/utmp are set to 644.
   *    ENSURE that the permissions of /etc/sm and /etc/sm.bak are set to
        2755.
   *    ENSURE that the permissions of /etc/state are set to 644.
   *    ENSURE that the permissions of /etc/motd and /etc/mtab are set to 644.
   *    ENSURE that the permissions of /etc/syslog.pid are set to 644.
            [NOTE: this may be reset each time you restart syslog.]
   *    DO consider removing read access to files that users do not need to 
        access.
   *    ENSURE that the kernel (e.g., /vmunix) is owned by root, has group set
 
        to 0 (wheel on SunOS) and permissions set to 644.
   *    ENSURE that /etc, /usr/etc, /bin, /usr/bin, /sbin, /usr/sbin, /tmp and
         /var/tmp are owned by root and that the sticky-bit is set on /tmp and
        on /var/tmp (see G.14).  Refer to the AUSCERT Advisory AA-95:05 (see 
         A.1).
   *    ENSURE that there are no unexpected world writable files or 
        directories on your system.  
        See G.15 for example commands to find group and world writable files
        and directories.                           
   *    CHECK that files which have the SUID or SGID bit enabled, should have
        it enabled (see G.16).
   *    ENSURE the umask value for each user is set to something sensible 
        like 027 or 077. 
        (Refer to section E.1 for a shell script to check this).
   *    ENSURE all files in /dev are special files.
            Special files are identified with a letter in the first position
            of the permissions bits.  See G.17 for a command to find files in 
            /dev which are not special files or directories.
            Note: Some systems have directories and a shell script in /dev
            which may be legitimate.  Please check the manual pages for more 
            information.
   *    ENSURE that there are no unexpected special files outside /dev.
        See G.18 for a command to find any block special or character
        special files.

- ----------------------------------------------------------------------------
The CERT Coordination Center staff thanks AUSCERT, the Australian response
team, for their permission to reuse text from their advisory AA-95.07 and 
for their cooperation and assistance.
- ----------------------------------------------------------------------------

If you believe that your system has been compromised, contact the CERT
Coordination Center or your representative in the Forum of Incident
Response and Security Teams (FIRST).

If you wish to send sensitive incident or vulnerability information to
CERT staff by electronic mail, we strongly advise that the email be
encrypted.  The CERT Coordination Center can support a shared DES key, PGP
(public key available via anonymous FTP on info.cert.org), or PEM (contact
CERT staff for details).

Internet email: cert@cert.org
Telephone: +1 412-268-7090 (24-hour hotline)
           CERT personnel answer 8:30 a.m.-5:00 p.m. EST(GMT-5)/EDT(GMT-4),
           and are on call for emergencies during other hours.
Fax: +1 412-268-6989

Postal address:  CERT Coordination Center
                 Software Engineering Institute
                 Carnegie Mellon University
                 Pittsburgh, PA 15213-3890
                 USA

CERT advisories and bulletins are posted on the USENET newsgroup
comp.security.announce. If you would like to have future advisories and
bulletins mailed to you or to a mail exploder at your site, please send mail
to cert-advisory-request@cert.org.

Past CERT publications, information about FIRST representatives, and
other information related to computer security are available for anonymous
FTP from info.cert.org. 

This material may be reproduced and distributed without permission provided it
is used for noncommercial purposes, and the CERT Coordination Center and
AUSCERT are acknowledged.

CERT is a service mark of Carnegie Mellon University.

=============================================================================
UPDATES

If anyone has trouble retrieving the electronic file CA-95:09.Solaris.ps.vul,
they should use the file name CA-95:09.Solaris-ps.vul.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Revision history

Aug. 30, 1996  Information previously in the README was inserted
                into the advisory. Updated version number of AUSCERT checklist
                and the appendix.
Sep. 20, 1995  Sec. III.A.1 - corrected the command and explanation for
                checking your configuration.
               Sec. III.B.1 - corrected commands for verifying ownership and
                group membership.
               Sec. III.B.2 - replaced this section, which was incorrect.
               Sec. III.B.3 - replaced the text and command.
               Sec. III.C - added this section, which contains Sun patch
                information.
               Appendix - corrected item 10.
               Updates section - added a note about the file name.





-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBMiS5XXVP+x0t4w7BAQGZjQP+JrrejhcSiirhSD/v8jimMcKTlI5OJwx7
2gIhsUeJ/mUP5nbWLySxMh9HTu3VaBacl79eS07ospL671fJmuysU87WdlLhLjwt
PvkbY2KBwOsV9KoaotHcV5Hlw6ZfQyKVhDJrtIlILLmR6UNwYRhPeWqZEmnchWps
Bclz1zVmZeo=
=OyXc
-----END PGP SIGNATURE-----
