Articles / SuSE: New Linux kernel pack…

SuSE: New Linux kernel packages fix remote code execution

The SUSE Linux Enterprise 11 Service Pack 1 kernel was updated to 2.6.32.29 and fixes various bugs and security issues. The ax25_getname function did not initialize a certain structure, which allowed local users to obtain potentially sensitive information from kernel stack memory by reading a copy of this structure. The Linux kernel did not properly initialize certain structure members, which allowed local users to obtain potentially sensitive information from kernel stack memory by leveraging the CAP_NET_RAW capability to read copies of the applicable structures. The get_name function did not initialize a certain structure, which allowed local users to obtain potentially sensitive information from kernel stack memory by reading a copy of this structure.

The sctp_auth_asoc_get_hmac function did not properly validate the hmac_ids array of an SCTP peer, which allowed remote attackers to cause a denial of service (memory corruption and panic) via a crafted value in the last element of this array. A stack memory information leak in the xfs FSGEOMETRY_V1 ioctl was fixed. Multiple buffer overflows in the caiaq Native Instruments USB audio functionality might have allowed attackers to cause a denial of service or possibly have unspecified other impact via a long USB device name.

The task_show_regs function on the s390 platform allowed local users to obtain the values of the registers of an arbitrary process by reading a status file under /proc/. The xfs implementation did not look up inode allocation btrees before reading inode buffers, which allowed remote authenticated users to read unlinked files, or read or overwrite disk blocks that are currently assigned to an active file but were previously assigned to an unlinked file, by accessing a stale NFS file handle. The uart_get_count function in did not properly initialize a certain structure member, which allowed local users to obtain potentially sensitive information from kernel stack memory via a TIOCGICOUNT ioctl call.

The rs_ioctl function did not properly initialize a certain structure member, which allowed local users to obtain potentially sensitive information from kernel stack memory via a TIOCGICOUNT ioctl call. The ntty_ioctl_tiocgicount function did not properly initialize a certain structure member, which allowed local users to obtain potentially sensitive information from kernel stack memory via a TIOCGICOUNT ioctl call. The Linux kernel did not enable the OOM Killer to assess use of stack memory by arrays representing the (1) arguments and (2) environment, which allows local users to cause a denial of service (memory consumption) via a crafted exec system call, aka an OOM dodging issue.

The blk_rq_map_user_iov function allowed local users to cause a denial of service (panic) via a zero-length I/O request in a device ioctl to a SCSI device, related to an unaligned map. An integer underflow in the irda_getsockopt function on platforms other than x86 allowed local users to obtain potentially sensitive information from kernel heap memory via an IRLMP_ENUMDEVICES getsockopt call. The aun_incoming function, when Econet is enabled, allows remote attackers to cause a denial of service (NULL pointer dereference and OOPS) by sending an Acorn Universal Networking (AUN) packet over UDP.

The backend driver in Xen 3.x allowed guest OS users to cause a denial of service via a kernel thread leak, which prevented the device and guest OS from being shut down or create a zombie domain, causing a hang in zenwatch, or preventing unspecified xm commands from working properly. The install_special_mapping function did not make an expected security_file_mmap function call, which allows local users to bypass intended mmap_min_addr restrictions and possibly conduct NULL pointer dereference attacks via a crafted assembly-language application. Fixed a verify_ioctl overflow in “cuse” in the fuse filesystem.

Race condition in the sctp_icmp_proto_unreachable function allowed remote attackers to cause a denial of service (panic) via an ICMP unreachable message to a socket that is already locked by a user. The load_mixer_volumes function in the OSS sound subsystem incorrectly expected that a certain name field ends with a ‘0’ character, which allowed local users to conduct buffer overflow attacks and gain privileges, or possibly obtain sensitive information from kernel memory.

Updated packages are available from download.opensuse.org.

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

______________________________________________________________________________

SUSE Security Announcement

Package: kernel
Announcement ID: SUSE-SA:2011:012
Date: Tue, 08 Mar 2011 15:00:00 +0000
Affected Products: SUSE Linux Enterprise High Availability Extension 11 SP1
SUSE Linux Enterprise Desktop 11 SP1
SUSE Linux Enterprise Server 11 SP1
Vulnerability Type: remote denial of service, local privilege escalation
CVSS v2 Base Score: 8.3 (AV:A/AC:L/Au:N/C:C/I:C/A:C)
SUSE Default Package: yes
Cross-References: CVE-2010-2943, CVE-2010-3699, CVE-2010-3705
CVE-2010-3858, CVE-2010-3875, CVE-2010-3876
CVE-2010-3877, CVE-2010-4075, CVE-2010-4076
CVE-2010-4077, CVE-2010-4163, CVE-2010-4243
CVE-2010-4342, CVE-2010-4346, CVE-2010-4526
CVE-2010-4527, CVE-2010-4529, CVE-2010-4650
CVE-2010-4668, CVE-2011-0006, CVE-2011-0710
CVE-2011-0711, CVE-2011-0712

Content of This Advisory:
1) Security Vulnerability Resolved:
Linux kernel security update
Problem Description
2) Solution or Work-Around
3) Special Instructions and Notes
4) Package Location and Checksums
5) Pending Vulnerabilities, Solutions, and Work-Arounds:
See SUSE Security Summary Report.
6) Authenticity Verification and Additional Information

______________________________________________________________________________

1) Problem Description and Brief Discussion

The SUSE Linux Enterprise 11 Service Pack 1 kernel was updated to
2.6.32.29 and fixes various bugs and security issues.

CVE-2010-3875: The ax25_getname function in net/ax25/af_ax25.c in the
Linux kernel did not initialize a certain structure, which allowed
local users to obtain potentially sensitive information from kernel
stack memory by reading a copy of this structure.

CVE-2010-3876: net/packet/af_packet.c in the Linux kernel did not
properly initialize certain structure members, which allowed local
users to obtain potentially sensitive information from kernel stack
memory by leveraging the CAP_NET_RAW capability to read copies of
the applicable structures.

CVE-2010-3877: The get_name function in net/tipc/socket.c in the
Linux kernel did not initialize a certain structure, which allowed
local users to obtain potentially sensitive information from kernel
stack memory by reading a copy of this structure.

CVE-2010-3705: The sctp_auth_asoc_get_hmac function in net/sctp/auth.c
in the Linux kernel did not properly validate the hmac_ids array of an
SCTP peer, which allowed remote attackers to cause a denial of service
(memory corruption and panic) via a crafted value in the last element
of this array.

CVE-2011-0711: A stack memory information leak in the xfs FSGEOMETRY_V1
ioctl was fixed.

CVE-2011-0712: Multiple buffer overflows in the caiaq Native
Instruments USB audio functionality in the Linux kernel might have
allowed attackers to cause a denial of service or possibly have
unspecified other impact via a long USB device name, related to (1)
the snd_usb_caiaq_audio_init function in sound/usb/caiaq/audio.c and
(2) the snd_usb_caiaq_midi_init function in sound/usb/caiaq/midi.c.

CVE-2011-0710: The task_show_regs function in arch/s390/kernel/traps.c
in the Linux kernel on the s390 platform allowed local users to obtain
the values of the registers of an arbitrary process by reading a
status file under /proc/.

CVE-2010-2943: The xfs implementation in the Linux kernel did not
look up inode allocation btrees before reading inode buffers, which
allowed remote authenticated users to read unlinked files, or read
or overwrite disk blocks that are currently assigned to an active
file but were previously assigned to an unlinked file, by accessing
a stale NFS file handle.

CVE-2010-4075: The uart_get_count function in
drivers/serial/serial_core.c in the Linux kernel did not properly
initialize a certain structure member, which allowed local users to
obtain potentially sensitive information from kernel stack memory
via a TIOCGICOUNT ioctl call.

CVE-2010-4076: The rs_ioctl function in drivers/char/amiserial.c in the
Linux kernel did not properly initialize a certain structure member,
which allowed local users to obtain potentially sensitive information
from kernel stack memory via a TIOCGICOUNT ioctl call.

CVE-2010-4077: The ntty_ioctl_tiocgicount function in
drivers/char/nozomi.c in the Linux kernel did not properly initialize
a certain structure member, which allowed local users to obtain
potentially sensitive information from kernel stack memory via a
TIOCGICOUNT ioctl call.

CVE-2010-4243: fs/exec.c in the Linux kernel did not enable the OOM
Killer to assess use of stack memory by arrays representing the (1)
arguments and (2) environment, which allows local users to cause a
denial of service (memory consumption) via a crafted exec system call,
aka an OOM dodging issue, a related issue to CVE-2010-3858.

CVE-2010-4668: The blk_rq_map_user_iov function in block/blk-map.c
in the Linux kernel allowed local users to cause a denial of service
(panic) via a zero-length I/O request in a device ioctl to a SCSI
device, related to an unaligned map. NOTE: this vulnerability exists
because of an incomplete fix for CVE-2010-4163.

CVE-2010-4529: Integer underflow in the irda_getsockopt function in
net/irda/af_irda.c in the Linux kernel on platforms other than x86
allowed local users to obtain potentially sensitive information from
kernel heap memory via an IRLMP_ENUMDEVICES getsockopt call.

CVE-2010-4342: The aun_incoming function in net/econet/af_econet.c
in the Linux kernel, when Econet is enabled, allows remote attackers
to cause a denial of service (NULL pointer dereference and OOPS)
by sending an Acorn Universal Networking (AUN) packet over UDP.

CVE-2010-3699: The backend driver in Xen 3.x allowed guest OS users
to cause a denial of service via a kernel thread leak, which prevented
the device and guest OS from being shut down or create a zombie domain,
causing a hang in zenwatch, or preventing unspecified xm commands from
working properly, related to (1) netback, (2) blkback, or (3) blktap.

CVE-2010-4346: The install_special_mapping function in mm/mmap.c in the
Linux kernel did not make an expected security_file_mmap function call,
which allows local users to bypass intended mmap_min_addr restrictions
and possibly conduct NULL pointer dereference attacks via a crafted
assembly-language application.

CVE-2010-4650: Fixed a verify_ioctl overflow in "cuse" in the fuse
filesystem. The code should only be called by root users though.

CVE-2010-4526: Race condition in the sctp_icmp_proto_unreachable
function in net/sctp/input.c in the Linux kernel allowed remote
attackers to cause a denial of service (panic) via an ICMP unreachable
message to a socket that is already locked by a user, which causes
the socket to be freed and triggers list corruption, related to the
sctp_wait_for_connect function.

CVE-2010-4527: The load_mixer_volumes function in sound/oss/soundcard.c
in the OSS sound subsystem in the Linux kernel incorrectly expected
that a certain name field ends with a '0' character, which allowed
local users to conduct buffer overflow attacks and gain privileges,
or possibly obtain sensitive information from kernel memory, via a
SOUND_MIXER_SETLEVELS ioctl call.

CVE-2011-0006: Fixed a LSM bug in IMA (Integrity Measuring Architecture).
IMA is not enabled in SUSE kernels, so we were not affected.

2) Solution or Work-Around

There is no known workaround, please install the update packages.

3) Special Instructions and Notes

Please reboot the machine after installing the update.

4) Package Location and Checksums

The preferred method for installing security updates is to use the YaST
"Online Update" module or the "zypper" commandline tool. The package and
patch management stack will detect which updates are required and
automatically perform the necessary steps to verify and install them.

Alternatively, download the update packages for your distribution manually
and verify their integrity by the methods listed in Section 6 of this
announcement. Then install the packages using the command

rpm -Fhv <file.rpm>

to apply the update, replacing <file.rpm> with the filename of the
downloaded RPM package.

Our maintenance customers are notified individually. The packages are
offered for installation from the maintenance web:

SUSE Linux Enterprise Server 11 SP1
http://download.novell.com/patch/finder/?keywords=b296065a76246d5eb3b84a54249a6ab9
http://download.novell.com/patch/finder/?keywords=37a20332a3477c6790648da1bb44afd0
http://download.novell.com/patch/finder/?keywords=40fa968a3fed1c5ae479db978466dc9b
http://download.novell.com/patch/finder/?keywords=a980dec7ad0f6081c9c24832e0e59c6f
http://download.novell.com/patch/finder/?keywords=abeba8d6c807360502c7dfc6ca6f2b4d

SUSE Linux Enterprise Desktop 11 SP1
http://download.novell.com/patch/finder/?keywords=b296065a76246d5eb3b84a54249a6ab9
http://download.novell.com/patch/finder/?keywords=abeba8d6c807360502c7dfc6ca6f2b4d

SUSE Linux Enterprise High Availability Extension 11 SP1
http://download.novell.com/patch/finder/?keywords=b296065a76246d5eb3b84a54249a6ab9
http://download.novell.com/patch/finder/?keywords=37a20332a3477c6790648da1bb44afd0
http://download.novell.com/patch/finder/?keywords=40fa968a3fed1c5ae479db978466dc9b
http://download.novell.com/patch/finder/?keywords=a980dec7ad0f6081c9c24832e0e59c6f
http://download.novell.com/patch/finder/?keywords=abeba8d6c807360502c7dfc6ca6f2b4d

______________________________________________________________________________

5) Pending Vulnerabilities, Solutions, and Work-Arounds:

See SUSE Security Summary Report.
______________________________________________________________________________

6) Authenticity Verification and Additional Information

- Announcement authenticity verification:

SUSE security announcements are published via mailing lists and on Web
sites. The authenticity and integrity of a SUSE security announcement is
guaranteed by a cryptographic signature in each announcement. All SUSE
security announcements are published with a valid signature.

To verify the signature of the announcement, save it as text into a file
and run the command

gpg --verify <file>

replacing <file> with the name of the file where you saved the
announcement. The output for a valid signature looks like:

gpg: Signature made <DATE> using RSA key ID 3D25D3D9
gpg: Good signature from "SuSE Security Team <security@suse.de>"

where <DATE> is replaced by the date the document was signed.

If the security team's key is not contained in your key ring, you can
import it from the first installation CD. To import the key, use the
command

gpg --import gpg-pubkey-3d25d3d9-36e12d04.asc

- Package authenticity verification:

SUSE update packages are available on many mirror FTP servers all over the
world. While this service is considered valuable and important to the free
and open source software community, the authenticity and the integrity of
a package needs to be verified to ensure that it has not been tampered
with.

The internal rpm package signatures provide an easy way to verify the
authenticity of an RPM package. Use the command

rpm -v --checksig <file.rpm>

to verify the signature of the package, replacing <file.rpm> with the
filename of the RPM package downloaded. The package is unmodified if it
contains a valid signature from build@suse.de with the key ID 9C800ACA.

This key is automatically imported into the RPM database (on
RPMv4-based distributions) and the gpg key ring of 'root' during
installation. You can also find it on the first installation CD and at
the end of this announcement.

- SUSE runs two security mailing lists to which any interested party may
subscribe:

opensuse-security@opensuse.org
- General Linux and SUSE security discussion.
All SUSE security announcements are sent to this list.
To subscribe, send an e-mail to
<opensuse-security+subscribe@opensuse.org>.

opensuse-security-announce@opensuse.org
- SUSE's announce-only mailing list.
Only SUSE's security announcements are sent to this list.
To subscribe, send an e-mail to
<opensuse-security-announce+subscribe@opensuse.org>.

=====================================================================
SUSE's security contact is <security@suse.com> or <security@suse.de>.
The <security@suse.de> public key is listed below.
=====================================================================
______________________________________________________________________________

The information in this advisory may be distributed or reproduced,
provided that the advisory is not modified in any way. In particular, the
clear text signature should show proof of the authenticity of the text.

SUSE Linux Products GmbH provides no warranties of any kind whatsoever
with respect to the information contained in this security advisory.

Type Bits/KeyID Date User ID
pub 2048R/3D25D3D9 1999-03-06 SuSE Security Team <security@suse.de>
pub 1024D/9C800ACA 2000-10-19 SuSE Package Signing Key <build@suse.de>

- -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

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
=ypVs
- -----END PGP PUBLIC KEY BLOCK-----

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (GNU/Linux)

iQEVAwUBTXZHZHey5gA9JdPZAQLm2wf/Tx1ewHvzFp/3ggdCXZzwma+fyzXGqQxN
Q6gzWEGGrWJC2i6tlvbMliHK3CLq8nFTClxihi/InrXPJScKl2WDyL+79PwY0VYj
7ajLiplxZ65Trw46MijyBrhtcUIyfHSSsDej5agl3e+uvfgaqhYsEkTulgYRT/WK
zz40/53i7guh6PeXAJDg9GYomZxiHBNglC6y6E+5HS4YANuVV6M4SWVF90gxvHbo
en+JKrhXN5s2GEM7N+tbA9TEKmIaDPxnj4Tkpzup7IMY6tobpoEP1Jljtb09PWvo
ikLOv/uDHVlfHjTuYCc+KMpZNX4xrNNEU8LNIQHBFdft33oeUdpj9A==
=BQ3q
-----END PGP SIGNATURE-----
Screenshot

Project Spotlight

Kigo Video Converter Ultimate for Mac

A tool for converting and editing videos.

Screenshot

Project Spotlight

Kid3

An efficient tagger for MP3, Ogg/Vorbis, and FLAC files.