Ruby/rack/3.1.12


Rack provides a minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call.

https://rubygems.org/gems/rack
MIT

2 Security Vulnerabilities

Rack has an Unbounded-Parameter DoS in Rack::QueryParser

Published date: 2025-05-08T14:45:48Z
CVE: CVE-2025-46727
Links:

Summary

Rack::QueryParser parses query strings and application/x-www-form-urlencoded bodies into Ruby data structures without imposing any limit on the number of parameters, allowing attackers to send requests with extremely large numbers of parameters.

Details

The vulnerability arises because Rack::QueryParser iterates over each &-separated key-value pair and adds it to a Hash without enforcing an upper bound on the total number of parameters. This allows an attacker to send a single request containing hundreds of thousands (or more) of parameters, which consumes excessive memory and CPU during parsing.

Impact

An attacker can trigger denial of service by sending specifically crafted HTTP requests, which can cause memory exhaustion or pin CPU resources, stalling or crashing the Rack server. This results in full service disruption until the affected worker is restarted.

Mitigation

  • Update to a version of Rack that limits the number of parameters parsed, or
  • Use middleware to enforce a maximum query string size or parameter count, or
  • Employ a reverse proxy (such as Nginx) to limit request sizes and reject oversized query strings or bodies.

Limiting request body sizes and query string lengths at the web server or CDN level is an effective mitigation.

Affected versions: ["3.1.2", "3.1.1", "3.1.0", "3.1.3", "3.1.4", "3.1.6", "3.1.5", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.4.1", "3.0.4.2", "3.0.5", "3.0.6", "3.0.6.1", "3.0.7", "3.0.8", "3.0.9", "3.0.9.1", "3.0.10", "3.0.11", "3.0.12", "3.0.13", "3.0.14", "3.0.15", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.1", "2.0.9", "2.0.7", "2.0.6", "2.0.4", "2.0.3", "2.0.2", "1.6.11", "1.6.7", "1.6.6", "1.6.5", "1.6.4", "1.6.1", "1.6.0", "1.6.0.beta", "1.5.5", "1.5.3", "1.5.1", "1.5.0.beta.2", "1.5.0.beta.1", "1.4.6", "1.4.3", "1.4.2", "1.3.7", "1.3.5", "1.3.4", "1.3.2", "1.3.0", "1.3.0.beta", "1.2.7", "1.2.6", "1.2.3", "1.2.1", "1.1.4", "1.1.3", "1.1.1", "1.1.1.pre", "1.1.0", "1.0.0", "0.9.1", "0.4.0", "0.2.0", "0.1.0", "2.1.4", "2.1.3", "2.1.2", "2.1.0", "2.0.8", "2.0.5", "2.0.1", "2.0.0.rc1", "2.0.0.alpha", "1.6.13", "1.6.12", "1.6.10", "1.6.9", "1.6.8", "1.6.3", "1.6.2", "1.6.0.beta2", "1.5.4", "1.5.2", "1.5.0", "1.4.7", "1.4.5", "1.4.4", "1.4.1", "1.4.0", "1.3.10", "1.3.9", "1.3.8", "1.3.6", "1.3.3", "1.3.1", "1.3.0.beta2", "1.2.8", "1.2.5", "1.2.4", "1.2.2", "1.2.0", "1.1.6", "1.1.5", "1.1.2", "1.0.1", "0.9.0", "0.3.0", "2.2.3.1", "2.1.4.1", "2.0.9.1", "2.2.4", "2.2.5", "2.2.6", "2.2.6.2", "2.2.6.1", "2.1.4.2", "2.0.9.2", "2.2.6.3", "2.1.4.3", "2.0.9.3", "2.2.6.4", "2.2.7", "2.2.8", "2.2.8.1", "2.1.4.4", "2.0.9.4", "2.2.9", "2.2.10", "2.2.11", "2.2.12", "2.2.13"]
Secure versions: [2.2.14, 2.2.15, 2.2.16, 2.2.17, 3.0.16, 3.0.17, 3.0.18, 3.1.14, 3.1.15, 3.1.16]
Recommendation: Update to version 3.1.16.

Rack has an Unbounded-Parameter DoS in Rack::QueryParser

Published date: 2025-05-08
CVE: 2025-46727
CVSS V3: 7.5
Links:

Summary

Rack::QueryParser parses query strings and application/x-www-form-urlencoded bodies into Ruby data structures without imposing any limit on the number of parameters, allowing attackers to send requests with extremely large numbers of parameters.

Details

The vulnerability arises because Rack::QueryParser iterates over each &-separated key-value pair and adds it to a Hash without enforcing an upper bound on the total number of parameters. This allows an attacker to send a single request containing hundreds of thousands (or more) of parameters, which consumes excessive memory and CPU during parsing.

Impact

An attacker can trigger denial of service by sending specifically crafted HTTP requests, which can cause memory exhaustion or pin CPU resources, stalling or crashing the Rack server. This results in full service disruption until the affected worker is restarted.

Mitigation

  • Update to a version of Rack that limits the number of parameters parsed, or
  • Use middleware to enforce a maximum query string size or parameter count, or
  • Employ a reverse proxy (such as Nginx) to limit request sizes and reject oversized query strings or bodies.

Limiting request body sizes and query string lengths at the web server or CDN level is an effective mitigation.

Affected versions: ["2.1.1", "2.0.9", "2.0.7", "2.0.6", "2.0.4", "2.0.3", "2.0.2", "1.6.11", "1.6.7", "1.6.6", "1.6.5", "1.6.4", "1.6.1", "1.6.0", "1.6.0.beta", "1.5.5", "1.5.3", "1.5.1", "1.5.0.beta.2", "1.5.0.beta.1", "1.4.6", "1.4.3", "1.4.2", "1.3.7", "1.3.5", "1.3.4", "1.3.2", "1.3.0", "1.3.0.beta", "1.2.7", "1.2.6", "1.2.3", "1.2.1", "1.1.4", "1.1.3", "1.1.1", "1.1.1.pre", "1.1.0", "1.0.0", "0.9.1", "0.4.0", "0.2.0", "0.1.0", "2.1.4", "2.1.3", "2.1.2", "2.1.0", "2.0.8", "2.0.5", "2.0.1", "2.0.0.rc1", "2.0.0.alpha", "1.6.13", "1.6.12", "1.6.10", "1.6.9", "1.6.8", "1.6.3", "1.6.2", "1.6.0.beta2", "1.5.4", "1.5.2", "1.5.0", "1.4.7", "1.4.5", "1.4.4", "1.4.1", "1.4.0", "1.3.10", "1.3.9", "1.3.8", "1.3.6", "1.3.3", "1.3.1", "1.3.0.beta2", "1.2.8", "1.2.5", "1.2.4", "1.2.2", "1.2.0", "1.1.6", "1.1.5", "1.1.2", "1.0.1", "0.9.0", "0.3.0", "2.1.4.1", "2.0.9.1", "2.1.4.2", "2.0.9.2", "2.1.4.3", "2.0.9.3", "2.1.4.4", "2.0.9.4", "3.1.2", "3.1.1", "3.1.0", "3.1.3", "3.1.4", "3.1.6", "3.1.5", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13"]
Secure versions: [2.2.14, 2.2.15, 2.2.16, 2.2.17, 3.0.16, 3.0.17, 3.0.18, 3.1.14, 3.1.15, 3.1.16]
Recommendation: Update to version 3.1.16.

160 Other Versions

Version License Security Released
3.1.16 MIT 2025-06-04 - 22:28 26 days
3.1.15 MIT 2025-05-18 - 02:40 about 1 month
3.1.14 MIT 2025-05-06 - 21:35 about 2 months
3.1.13 MIT 2 2025-04-13 - 12:28 3 months
3.1.12 MIT 2 2025-03-10 - 21:22 4 months
3.1.11 MIT 4 2025-03-04 - 05:36 4 months
3.1.10 MIT 6 2025-02-12 - 03:29 5 months
3.1.9 MIT 8 2025-01-30 - 22:39 5 months
3.1.8 MIT 8 2024-10-14 - 01:53 9 months
3.1.7 MIT 8 2024-07-11 - 01:46 12 months
3.1.6 MIT 8 2024-07-02 - 15:31 12 months
3.1.5 MIT 8 2024-07-02 - 06:42 12 months
3.1.4 MIT 10 2024-06-22 - 10:00 about 1 year
3.1.3 MIT 10 2024-06-12 - 07:25 about 1 year
3.1.2 MIT 10 2024-06-11 - 20:39 about 1 year
3.1.1 MIT 10 2024-06-11 - 20:03 about 1 year
3.1.0 MIT 10 2024-06-11 - 05:50 about 1 year
3.0.18 MIT 2025-05-22 - 06:07 about 1 month
3.0.17 MIT 2025-05-18 - 02:39 about 1 month
3.0.16 MIT 2025-05-06 - 21:34 about 2 months
3.0.15 MIT 1 2025-04-13 - 12:19 3 months
3.0.14 MIT 1 2025-03-10 - 21:21 4 months
3.0.13 MIT 2 2025-03-04 - 05:38 4 months
3.0.12 MIT 3 2025-02-12 - 03:33 5 months
3.0.11 MIT 4 2024-05-09 - 22:34 about 1 year
3.0.10 MIT 4 2024-03-20 - 21:57 over 1 year
3.0.9.1 MIT 4 2024-02-21 - 19:23 over 1 year
3.0.9 MIT 10 2024-01-31 - 07:52 over 1 year
3.0.8 MIT 10 2023-06-14 - 02:01 about 2 years
3.0.7 MIT 10 2023-03-16 - 02:22 over 2 years
3.0.6.1 MIT 10 2023-03-13 - 18:10 over 2 years
3.0.6 MIT 12 2023-03-13 - 06:00 over 2 years
3.0.5 MIT 12 2023-03-12 - 06:28 over 2 years
3.0.4.2 MIT 12 2023-03-02 - 22:57 over 2 years
3.0.4.1 MIT 14 2023-01-17 - 20:48 over 2 years
3.0.4 MIT 20 2023-01-16 - 22:41 over 2 years
3.0.3 MIT 20 2022-12-26 - 20:20 over 2 years
3.0.2 MIT 20 2022-12-05 - 05:13 over 2 years
3.0.1 MIT 20 2022-11-18 - 20:59 over 2 years
3.0.0 MIT 20 2022-09-06 - 16:28 almost 3 years
3.0.0.rc1 MIT 8 2022-09-04 - 23:52 almost 3 years
3.0.0.beta1 MIT 8 2022-08-08 - 20:34 almost 3 years
2.2.17 MIT 2025-06-03 - 01:57 28 days
2.2.16 MIT 2025-05-22 - 05:33 about 1 month
2.2.15 MIT 2025-05-18 - 02:38 about 1 month
2.2.14 MIT 2025-05-06 - 21:33 about 2 months
2.2.13 MIT 3 2025-03-10 - 21:19 4 months
2.2.12 MIT 4 2025-03-04 - 05:45 4 months
2.2.11 MIT 5 2025-02-12 - 03:54 5 months
2.2.10 MIT 6 2024-10-14 - 01:47 9 months