[ advisories | exploits | discussions | news | conventions | security tools | texts & papers ]
 main menu
- feedback
- advertising
- privacy
- FightAIDS
- newsletter
- news
 
 discussions
- read forum
- new topic
- search
 

 meetings
- meetings list
- recent additions
- add your info
 
 top 100 sites
- visit top sites
- sign up now
- members
 
 webmasters

- add your url
- add domain
- search box
- link to us

 
 projects
- our projects
- free email
 
 m4d network
- security software
- secureroot
- m4d.com
Home : Advisories : Vulnerability in suidperl

Title: Vulnerability in suidperl
Released by: CERT
Date: 26th June 1996
Printable version: Click here
-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1



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

CERT(*) Advisory CA-96.12

Original issue date: June 26, 1996

Last Revised: September 24, 1997

              Updated copyright statement



              A complete revision history is at the end of this file.





Topic: Vulnerability in suidperl

- -----------------------------------------------------------------------------



The CERT Coordination Center has received reports of a vulnerability in

systems that contain the suidperl program and that support saved

set-user-ID and saved set-group-ID. By exploiting this vulnerability,

anyone with access to an account on such a system may gain root access.



Saved set-user-IDs and set-group-IDs are sometimes referred to as POSIX

saved IDs. suidperl is also known as sperl followed by a version number,

as in sperl5.002.



Perl versions 4 and 5 can be compiled and installed in such a way that

they will be vulnerable on some systems. If you have installed the

suidperl or sperl programs on a system that supports saved set-user-ID and

set-group-ID, you may be at risk.



The CERT Coordination Center recommends that you first disable the

suidperl and sperl programs (Section III.A). If you need the

functionality, we further recommend that you either apply a patch for

this problem or install Perl version 5.003 (Section III.B). If neither

a patch nor a new version are viable alternatives, we recommend

installing the wrapper written by Larry Wall as a workaround for this

problem (Section III.C).



We will update this advisory as we receive additional information.

Please check advisory files regularly for updates that relate to your site.



- -----------------------------------------------------------------------------



I.   Description



     On some systems, setuid and setgid scripts (scripts written in the

     C shell, Bourne shell, or Perl, for example, with the set user or

     group ID permissions enabled) are insecure due to a race condition in

     the kernel. For those systems, Perl versions 4 and 5 attempt to work

     around this vulnerability with a special program named suidperl, also

     known as sperl. Even on systems that do provide a secure mechanism for

     setuid and setgid scripts, suidperl may also be installed--although it

     is not needed.



     suidperl attempts to emulate the set-user-ID and set-group-ID

     features of the kernel. Depending on whether the script is

     set-user-ID, set-group-ID, or both, suidperl achieves this emulation

     by first changing its effective user or group ID to that of the

     original Perl script. suidperl then reads and executes the script as

     that effective user or group. To do these user and group ID changes

     correctly, suidperl must be installed as set-user-ID root.



     On systems that support saved set-user-ID and set-group-ID, suidperl

     does not properly relinquish its root privileges when changing its

     effective user and group IDs.



II.  Impact



     On a system that has the suidperl or sperl program installed and

     that supports saved set-user-ID and saved set-group-ID, anyone with

     access to an account on the system can gain root access.



III. Solution



     The command in Section A helps you determine if your system is

     vulnerable and, if it is, optionally disables the suidperl and

     sperl programs that it locates. After you have run this command

     on all of your systems, your system will no longer be vulnerable.



     If you find that your system is vulnerable, then you need to replace

     the suidperl and sperl programs with new versions. Section B describes

     how to do that.



     Finally, Section C identifies a wrapper that can be used in place of

     the suidperl program.



     A. How to determine if your system is vulnerable



        To determine if a system is vulnerable to this problem and to

        disable the programs that are believed to be vulnerable, use the

        following find command or a variant. Consult your local system

        documentation to determine how to tailor the find program on your

        system.



        You will need to run the find command on each system you maintain

        because the command examines files on the local disk only. Substitute

        the names of your local file systems for FILE_SYSTEM_NAMES in the

        example. Example local file system names are /, /usr, and /var.

        You must do this as root.



        Note that this is one long command, though we have separated

        it onto three lines using back-slashes.



             find FILE_SYSTEM_NAMES -xdev -type f -user root \

                    \( -name 'sperl[0-9].[0-9][0-9][0-9]' -o -name \

                    'suidperl' \) -perm -04000 -print -ok chmod ug-s '{}' \;



        This command will find all files on a system that are

            - only in the file system you name (FILE_SYSTEM_NAMES -xdev)

            - regular files (-type f)

            - owned by root (-user root)

            - named appropriately (-name 'sperl[0-9].[0-9][0-9][0-9]'

                                    -o -name 'suidperl')

            - setuid root (-perm -04000)



        Once found, those files will

            - have their names printed (-print)

            - have their modes changed, but only if you type `y'

              in response to the prompt (-ok chown ug-s '{}' \;)





     B. Obtain and install the appropriate patch according to the

        instructions included with the patch.



        Vendor patches

        --------------

        You may be vulnerable if your vendor supports saved set-user-ID

        and set-group-ID and ships suidperl or sperl. You need to get

        a patched version from your vendor. Appendix A contains

        information provided by the following vendors. If you vendor is not on

        this list, please contact the vendor directly.



              Vendor or Source

              ----------------

              Apple Computer, Inc.

              Data General Corp.

              Digital Equipment Corp.

              FreeBSD, Inc.

              Hewlett-Packard Company

              IBM Corporation

              Linux

              NEC

              Open Software Foundation

              Sony Corporation

              X.org





        Until you can install a patch, we recommend disabling suidperl.

        The find command above will help you do that. If you need

        suidperl or sperl, an alternative is to install the wrapper

        described in Section C.



        Source code patches

        -------------------

        If you have installed Perl from source code, you should install

        source code patches. Patches are available from the CPAN

        (Comprehensive Perl Archive Network) archives.



        Patch for Perl Version 4:

            File                src/fixsuid4-0.pat

            MD5 Checksum        af3e3c40bbaafce134714f1381722496



        Patch for Perl Version 5:

            File                src/fixsuid5-0.pat

            MD5 Checksum        135c96ee400fd37a38a7ef37edd489e9



        In addition, Perl version 5.003 contains this patch, so installing

        it on your system also addresses this vulnerability. Perl 5.003 is

        available from the CPAN archives. Here are the specifics:



            File                src/5.0/perl5.003.tar.gz

            MD5 Checksum        b1bb23995cd25e5b750585bfede0e8a5



        The CPAN archives can be found at the following locations:



        CPAN master site

          http://ftp.funet.fi/pub/languages/perl/CPAN/

        Africa

          http://ftp.is.co.za/programming/perl/CPAN/

        Asia

          http://dongpo.math.ncu.edu.tw/perl/CPAN/

          http://ftp.lab.kdd.co.jp/lang/perl/CPAN/

        Australasia

          http://coombs.anu.edu.au/pub/perl/

          http://ftp.mame.mu.oz.au/pub/perl/CPAN/

          http://ftp.tekotago.ac.nz/pub/perl/CPAN/

        Europe

          http://ftp.arnes.si/software/perl/CPAN/

          http://ftp.ci.uminho.pt/pub/lang/perl/

          http://ftp.cs.ruu.nl/pub/PERL/CPAN/

          http://ftp.demon.co.uk/pub/mirrors/perl/CPAN/

          http://ftp.funet.fi/pub/languages/perl/CPAN/

          http://ftp.ibp.fr/pub/perl/CPAN/

          http://ftp.leo.org/pub/comp/programming/languages/perl/CPAN/

          http://ftp.pasteur.fr/pub/computing/unix/perl/CPAN/

          http://ftp.rz.ruhr-uni-bochum.de/pub/programming/languages/perl/CPAN/

          http://ftp.sunet.se/pub/lang/perl/CPAN/

          http://ftp.switch.ch/mirror/CPAN/

          http://unix.hensa.ac.uk/mirrors/perl-CPAN/

        North America

          http://ftp.cis.ufl.edu/pub/perl/CPAN/

          http://ftp.delphi.com/pub/mirrors/packages/perl/CPAN/

          http://ftp.sedl.org/pub/mirrors/CPAN/

          http://ftp.sterling.com/programming/languages/perl/

          http://ftp.uoknor.edu/mirrors/CPAN/

          http://uiarchive.cso.uiuc.edu/pub/lang/perl/CPAN/





        C. If you need setuid or setgid Perl scripts and are unable to apply

           the source code patches listed in Section B, we suggest that you

           retrieve Larry Wall's fixsperl script noted below. fixsperl is a

           script that replaces the suidperl and sperl programs with a wrapper

           that eliminates the vulnerability. The script is available from the

           CPAN archives as



            File                src/fixsperl-0

            MD5 Checksum        f13900d122a904a8453a0af4c1bdddc6



           Note that this script should be run one time, naming every suidperl

           or sperl file on your system. If you add another version of

           suidperl or sperl to your system, then you must run fixsperl

           on those newly installed versions.





.........................................................................

Appendix A: Vendor Information



Below is information we have received from vendors concerning the

vulnerability described in this advisory. If you do not see your vendor's

name, please contact the vendor directly for information.



Apple Computer, Inc.

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

        A/UX 3.1.1 and earlier support saved set-{user,group}-ids.



        A/UX 3.1.1 and earlier do not have Perl as part of the standard

        product.



Data General Corporation

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

        Data General does support saved set-user-IDs and set-group-IDs on

        DG/UX.



        Data General does not ship suidperl or sperl* with DG/UX.



Digital Equipment Corporation

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

        Digital UNIX and Digital's ULTRIX Operating systems do support

        saved suid and saved guid in the process context.



        Digital does not ship Perl with any operating system.



FreeBSD, Inc.

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



This information is taken from FreeBSD advisory SA-96:12.

For the complete text of the advisory, please refer to



        http://freebsd.org/pub/CERT/patches/SA-96:12/



     This vulnerability is present on all systems with the

     _POSIX_SAVED_IDS functionality extension where suidperl

     has been installed.



     One may disable the setuid bit on all copies of the setuid

     version of perl.  This will close the vulnerability but render

     inoperable setuid perl scripts.  No software currently shipping

     as part of FreeBSD relies on this functionality so the impact is

     only to third party software.



     As root, execute the commands:



         # chmod 111 /usr/bin/suidperl

         # chmod 111 /usr/bin/sperl4.036



     In addition, if you have installed the perl5 port:

         # chmod 111 /usr/local/bin/suidperl

         # chmod 111 /usr/local/bin/sperl5.001



     then verify that the setuid permissions of the files have been

     removed.  The permissions array should read "-r-xr-xr-x" as

     shown here:



         # ls -l /usr/bin/s*perl*

         ---x--x--x  2 root  bin  307200 Jun  1 17:16 /usr/bin/sperl4.036

         ---x--x--x  2 root  bin  307200 Jun  1 17:16 /usr/bin/suidperl



     and for the perl5 port:



         # ls -l /usr/local/bin/s*perl*

         ---x--x--x  2 root  bin  397312 Jan 22 15:15 /usr/local/bin/sperl5.001

         ---x--x--x  2 root  bin  397312 Jan 22 15:15 /usr/local/bin/suidperl



Other information:



     *NOTE* A patch for perl is available directly from Larry Wall

     (the author of perl) which solves this vulnerability in a

     different fashion than the FreeBSD patches.  You may apply

     either the FreeBSD patches, or Larry's patches, or both.

     The patches solve the problem via two different mechanisms.



     Patches are available which eliminate this vulnerability.

     The following patch should be applied to the system sources and

     suidperl should be rebuilt and reinstalled.



     Apply the patch, then:

        # cd /usr/src/gnu/usr.bin/perl/sperl

        # make depend

        # make all

        # make install



     A similar patch is also available for the perl5 port.

     Apply the following patch by moving it into the patch

     directory for the port distribution and rebuilding and

     installing perl5:



        # cd /usr/ports/lang/perl5

        # cp /patch-a[ab] patches

        # make all

        # make install



     NOTE: These patches do NOT solve the vulnerability for FreeBSD 2.0

           or 2.0.5.  These only solve the problem for 2.1 and later.

           Patches specific to FreeBSD 2.0 and 2.0.5 are available at

           the URL listed above.





Hewlett-Packard Company

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

        HP/UX versions 8.X, 9.X, and 10.X all support saved set-user-id.



        None of HP/UX versions 8.X, 9.X, and 10.X have Perl as part of the

        standard product.



IBM Corporation

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

        AIX versions 3.2.5 and 4.X support saved set-user-id.



        AIX versions 3.2.5 and 4.X do not have Perl as part of the standard

        product. However, the SP2's PSSP software does contain suidperl, but

        the program is not installed with the setuid bit set.



Linux

=====

        Linux 1.2 and 2.0 support saved set-user-id.



        Most distributions of Linux provide suidperl and sperl.



        The fixsperl script works on linux, and it is recommended that this

        fix be applied until a new Perl release is made.



NEC

===



   OS                    Support Saved Sets?         Provide suidperl?

   -------------------------------------------------------------------

   UX/4800                 yes                             no

   EWS-UX/V (Rel4.2MP)     yes                             no

   UP-UX/V (Rel4.2MP)      yes                             no

   EWS-UX/V (Rel4.2)       yes                             no





Open Software Foundation

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

         OSF/1 1.3 or later support saved set-user-id



         OSF/1 1.3 or later does not have Perl as part of the standard

         product.



Sony Corporation

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

        NEWS-OS 4.X does not support saved set-user-id and therefore any

        version of Perl on that system is not vulnerable.



        NEWS-OS 6.X does support saved set-user-id.



X.org

=====

        None of X.org's development systems are vulnerable to the saved

        set-user-IDs and set-group-IDs problems, and suidperl is not shipped

        with either of our products.





- ---------------------------------------------------------------------------

The CERT Coordination Center staff thanks Paul Traina, Larry Wall, Eric

Allman, Tom Christiansen, and AUSCERT for their support in the development

of this advisory.

- ---------------------------------------------------------------------------



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).



We strongly urge you to encrypt any sensitive information you send by

email. The CERT Coordination Center can support a shared DES key and PGP.

Contact the CERT staff for more information.



Location of CERT PGP key:



         http://info.cert.org/pub/CERT_PGP.key



CERT Contact Information

- ------------------------

Email    cert@cert.org



Phone    +1 412-268-7090 (24-hour hotline)

                CERT personnel answer 8:30-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 publications, information about FIRST representatives, and other

security-related information are available for anonymous FTP from

        http://www.cert.org/

        http://info.cert.org/pub/



CERT advisories and bulletins are also posted on the USENET newsgroup

        comp.security.announce



To be added to our mailing list for CERT advisories and bulletins, send your

email address to

        cert-advisory-request@cert.org





- ------------------------------------------------------------------------------



Copyright 1996 Carnegie Mellon University. Conditions for use, disclaimers,

and sponsorship information can be found in

http://www.cert.org/legal_stuff.html and http://ftp.cert.org/pub/legal_stuff .

If you do not have FTP or web access, send mail to cert@cert.org with

"copyright" in the subject line.



CERT is registered in the U.S. Patent and Trademark Office.







~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Revision history



Sep. 24, 1997  Updated copyright statement

Aug. 30, 1996  Information previously in the README was inserted into the

               advisory.

July 01, 1996  Appendix, FreeBSD - added an entry for this vendor.

June 27, 1996  Appendix, NEC - added an entry for this vendor.

June 26, 1996  Appendix, Digital - added an entry for this vendor.































-----BEGIN PGP SIGNATURE-----

Version: PGP for Personal Privacy 5.0

Charset: noconv



iQA/AwUBOBTBYVr9kb5qlZHQEQKxXgCfbnWKj1+c9/RlCSciwx0Ak6/wTnoAoMQ0

a6dWCBezuRxIgszniFGsJQ7k

=Dp70

-----END PGP SIGNATURE-----








(C) 1999-2000 All rights reserved.