Moderate severityNVD Advisory· Published Mar 1, 2013· Updated Apr 29, 2026
CVE-2012-6109
CVE-2012-6109
Description
lib/rack/multipart.rb in Rack before 1.1.4, 1.2.x before 1.2.6, 1.3.x before 1.3.7, and 1.4.x before 1.4.2 uses an incorrect regular expression, which allows remote attackers to cause a denial of service (infinite loop) via a crafted Content-Disposion header.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
rackRubyGems | < 1.1.4 | 1.1.4 |
rackRubyGems | >= 1.2.0, < 1.2.6 | 1.2.6 |
rackRubyGems | >= 1.3.0, < 1.3.7 | 1.3.7 |
rackRubyGems | >= 1.4.0, < 1.4.2 | 1.4.2 |
Affected products
25cpe:2.3:a:rack_project:rack:*:*:*:*:*:*:*:*+ 24 more
- cpe:2.3:a:rack_project:rack:*:*:*:*:*:*:*:*range: <=1.1.3
- cpe:2.3:a:rack_project:rack:0.1:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:0.2:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:0.3:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:0.4:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:0.9:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:0.9.1:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.0.0:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.0.1:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.1.0:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.1.2:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.2.0:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.2.1:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.2.2:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.2.3:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.2.4:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.0:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.1:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.2:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.3:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.4:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.5:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.3.6:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.4.0:*:*:*:*:*:*:*
- cpe:2.3:a:rack_project:rack:1.4.1:*:*:*:*:*:*:*
Patches
1c9f65df37a15Fix parsing performance for unquoted filenames
2 files changed · +22 −2
lib/rack/multipart.rb+2 −2 modified@@ -12,7 +12,7 @@ module Multipart MULTIPART = %r|\Amultipart/.*boundary=\"?([^\";,]+)\"?|n TOKEN = /[^\s()<>,;:\\"\/\[\]?=]+/ CONDISP = /Content-Disposition:\s*#{TOKEN}\s*/i - DISPPARM = /;\s*(#{TOKEN})=("(?:\\"|[^"])*"|#{TOKEN})*/ + DISPPARM = /;\s*(#{TOKEN})=("(?:\\"|[^"])*"|#{TOKEN})/ RFC2183 = /^#{CONDISP}(#{DISPPARM})+$/i BROKEN_QUOTED = /^#{CONDISP}.*;\sfilename="(.*?)"(?:\s*$|\s*;\s*#{TOKEN}=)/i BROKEN_UNQUOTED = /^#{CONDISP}.*;\sfilename=(#{TOKEN})/i @@ -31,4 +31,4 @@ def build_multipart(params, first = true) end end -end \ No newline at end of file +end
test/spec_multipart.rb+20 −0 modified@@ -295,4 +295,24 @@ def multipart_file(name) message.should.equal "value must be a Hash" end + should "parse very long unquoted multipart file names" do + data = <<-EOF +--AaB03x\r +Content-Type: text/plain\r +Content-Disposition: attachment; name=file; filename=#{'long' * 100}\r +\r +contents\r +--AaB03x--\r + EOF + + options = { + "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x", + "CONTENT_LENGTH" => data.length.to_s, + :input => StringIO.new(data) + } + env = Rack::MockRequest.env_for("/", options) + params = Rack::Utils::Multipart.parse_multipart(env) + + params["file"][:filename].should.equal('long' * 100) + end end
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
14- github.com/advisories/GHSA-h77x-m5q8-c29hghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2012-6109ghsaADVISORY
- access.redhat.com/errata/RHSA-2013:0544ghsaWEB
- access.redhat.com/security/cve/CVE-2012-6109ghsaWEB
- bugzilla.redhat.com/show_bug.cginvdWEB
- github.com/rack/rack/blob/master/README.rdocnvdWEB
- github.com/rack/rack/commit/c9f65df37a151821eb88ddd1dc404b83e52c52d5nvdWEB
- github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2012-6109.ymlghsaWEB
- groups.google.com/forum/ghsaWEB
- groups.google.com/forum/nvdWEB
- rhn.redhat.com/errata/RHSA-2013-0544.htmlghsaWEB
- rack.github.comnvd
- rhn.redhat.com/errata/RHSA-2013-0544.htmlnvd
- rhn.redhat.com/errata/RHSA-2013-0548.htmlnvd
News mentions
0No linked articles in our index yet.