Bug 517830 (CVE-2009-2695)

Summary: CVE-2009-2695 kernel: SELinux and mmap_min_addr
Product: [Other] Security Response Reporter: Eugene Teo (Security Response) <eteo>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: bhu, dhoward, eparis, esammons, jmorris, jpirko, jskrabal, lgoncalv, lwang, maurizio, mjc, vadim.ratinov, williams
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-12-21 18:07:56 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 511143, 518141, 518142, 518143, 531703, 531718, 537285    
Bug Blocks:    

Description Eugene Teo (Security Response) 2009-08-17 12:28:34 UTC
Description of problem:
Dan Walsh's blog post mentioned in the previous comment details selinux-policy
part of the issue tracked via bug #512284.  As noted in the the blog,
selinux-policy provides a boolean - allow_unconfined_mmap_low - which controls
whether mmap_min_addr restriction is applied to the process.  This boolean,
however, did not work as expected, as unconfined_t domain (default domain for
logged-in unprivileged users) was always permitted to map low memory pages
regardless of the boolean setting.  This problem with the boolean is being
fixed and the fix will be included in future selinux-policy updates in RHEL5
and Fedora (see Dan's blog for NVRs).

Few notes specific to Red Hat Enterprise Linux 5:
Support for mmap_min_addr sysctl was not included in the GA version of RHEL5. 
It was only added in kernel update in 5.2 (it first appeared upstream in
2.6.24).  selinux-policy was, to avoid breaking applications needing low memory
pages mapping on upgrade from 5.1 to 5.2, configured to allow mmap_zero in
unconfined domains and only disallow it in confined domains (e.g. various
network facing services).  In 5.3, allow_unconfined_mmap_low boolean was added,
but it's default value for targeted policy was changed to on, i.e. allowing
mmap_zero in all unconfined domains by default.  This default boolean value is
planned to remain unchanged in 5.4.

It should also be noted, that even with allow_unconfined_mmap_low boolean set
to off, it is still possible for unconfined_t user to transition to other
domain that is permitted to mmap_zero, as details in the Dan's blog post. 
Upstream discussion on how to best address this issue is still ongoing.

Eric's proposed patches moving mmap_min_addr check out of security were
submitted.  If they are accepted upstream, mmap_min_addr will be checked before
LSM hooks are called.  Security modules will only be consulted if mmap_min_addr
check has passed (e.g. when mmap_min_addr is 0), so SELinux may still be able
to restrict mapping of the low pages / zero page for confined domains and
permit mapping in unconfined, even when mmap_min_addr is 0.

Eric's patches with further discussion:
http://patchwork.kernel.org/patch/36540/
http://patchwork.kernel.org/patch/36539/

Updated version:
http://patchwork.kernel.org/patch/36650/
http://patchwork.kernel.org/patch/36649/

Further discussion of the proposed change:
http://thread.gmane.org/gmane.linux.kernel.lsm/9075

mmap_min_addr on SELinux and non-SELinux systems
http://eparis.livejournal.com/606.html

Confining the unconfined. Oxymoron?
http://danwalsh.livejournal.com/30084.html

Kbase: http://kbase.redhat.com/faq/docs/DOC-18042

Comment 1 Mark J. Cox 2009-08-17 15:33:10 UTC
CVE-2009-2695: A system with SELinux enabled with the default targeted policy is more permissive for unconfined domains, allowing local users to map low memory areas even if mmap_min_addr protection is enabled.  This could allow the exploitation of NULL pointer dereference flaws.

Comment 11 Fedora Update System 2009-08-27 02:19:16 UTC
kernel-2.6.29.6-217.2.16.fc11 has been pushed to the Fedora 11 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 12 Mark J. Cox 2009-09-02 11:41:57 UTC
See also http://kbase.redhat.com/faq/docs/DOC-18042

Comment 15 errata-xmlrpc 2009-11-03 18:21:14 UTC
This issue has been addressed in following products:

  MRG for RHEL-5

Via RHSA-2009:1540 https://rhn.redhat.com/errata/RHSA-2009-1540.html

Comment 16 errata-xmlrpc 2009-11-03 19:33:42 UTC
This issue has been addressed in following products:

  Red Hat Enterprise Linux 5

Via RHSA-2009:1548 https://rhn.redhat.com/errata/RHSA-2009-1548.html

Comment 18 errata-xmlrpc 2009-11-17 15:23:34 UTC
This issue has been addressed in following products:

  Red Hat Enterprise Linux 5.3.Z - Server Only

Via RHSA-2009:1587 https://rhn.redhat.com/errata/RHSA-2009-1587.html

Comment 19 errata-xmlrpc 2009-12-15 17:02:08 UTC
This issue has been addressed in following products:

  Red Hat Enterprise Linux 5.2 Z Stream

Via RHSA-2009:1672 https://rhn.redhat.com/errata/RHSA-2009-1672.html