VYPR
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.

PackageAffected versionsPatched versions
rackRubyGems
< 1.1.41.1.4
rackRubyGems
>= 1.2.0, < 1.2.61.2.6
rackRubyGems
>= 1.3.0, < 1.3.71.3.7
rackRubyGems
>= 1.4.0, < 1.4.21.4.2

Affected products

25
  • Rack Project/Rack25 versions
    cpe: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

1
c9f65df37a15

Fix parsing performance for unquoted filenames

https://github.com/rack/rackJames TuckerMay 13, 2012via ghsa
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

News mentions

0

No linked articles in our index yet.