Skip to content

Commit a6e42be

Browse files
jasnowpostmodern
authored andcommitted
GHSA SYNC: 1 brand new advisory
1 parent dff94e0 commit a6e42be

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

gems/rack/CVE-2025-59830.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
gem: rack
3+
cve: 2025-59830
4+
ghsa: 625h-95r8-8xpm
5+
url: https://github.com/rack/rack/security/advisories/GHSA-625h-95r8-8xpm
6+
title: Rack has an unsafe default in Rack::QueryParser allows
7+
params_limit bypass via semicolon-separated parameters
8+
date: 2025-09-25
9+
description: |
10+
## Summary
11+
12+
`Rack::QueryParser` in version `< 2.2.18` enforces its `params_limit`
13+
only for parameters separated by `&`, while still splitting on both
14+
`&` and `;`. As a result, attackers could use `;` separators to
15+
bypass the parameter count limit and submit more parameters than intended.
16+
17+
## Details
18+
19+
The issue arises because `Rack::QueryParser#check_query_string`
20+
counts only `&` characters when determining the number of parameters,
21+
but the default separator regex `DEFAULT_SEP = /[&;] */n` splits on
22+
both `&` and `;`. This mismatch means that queries using `;`
23+
separators were not included in the parameter count, allowing
24+
`params_limit` to be bypassed.
25+
26+
Other safeguards (`bytesize_limit` and `key_space_limit`) still
27+
applied, but did not prevent this particular bypass.
28+
29+
## Impact
30+
31+
Applications or middleware that directly invoke `Rack::QueryParser`
32+
with its default configuration (no explicit delimiter) could be
33+
exposed to increased CPU and memory consumption. This can be abused
34+
as a limited denial-of-service vector.
35+
36+
`Rack::Request`, the primary entry point for typical Rack applications,
37+
uses `QueryParser` in a safe way and does not appear vulnerable by
38+
default. As such, the severity is considered **low**, with the impact
39+
limited to edge cases where `QueryParser` is used directly.
40+
41+
## Mitigation
42+
43+
* Upgrade to a patched version of Rack where both `&` and `;` are
44+
counted consistently toward `params_limit`.
45+
* If upgrading is not immediately possible, configure `QueryParser`
46+
with an explicit delimiter (e.g., `&`) to avoid the mismatch.
47+
* As a general precaution, enforce query string and request size
48+
limits at the web server or proxy layer (e.g., Nginx, Apache, or
49+
a CDN) to mitigate excessive parsing overhead.
50+
cvss_v3: 7.5
51+
patched_versions:
52+
- ">= 2.2.18"
53+
related:
54+
url:
55+
- https://nvd.nist.gov/vuln/detail/CVE-2025-59830
56+
- https://github.com/rack/rack/security/advisories/GHSA-625h-95r8-8xpm
57+
- https://github.com/rack/rack/commit/54e4ffdd5affebcb0c015cc6ae74635c0831ed71
58+
- https://github.com/advisories/GHSA-625h-95r8-8xpm

0 commit comments

Comments
 (0)