Bug 245773 (CVE-2007-2875)

Summary: CVE-2007-2875 cpuset information leak
Product: [Other] Security Response Reporter: Marcel Holtmann <holtmann>
Component: vulnerabilityAssignee: Don Howard <dhoward>
Status: CLOSED ERRATA QA Contact: Martin Jenner <mjenner>
Severity: medium Docs Contact:
Priority: low    
Version: unspecifiedCC: eteo, qcai, security-response-team
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: RHSA-2007-0705 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-09-13 09:13:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Marcel Holtmann 2007-06-26 17:16:40 UTC
From iDefense:

Local exploitation of an information disclosure vulnerability within the
Linux Kernel allows attackers to obtain sensitive information from
kernel memory.

This vulnerability specifically exists in the "cpuset_tasks_read"
function. This function is responsible for supplying user-land
processes with data when they read from the /dev/cpuset/tasks file. The
code excerpt below shows the problem area.

  1754          if (*ppos + nbytes > ctr->bufsz)
  1755                  nbytes = ctr->bufsz - *ppos;
  1756          if (copy_to_user(buf, ctr->buf + *ppos, nbytes))

By reading from an offset (*ppos) larger than the contents of the file,
an attacker can cause an integer underflow to occur in the subtraction
on line 1755. This will result in the "copy_to_user" function on line
1756 to be called with a memory address located at a lower address than
the start of the intended buffer. This memory could potentially contain
sensitive information such as security tokens or passwords.

Exploitation of this vulnerability allows attackers to obtain sensitive
information from kernel memory.

In order to exploit this vulnerability, an attacker would need access to
open the /dev/cpuset/tasks file. It is important to note that this file
does not exist unless the cpuset file system has been mounted.
Additionally, this functionality is not included by default in a
vanilla kernel build.

Furthermore, because of checks at the VFS layer and in the
'copy_to_user()' function, an attacker cannot use arbitrary values.
However, on 32-bit systems it is easily exploitable.

Comment 1 Don Howard 2007-08-29 19:29:54 UTC
A patch for this issue has been included in build 2.6.18-8.1.9.

Comment 4 Red Hat Bugzilla 2007-09-13 09:13:17 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2007-0705.html