Bug 862598 (CVE-2012-4464)

Summary: CVE-2012-4464 ruby 1.9.3: Possibility to bypass Ruby's $SAFE (level 4) semantics
Product: [Other] Security Response Reporter: Jan Lieskovsky <jlieskov>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: bkabrda, jrusnack, mfisher, mmcgrath, mmorsi, mtasaka, tagoh, vanmeeuwen+fedora, vondruch
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: ruby 1.9.3p286 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-10-28 21:18:03 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: 839530, 862907, 863315, 904020    
Bug Blocks: 767033    

Description Jan Lieskovsky 2012-10-03 10:59:07 UTC
Originally, Common Vulnerabilities and Exposures assigned an identifier CVE-2011-1005 to the following vulnerability:

The safe-level feature in Ruby 1.8.6 through 1.8.6-420, 1.8.7 through 1.8.7-330, and 1.8.8dev allows context-dependent attackers to modify strings via the Exception#to_s method, as demonstrated by changing an intended pathname.

Later it was reported:
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689075
[2] http://www.openwall.com/lists/oss-security/2012/10/02/4

that upstream ruby 1.9.1 and ruby 1.9.3 versions are also vulnerable to this flaw.

Relevant upstream patch:
[3] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=37068

Comment 1 Jan Lieskovsky 2012-10-03 11:01:16 UTC
Upstream public reproducer for the CVE-2011-1005 issue (from:
http://www.ruby-lang.org/en/news/2011/02/18/exception-methods-can-bypass-safe/)

$secret_path = "foo"

proc do
    $SAFE = 4
    Exception.new($secret_path).to_s
    $secret_path.replace "/etc/passwd"
end.call

open($secret_path) do
  ...
end

which can be used to test presence of the issue.

Comment 2 Jan Lieskovsky 2012-10-03 11:05:24 UTC
This issue did NOT affect the versions of the ruby package, as shipped with Red Hat Enterprise Linux 5 and 6 (refer to bug #678920 for further information about this flaw in ruby 1.8.x and earlier versions).

--

This issue did NOT affect the version of the ruby package, as shipped with Fedora release of 16.

--

This issue affects the version of the ruby package, as shipped with Fedora 17. Please schedule an update.

Comment 3 Vincent Danen 2012-10-03 20:49:51 UTC
Based on comments reported to oss-sec, there are actually two issues here:

1) CVE-2011-1005 was never reported to affect ruby 1.9.x, but it was later introduced (or re-introduced) on trunk, via r29456.  So ruby 1.9.3-p0 and later is affected by the same flaw that was assigned CVE-2011-1005 in 1.8.x (it's been assigned the name CVE-2012-4464)

2) The name_err_mesg_to_str() function has a similar flaw, and it affects both 1.8.x and 1.9.3-p0 and later.  This was assigned the name CVE-2012-4466.

CVE assignments and explanations:

http://seclists.org/oss-sec/2012/q4/10
http://seclists.org/oss-sec/2012/q4/13

We'll keep this bug for CVE-2012-4464, and bug #862906 for CVE-2012-4466.

Comment 4 Vincent Danen 2012-10-03 20:53:14 UTC
Statement:

Not vulnerable. This issue did not affect the versions of ruby as shipped with Red Hat Enterprise Linux 5 and 6 as they did not provide version 1.9.x, which is the vulnerable version of ruby.

Comment 5 Jan Lieskovsky 2012-10-04 08:57:01 UTC
Created ruby tracking bugs for this issue

Affects: fedora-all [bug 862907]

Comment 8 errata-xmlrpc 2013-02-28 19:08:12 UTC
This issue has been addressed in following products:

  RHEL 6 Version of OpenShift Enterprise

Via RHSA-2013:0582 https://rhn.redhat.com/errata/RHSA-2013-0582.html