{"id":"GHSA-98m9-hrrm-r99r","summary":"Faraday: Uncontrolled recursion in NestedParamsEncoder allows stack exhaustion DoS via deeply nested query parameters","details":"`Faraday::NestedParamsEncoder`, the default nested query parameter encoder/decoder in Faraday, decodes nested query strings without enforcing a maximum nesting depth.\n\nA crafted query string such as:\n\n```text\na[x][x][x][x]...[x]=1\n```\n\ncauses 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.\n\nThis has been patched in version 2.14.3 and backported to 1.10.6.","aliases":["CVE-2026-54297"],"modified":"2026-07-17T21:12:17.374243215Z","published":"2026-06-19T19:35:43Z","database_specific":{"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-06-19T19:35:43Z","nvd_published_at":"2026-06-24T17:17:29Z","cwe_ids":["CWE-674"]},"references":[{"type":"WEB","url":"https://github.com/lostisland/faraday/security/advisories/GHSA-98m9-hrrm-r99r"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54297"},{"type":"WEB","url":"https://github.com/lostisland/faraday/pull/1681"},{"type":"PACKAGE","url":"https://github.com/lostisland/faraday"},{"type":"WEB","url":"https://github.com/lostisland/faraday/releases/tag/v1.10.6"},{"type":"WEB","url":"https://github.com/lostisland/faraday/releases/tag/v2.14.3"}],"affected":[{"package":{"name":"faraday","ecosystem":"RubyGems","purl":"pkg:gem/faraday"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.14.3"}]}],"versions":["2.0.0","2.0.1","2.1.0","2.10.0","2.10.1","2.11.0","2.12.0","2.12.1","2.12.2","2.12.3","2.13.0","2.13.1","2.13.2","2.13.3","2.13.4","2.14.0","2.14.1","2.14.2","2.2.0","2.3.0","2.4.0","2.5.0","2.5.1","2.5.2","2.6.0","2.7.0","2.7.1","2.7.10","2.7.11","2.7.12","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","2.7.9","2.8.0","2.8.1","2.9.0","2.9.1","2.9.2"],"database_specific":{"last_known_affected_version_range":"\u003c= 2.14.2","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-98m9-hrrm-r99r/GHSA-98m9-hrrm-r99r.json"}},{"package":{"name":"faraday","ecosystem":"RubyGems","purl":"pkg:gem/faraday"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"1.10.6"}]}],"versions":["1.0.0","1.0.1","1.1.0","1.10.0","1.10.1","1.10.2","1.10.3","1.10.4","1.10.5","1.2.0","1.3.0","1.3.1","1.4.0","1.4.1","1.4.2","1.4.3","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.7.2","1.8.0","1.9.0","1.9.1","1.9.2","1.9.3"],"database_specific":{"last_known_affected_version_range":"\u003c= 1.10.5","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-98m9-hrrm-r99r/GHSA-98m9-hrrm-r99r.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}]}