Faraday - Uncontrolled recursion in NestedParamsEncoder allows stack exhaustion DoS via deeply nested query parameters
Published: June 19, 2026
SECURITY IDENTIFIERS
- CVE: CVE-2026-54297 (NVD)
- GHSA: GHSA-98m9-hrrm-r99r
GEM
SEVERITY
CVSS v3.x: 7.5 (High)
PATCHED VERSIONS
>= 2.14.3
DESCRIPTION
Uncontrolled Recursion in NestedParamsEncoder Allows Stack
Exhaustion DoS via Deeply Nested Query Parameters
Summary
Faraday::NestedParamsEncoder, the default nested query parameter
encoder/decoder in Faraday, decodes nested query strings without
enforcing a maximum nesting depth.
A crafted query string such as:
a[x][x][x][x]...[x]=1
causes Faraday to build a deeply nested Ruby Hash structure. The
internal dehash routine then recursively walks this attacker-controlled
structure without a depth limit. At sufficient depth, Ruby raises an
uncaught SystemStackError (stack level too deep), crashing the
calling thread or worker.
This can lead to denial of service in applications that pass attacker-controlled query strings to Faraday's nested query parsing or URL-building paths.
Impact
A relatively small query string can trigger a SystemStackError and
crash the calling Ruby thread or worker.
In my local test environment, a payload of approximately 9.4 KB was sufficient:
depth=3119
bytes=9360
result=SystemStackError
message="stack level too deep"
Repeated requests with such payloads may cause a denial of service against applications whose request path forwards, parses, or rebuilds attacker-controlled query strings through Faraday.
This issue does not provide remote code execution, authentication bypass, or data disclosure. The confirmed impact is availability loss.
Reporter
Reported by: Emre Koca
RELATED
- https://www.cve.org/CVERecord/SearchResults?query=CVE-2026-54297
- https://rubygems.org/gems/faraday/versions/2.14.3
- https://github.com/lostisland/faraday/releases/tag/v2.14.3
- https://github.com/lostisland/faraday/compare/v2.14.2...v2.14.3
- https://test.osv.dev/vulnerability/GHSA-98m9-hrrm-r99r
- https://advisories.gitlab.com/gem/faraday/CVE-2026-54297
- https://github.com/lostisland/faraday/security/advisories/GHSA-98m9-hrrm-r99r
- https://github.com/advisories/GHSA-98m9-hrrm-r99r
