First published: Fri Jul 27 2012(Updated: )
tenderlove reports: DoS Vulnerability in authenticate_or_request_with_http_digest There is a DoS vulnerability in Action Pack digest authentication handling in Rails. This vulnerability has been assigned the CVE identifier <a href="https://access.redhat.com/security/cve/CVE-2012-3424">CVE-2012-3424</a>. Versions Affected: 3.x. Not affected: 2.3.5 - 2.3.14 Fixed Versions: 3.0.16, 3.1.7, 3.2.7 Impact ------ All users using Digest Authentication support in Rails should upgrade immediately. Impacted code uses any of the `with_http_digest` controller helper methods. For example: class MyController < ApplicationController def index authenticate_or_request_with_http_digest(REALM) do |uname| # ... end end end Releases -------- The 3.0.16, 3.1.7 & 3.2.7 releases are available at the normal locations. Workarounds ----------- There are no feasible workarounds for this issue. Patches ------- To aid users who aren't able to upgrade immediately we have provided patches for the two supported release series. They are in git-am format and consist of a single changeset. * 3-0-digest_auth_dos.patch - Patch for 3.0 series * 3-1-digest_auth_dos.patch - Patch for 3.1 series * 3-2-digest_auth_dos.patch - Patch for 3.2 series Please note that only the 3.1.x and 3.2.x series are supported at present. Users of earlier unsupported releases are advised to upgrade as soon as possible as we cannot guarantee the continued availability of security fixes for unsupported releases. Credits ------- Thanks to Charlie Somerville for reporting this issue! References: <a href="http://weblog.rubyonrails.org/2012/7/26/ann-rails-3-2-7-has-been-released/">http://weblog.rubyonrails.org/2012/7/26/ann-rails-3-2-7-has-been-released/</a> <a href="https://groups.google.com/forum/?fromgroups#!topic/rubyonrails-security/vxJjrc15qYM">https://groups.google.com/forum/?fromgroups#!topic/rubyonrails-security/vxJjrc15qYM</a> diff --git a/actionpack/lib/action_controller/metal/http_authentication.rb b/actionpack/lib/action_controller/metal/http_authentication.rb index 9f2f547..fe4ab65 100644 --- a/actionpack/lib/action_controller/metal/http_authentication.rb +++ b/actionpack/lib/action_controller/metal/http_authentication.rb @@ -227,9 +227,9 @@ module ActionController end def decode_credentials(header) - Hash[header.to_s.gsub(/^Digest\s+/,'').split(',').map do |pair| + HashWithIndifferentAccess[header.to_s.gsub(/^Digest\s+/,'').split(',').map do |pair| key, value = pair.split('=', 2) - [key.strip.to_sym, value.to_s.gsub(/^"|"$/,'').gsub(/'/, '')] + [key.strip, value.to_s.gsub(/^"|"$/,'').delete('\'')] end] end
Credit: secalert@redhat.com secalert@redhat.com
Affected Software | Affected Version | How to fix |
---|---|---|
redhat/rubygem-actionpack | <3.0.16 | 3.0.16 |
redhat/rubygem-actionpack | <3.1.7 | 3.1.7 |
redhat/rubygem-actionpack | <3.2.7 | 3.2.7 |
rubygems/actionpack | <2.3.5 | 2.3.5 |
rubygems/actionpack | >=3.0.0.beta<3.0.16 | 3.0.16 |
rubygems/actionpack | >=3.2.0<3.2.7 | 3.2.7 |
rubygems/actionpack | >=3.1.0<3.1.7 | 3.1.7 |
rubyonrails Rails | =3.0.0 | |
rubyonrails Rails | =3.0.0-beta | |
rubyonrails Rails | =3.0.0-beta2 | |
rubyonrails Rails | =3.0.0-beta3 | |
rubyonrails Rails | =3.0.0-beta4 | |
rubyonrails Rails | =3.0.0-rc | |
rubyonrails Rails | =3.0.0-rc2 | |
rubyonrails Rails | =3.0.1 | |
rubyonrails Rails | =3.0.1-pre | |
rubyonrails Rails | =3.0.2 | |
rubyonrails Rails | =3.0.2-pre | |
rubyonrails Rails | =3.0.3 | |
rubyonrails Rails | =3.0.4-rc1 | |
rubyonrails Rails | =3.0.5 | |
rubyonrails Rails | =3.0.5-rc1 | |
rubyonrails Rails | =3.0.6 | |
rubyonrails Rails | =3.0.6-rc1 | |
rubyonrails Rails | =3.0.6-rc2 | |
rubyonrails Rails | =3.0.7 | |
rubyonrails Rails | =3.0.7-rc1 | |
rubyonrails Rails | =3.0.7-rc2 | |
rubyonrails Rails | =3.0.8 | |
rubyonrails Rails | =3.0.8-rc1 | |
rubyonrails Rails | =3.0.8-rc2 | |
rubyonrails Rails | =3.0.8-rc3 | |
rubyonrails Rails | =3.0.8-rc4 | |
rubyonrails Rails | =3.0.9 | |
rubyonrails Rails | =3.0.9-rc1 | |
rubyonrails Rails | =3.0.9-rc2 | |
rubyonrails Rails | =3.0.9-rc3 | |
rubyonrails Rails | =3.0.9-rc4 | |
rubyonrails Rails | =3.0.9-rc5 | |
rubyonrails Rails | =3.0.10 | |
rubyonrails Rails | =3.0.10-rc1 | |
rubyonrails Rails | =3.0.11 | |
rubyonrails Rails | =3.0.12 | |
rubyonrails Rails | =3.0.12-rc1 | |
rubyonrails Rails | =3.0.13 | |
rubyonrails Rails | =3.0.13-rc1 | |
rubyonrails Rails | =3.0.14 | |
Ruby on Rails | =3.0.4 | |
rubyonrails Rails | =3.1.0 | |
rubyonrails Rails | =3.1.0-beta1 | |
rubyonrails Rails | =3.1.0-rc1 | |
rubyonrails Rails | =3.1.0-rc2 | |
rubyonrails Rails | =3.1.0-rc3 | |
rubyonrails Rails | =3.1.0-rc4 | |
rubyonrails Rails | =3.1.0-rc5 | |
rubyonrails Rails | =3.1.0-rc6 | |
rubyonrails Rails | =3.1.0-rc7 | |
rubyonrails Rails | =3.1.0-rc8 | |
rubyonrails Rails | =3.1.1 | |
rubyonrails Rails | =3.1.1-rc1 | |
rubyonrails Rails | =3.1.1-rc2 | |
rubyonrails Rails | =3.1.1-rc3 | |
rubyonrails Rails | =3.1.2 | |
rubyonrails Rails | =3.1.2-rc1 | |
rubyonrails Rails | =3.1.2-rc2 | |
rubyonrails Rails | =3.1.3 | |
rubyonrails Rails | =3.1.4 | |
rubyonrails Rails | =3.1.4-rc1 | |
rubyonrails Rails | =3.1.5 | |
rubyonrails Rails | =3.1.5-rc1 | |
rubyonrails Rails | =3.1.6 | |
rubyonrails Rails | =3.2.0 | |
rubyonrails Rails | =3.2.0-rc1 | |
rubyonrails Rails | =3.2.0-rc2 | |
rubyonrails Rails | =3.2.1 | |
rubyonrails Rails | =3.2.2 | |
rubyonrails Rails | =3.2.2-rc1 | |
rubyonrails Rails | =3.2.3 | |
rubyonrails Rails | =3.2.3-rc1 | |
rubyonrails Rails | =3.2.3-rc2 | |
rubyonrails Rails | =3.2.4 | |
rubyonrails Rails | =3.2.4-rc1 | |
rubyonrails Rails | =3.2.5 | |
rubyonrails Rails | =3.2.6 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
CVE-2012-3424 is classified as a Denial of Service (DoS) vulnerability affecting Ruby on Rails.
To remediate CVE-2012-3424, upgrade to rubygem-actionpack version 3.0.16, 3.1.7, or 3.2.7, or any higher version.
CVE-2012-3424 affects Ruby on Rails versions prior to 3.0.16, 3.1.7, and 3.2.7.
Yes, CVE-2012-3424 specifically impacts the digest authentication handling in Action Pack.
CVE-2012-3424 targets the authentication process within Ruby on Rails applications, leading to potential service disruption.