SuSE Security Announcement: kernel (SuSE-SA:2001:18)

From: Roman Drahtmueller (drahtat_private)
Date: Thu May 17 2001 - 07:44:59 PDT

  • Next message: Cisco Systems Product Security Incident Response Team: "Cisco Security Advisory: Cisco Content Service Switch 11000 Series FTP Vulnerability"

    -----BEGIN PGP SIGNED MESSAGE-----
    
    ______________________________________________________________________________
    
                            SuSE Security Announcement
    
            Package:                kernel
            Announcement-ID:        SuSE-SA:2001:18
            Date:                   Thursday, May 17th, 2000 16:40 MET
            Affected SuSE versions: (6.1, 6.2), 6.3, 6.4, 7.0, 7.1
            Vulnerability Type:     local root compromise
            Severity (1-10):        7
            SuSE default package:   yes
            Other affected systems: All Linux systems using a v2.2 kernel
    
        Content of this advisory:
            1) security vulnerability resolved: kernel
               Problem, Workaround, Recommended solution, Instructions, Notes,
               Verification
            2) Acknowledgements
            3) standard appendix (further information)
    
    ______________________________________________________________________________
    
    1)  The Problem, Workaround, Recommended solution, Instructions, Notes,
        Verification
    
      The Problem:
    
        The SuSE Linux kernel is a standard kernel, enhanced with a set of
        additional drivers and other improvements, to suit the end-user's
        demand for a great variety of drivers for all kind of hardware.
        Multiple security vulnerabilities have been found in all Linux kernels
        of version 2.2 before version 2.2.19. Most of the found errors allow
        a local attacker to gain root privileges. None of the found errors
        in the v2.2 linux kernel make it possible for a remote attacker to
        gain access to the system or to elevate privileges from the outside
        of the system. Thanks to Alan Cox, a summary of these errors can be
        found at http://www.linux.org.uk/VERSION/relnotes.2219.html .
        One of the numerous features in the SuSE Linux kernels is support
        for reiserfs, a fast, stable logging filesystem. In addition to the
        bugs listed at www.linux.org.uk, the SuSE Linux kernel contains a fix
        for a race condition between mmap(2) and write(2) in reiserfs that
        can expose raw data from the disk to an unprivileged user (this
        problem affected the ufs and ext2fs drivers in FreeBSD systems,
        see FreeBSD-SA-01:30.ufs-ext2fs at http://www.freebsd.org/security/).
        Please see the acknowledgement section 2) below for credits on
        hunting these bugs and fixing them.
    
    
      Workarounds:
    
        In order to solve the security problems, it is recommended to update
        the kernel to version 2.2.19. Some problems (ptrace race) can be
        circumvented by removing all suid and sgid bits from all binaries
        in the system. Since this does not help against the other errors,
        there is no appropriate temporary workaround against all of the
        known problems except for locking out users with shell access.
        Advanced Linux users may decide to compile and install the 2.2.19
        kernel themselves by hand. This requires some experience on behalf
        of the administrator and may not be all satisfying because the
        standard 2.2.19 kernel does not contain some of the drivers that
        are included in the SuSE kernel (ppp over ethernet, hardware health
        monitoring (SMBus), reiserfs, graphics hardware acceleration
        modules (DRI), ...).
    
      Recommended solution:
    
        SuSE have chosen to provide update packages for the supported
        distributions to the newest kernels instead of supplying patched
        update kernel packages of the same kernel version in order to
        avoid confusion about whether a vulnerable version of a kernel
        is installed on a system or not. In addition to the clarifying
        effect of a visible new kernel version that is known to have all
        publically known security problems fixed, SAP LinuxLab
        (http://www.sap.com/linux/) have certified this release of the
        SuSE-enhanced Linux kernel version 2.2.19 with respect to stability
        and performance. We expect that our usership will benefit from this
        achievement.
    
        Currently, only kernel update packages for the Intel i386 distributions
        are available. The other supported architectures will have their kernel
        updates in their respective update directories on our ftp server.
    
        The SuSE Linux distribution 6.0 was shipped with a kernel of version 2.0.
        All of the SuSE Linux distributions 6.1, 6.2, 6.3, 6.4, 7.0 and 7.1
        are ready for a kernel of version 2.2.19. However, since update support
        for the SuSE Linux distributions 6.0, 6.1 and 6.2 has been discontinued,
        we strongly encourage all users of these distributions to update their
        systems to a newer version of the SuSE Linux distribution. Please know
        that the full distribution can be installed from our ftp server or one
        of its mirrors. Experienced Linux users may choose to update their kernels
        by hand to the latest version 2.2.19.
    
    
      Step-By-Step Installation Instructions:
    
        The kernel of a Linux/Un*x system is the most critical component with
        relation to stability, reliability and security. By consequence, an
        update of that component requires some care and full attention to
        succeed.
        The following paragraphs will guide you through the installation
        process in a step-by-step fashion. The character sequence "****"
        marks the beginning of a new paragraph. In some cases, you decide
        if the paragraph is needed for you or not. Please read through all
        of the steps down to the end. All of the commands that need to be
        executed are required to be run as the superuser (root). Each step
        relies on the steps before to be successfully completed.
    
    
      **** Step 1: Determine the needed RPM package
    
        Use the command
            rpm -qf `awk -F= '/image/{print $2}' < /etc/lilo.conf`
        to find the name of the kernel RPM package that is installed on
        your system. Get the respective kernel RPM package from the following
        location:
            ftp://ftp.suse.com/pub/suse/i386/update/>/kernel/2.2.19/
        where <DIST> is the distribution version of your system (one out of
        6.3, 6.4, 7.0 or 7.1).
        Most installations are likely to run a k_deflt kernel.
        To verify the integrity of the files that you need to download, see the
        section "Verification" near the end of this announcement.
    
        In SuSE-6.3 distributions, the above command can produce inconclusive
        results. This is caused by a different kernel installation procedure
        in this version of the SuSE Linux distribution.
        To select your kernel type, choose from the following options:
        k_eide  - should be used for "exotic" IDE chipsets, mostly found on
                  additional IDE interface adapters to PCI or ISA bus systems.
        k_laptop - should be used for laptops. This kernel has APM support
                  configured.
        k_i386  - a kernel that should run on most i386 processors. Use this
                  kernel package if the k_pentiu kernel will not boot.
        k_smp   - kernel for multiprocessor systems (SMP)
        k_pentiu - the standard kernel. It should run on most systems.
    
        In the case that you have a self-compiled kernel running on your
        system, please note that most kernels for the newer distributions
        have APM configured. This obsoletes the need for a particular
        laptop kernel. k_deflt (after SuSE-6.3) should do on most modern
        hardware.
    
    
    
      **** Step 2: SuSE-6.3 special
    
        If you have a SuSE-6.3 system, continue to read this paragraph,
        otherwise jump to Step 3.
        In SuSE Linux version 6.3, the kernel and the kernel modules are
        packaged in two different packages. Both packages must be downloaded
        and installed. On SMP systems, the packages kernmods (-> kernmod-SMP)
        and k_smp are needed. On single processor systems, get the kernmod
        package plus the package as determined by the description in Step 1.
    
    
    
      **** Step 3: Installation of the RPM package
    
        Install the rpm package using the command
            rpm -Uhv <K_FILE.RPM>
        where <K_FILE.RPM> is the rpm package you downloaded in Step 1 (for
        6.3 also Step 2, two packages!).
    
        If the RPM command complains about conflicting files or unfulfilled
        dependencies, use the options "--nodeps" and "--force". In this case
        there is no risk for the consistency of the packages on your system.
    
    
    
      **** Step 4: aic7xxx
    
        If you use an Adaptec aic7xxx SCSI host adapter, continue to read
        this paragraph, otherwise jump to Step 5.
        The new kernel comes with two versions for the Adaptec aic7xxx driver.
        If you have such a card, you should see the driver listed in the
        output from the command
            lsmod
        or you should see the adapter in the output of the command
            lspci
        The new driver is known to work reliably. However, if you encounter
        any problems with CDROM drives or other removeable devices (CD-RW
        drives, tapes, etc) after this kernel upgrade, then you should try to
        use the old driver which is called aic7xxx_old instead of aic7xxx.
        If you decide to make this change, then the steps 6 and 7 are
        mandatory for the update to succeed, regardless if you get back to
        this paragraph after your first reboot or not.
        To use the old driver, please use your favourite editor to edit
        the file /etc/rc.config. Change aic7xxx into aic7xxx_old at the line
        that starts with INITRD_MODULES. You should find it near the top of the
        file. Do not forget to save your changes. Then go to Steps 6 and 7.
    
        If you want to use the new driver, then do not change anything.
    
    
    
      **** Step 5: LVM
    
        If you use LVM, then continue to read this paragraph,
        otherwise jump to Step 6.
        If you use LVM (Logical Volume Manager) in your installation of SuSE
        Linux, then you need the updated lvm package from the kernel/2.2.19/
        directory for your distribution as well. The package contains the
        userspace utilities to manage the Logical Volume Manager driver.
        An update package is needed because the LVM data format/structure on
        disk has changed with the new version of the LVM kernel driver.
        Install the package as usual using the command
            rpm -Uhv lvm-0.9.1_beta4-12.i386.rpm
        Be sure you have downloaded the package for the explicit version
        of your SuSE Linux Installation. The package names are identical
        for all distribution versions.
        WARNING: After the first boot with the new kernel you will not be able
        to downgrade to older versions of LVM any more.
    
    
    
      **** Step 6: initrd
    
        Upon kernel boot (after lilo runs), the kernel needs to use the
        drivers for the device (disk/raid) where the root filesystem
        is located. If this driver is not compiled into the kernel, it is
        supplied as a kernel module that must be loaded _before_ the
        root filesystem is mounted. This is done using a ramdisk that is
        loaded along with the kernel by lilo (See next Step).
        This ramdisk, called "initrd", must be generated using the command
            mk_initrd
        The modules as configured in the variable INITRD_MODULES from
        /etc/rc.config (See Step 4) are being added to the initrd.
        Without the "mk_initrd"-call your system might not boot any more.
    
    
    
      **** Step 7: lilo
    
        lilo is responsible for loading the kernel image and the initrd
        ramdisk image into the system and for transferring control over the
        system to the kernel. Therefore, a proper installation of the
        bootloader (by calling the program lilo) is essential for the
        system to boot (!).
        Manually changed settings in /etc/lilo.conf require the admin to make
        sure that /boot/vmlinuz is listed in the first "image" line in that
        file. Verify that the line starting with initrd= is set to
        initrd=/boot/initrd
        Execute
            lilo
        and you should see your label in an output like
          Added linux *
        Every other output should be considered an error and requires
        attention. If your system managed to reboot before the upgrade, you
        should not see any additional output from lilo at this stage.
    
    
      **** Step 8: SuSE-7.0 special
    
        If you have a SuSE Linux 7.0 distribution, then continue to read this
        paragraph, otherwise jump to Step 9.
        During testing of the 2.2.19-SuSE Linux kernel, we have found an error
        in the glibc (shlibs) package of the SuSE Linux 7.0 distribution. The
        error might result in readdir(3) calls to return -EIO to the user
        program due to incorrect handling of the return value of getdents(2)
        from the kernel. This bug mostly appears on NFS-mounted filesystems
        when commands such as tar(1) are used.
        We have prepared update packages that solve this specific problem.
        Former security updates are included in this package, of course.
    
        Determine which packages you need: See the output of the command
            rpm -q shlibs libc libd nssv1
        It should not be necessary to update a package that is not installed.
        Select the needed update packages and download them from the following
        list of URLs
        ftp://ftp.suse.com/pub/suse/i386/update/7.0/a1/shlibs-2.1.3-193.i386.rpm
        ftp://ftp.suse.com/pub/suse/i386/update/7.0/a1/nssv1-2.1.3-193.i386.rpm
        ftp://ftp.suse.com/pub/suse/i386/update/7.0/d1/libc-2.1.3-193.i386.rpm
        ftp://ftp.suse.com/pub/suse/i386/update/7.0/d2/libd-2.1.3-193.i386.rpm
    
              !!!           !!!     WARNING:     !!!            !!!
        After download and before installation of the glibc packages, the
        system should be brought to single user mode ("init 1"). If this
        is not suitable for operational reasons, then please keep the system
        as calm as at all possible during the update of the shlibs and nssv1
        packages. In particular, do not run any shell scripts or any other
        processes that execute other binaries. Stop the cron and at services,
        and shut down your MTA. Suspend the execution of active processes
        by killing them with the -STOP signal and let them resume their work
        after the installation of the shlibs and nssv1 packages with a -CONT
        signal.
        After verifying that the right conditions are in place, install the
        packages using the command
            rpm -Fhv nssv*.rpm shlibs*.rpm
            rpm -Fhv <rest>
        Afterwards, execute the command
            ldconfig
        to update the cache for the dynamic linker.
    
        NOTE: updating shared libraries in the running system requires enough
        space on the root and /usr filesystem to keep both versions of the
        shared libraries on the disk. The old libraries will be deleted, but
        the files continue to use diskspace until they are not used by any
        processes any more. (See Step 9). Similar considerations apply for the
        the memory consumption of the system.
    
    
    
      **** Step 9: reboot
    
        Reboot your machine for the new kernel to boot and therefore become
        active. Make sure that all of the above steps have completed
        successfully. Shutdown and reboot using the command
            shutdown -r now
        or
            init 6
    
    
    
      Notes:
        a)  After the upgrade, you might notice kernel messages upon execution
            of an NFS mount command:
              silence kernel: nfs warning: mount version older than kernel
            These messages are complaints that the mount(8) command needs to
            be upgraded. The mount(8) command is contained in the package
            "util" ("util-linux" for SuSE-7.1) - we will provide update
            packages for the "util" ("util-linux" for SuSE-7.1) package.
            The change is mostly a cosmetic nature and does not have any
            impact on the security or the stability of the system.
    
        b)  The kernel sources are contained in the RPM
            kernel/2.2.19/lx_sus22-2.2.19.SuSE-25.i386.rpm in each distribution
            update tree. The kernel documentation is in the package
            kernel/2.2.19/lx_doc22-2.2.19.SuSE-25.i386.rpm and installs to the
            base path /usr/share/doc/kernel/.
    
        c)  The directory kernel/misc/ in each distribution tree contains
            the .config files, the spec and changes file as well as the
            compilation output for the respective kernel, each in a directory
            where it belongs to. In addition, the sources for the lvm
            package can be found in the lvm directory as appropriate.
    
    
    
    
      Known problems:
    
        * The kernel modules for the cipe and the freeswan packages are not
          contained in the kernel RPM packages. If you use these packages, then
          you should wait with the kernel update until the kernel modules
          for these packages are available, or you could recompile the kernel
          modules yourself (See section Notes b). Please read the section 2)
          of the upcoming SuSE security announcements for the location of the
          cipecb.o and ipsec.o kernel modules.
    
    
      Verification:
    
        All RPM packages are gpg-signed using the buildat_private SuSE packaging
        key that can be found in the toplevel directory of the first CD on
        SuSE-7.1 and younger, as well as at
        ftp://ftp.suse.com/pub/suse/pubring.gpg-build.suse.de (this key is signed
        by securityat_private).
        All files that are needed or referred to in this announcement have
        their md5 sums listed in the file
        ftp://ftp.suse.com/pub/suse/i386/update/>/kernel/MD5SUMS .
        These files are signed by securityat_private in the file MD5SUMS.sig.
        Since there are 150 files, we do not send the md5sums with the mail
        this time.
    
    ______________________________________________________________________________
    
    2)  Acknowledgements
    
        SuSE Security wishes to express their gratitude for the following people
        who have invested their time for the bugs that are subject of this
        announcement:
    
        Chris Evans
        Solar Designer
        Alan Cox
        David Miller for spotting and fixing the problems as listed in the
            2.2.19 release notes
        Chris Mason for fixing the reiserfs mmap/write race condition
        Sven Berkvens and Marc Olzheim for spotting the mmap/write race
            condition in FreeBSD drivers that affects reiserfs in Linux
    
    ______________________________________________________________________________
    
    3)  standard appendix:
    
        SuSE runs two security mailing lists to which any interested party may
        subscribe:
    
        suse-securityat_private
            -   general/linux/SuSE security discussion.
                All SuSE security announcements are sent to this list.
                To subscribe, send an email to
                    <suse-security-subscribeat_private>.
    
        suse-security-announceat_private
            -   SuSE's announce-only mailing list.
                Only SuSE's security annoucements are sent to this list.
                To subscribe, send an email to
                    <suse-security-announce-subscribeat_private>.
    
        For general information or the frequently asked questions (faq)
        send mail to:
            <suse-security-infoat_private> or
            <suse-security-faqat_private> respectively.
    
        ===============================================
        SuSE's security contact is <securityat_private>.
        ===============================================
    
    ______________________________________________________________________________
    
        The information in this advisory may be distributed or reproduced,
        provided that the advisory is not modified in any way.
        SuSE GmbH makes no warranties of any kind whatsoever with respect
        to the information contained in this security advisory.
    
    Type Bits/KeyID    Date       User ID
    pub  2048/3D25D3D9 1999/03/06 SuSE Security Team <securityat_private>
    
    - -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: 2.6.3i
    
    mQENAzbhLQQAAAEIAKAkXHe0lWRBXLpn38hMHy03F0I4Sszmoc8aaKJrhfhyMlOA
    BqvklPLE2f9UrI4Xc860gH79ZREwAgPt0pi6+SleNFLNcNFAuuHMLQOOsaMFatbz
    JR9i4m/lf6q929YROu5zB48rBAlcfTm+IBbijaEdnqpwGib45wE/Cfy6FAttBHQh
    1Kp+r/jPbf1mYAvljUfHKuvbg8t2EIQz/5yGp+n5trn9pElfQO2cRBq8LFpf1l+U
    P7EKjFmlOq+Gs/fF98/dP3DfniSd78LQPq5vp8RL8nr/o2i7jkAQ33m4f1wOBWd+
    cZovrKXYlXiR+Bf7m2hpZo+/sAzhd7LmAD0l09kABRG0JVN1U0UgU2VjdXJpdHkg
    VGVhbSA8c2VjdXJpdHlAc3VzZS5kZT6JARUDBRA24S1H5Fiyh7HKPEUBAVcOB/9b
    yHYji1/+4Xc2GhvXK0FSJN0MGgeXgW47yxDL7gmR4mNgjlIOUHZj0PEpVjWepOJ7
    tQS3L9oP6cpj1Fj/XxuLbkp5VCQ61hpt54coQAvYrnT9rtWEGN+xmwejT1WmYmDJ
    xG+EGBXKr+XP69oIUl1E2JO3rXeklulgjqRKos4cdXKgyjWZ7CP9V9daRXDtje63
    Om8gwSdU/nCvhdRIWp/Vwbf7Ia8iZr9OJ5YuQl0DBG4qmGDDrvImgPAFkYFzwlqo
    choXFQ9y0YVCV41DnR+GYhwl2qBd81T8aXhihEGPIgaw3g8gd8B5o6mPVgl+nJqI
    BkEYGBusiag2pS6qwznZiQEVAwUQNuEtBHey5gA9JdPZAQFtOAf+KVh939b0J94u
    v/kpg4xs1LthlhquhbHcKNoVTNspugiC3qMPyvSX4XcBr2PC0cVkS4Z9PY9iCfT+
    x9WM96g39dAF+le2CCx7XISk9XXJ4ApEy5g4AuK7NYgAJd39PPbERgWnxjxir9g0
    Ix30dS30bW39D+3NPU5Ho9TD/B7UDFvYT5AWHl3MGwo3a1RhTs6sfgL7yQ3U+mvq
    MkTExZb5mfN1FeaYKMopoI4VpzNVeGxQWIz67VjJHVyUlF20ekOz4kWVgsxkc8G2
    saqZd6yv2EwqYTi8BDAduweP33KrQc4KDDommQNDOXxaKOeCoESIdM4p7Esdjq1o
    L0oixF12Cg==
    =pIeS
    - -----END PGP PUBLIC KEY BLOCK-----
    
    -----BEGIN PGP SIGNATURE-----
    Version: 2.6.3i
    Charset: noconv
    
    iQEVAwUBOwPjCney5gA9JdPZAQHnowf/Z4oGIAWzSdnXcxhoUot4UABzH8X2rUfD
    9caheLboumIR+gJ8XwuJzxkgl06wfZ6+4SF+WyKovEzJNYN2NjrZOtVYVukc/h9l
    txnJ5MQ0vtllge45eBGI5r+MZnfk5l107U/Az5/7hZuw7bUTZP991HCPHfnlUDAd
    YErqQ1KkSg2waTd5dqUjjSXGNjHP8dXG4RAwzqEXQ7PyQmVfwh6YQ0JpJLqXSKM/
    Fx9sRaQXVX+Ujx7GI4TA/nPt7SIrLJhBKloV/En2tjHYcq6HiPiyO0a3jwD70wBf
    9J3FYdPyWrarwKRqETBDfy+d7mWxgYmisPcZTeGgmK4ekakUSZfcEg==
    =uQx9
    -----END PGP SIGNATURE-----
    



    This archive was generated by hypermail 2b30 : Thu May 17 2001 - 15:36:14 PDT