<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Faraday Project - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/faraday-project/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 19 Jun 2026 20:02:35 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/faraday-project/feed.xml" rel="self" type="application/rss+xml"/><item><title>Faraday: Uncontrolled Recursion in NestedParamsEncoder Allows Stack Exhaustion DoS</title><link>https://feed.craftedsignal.io/briefs/2026-06-faraday-dos-recursion/</link><pubDate>Fri, 19 Jun 2026 20:02:35 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-faraday-dos-recursion/</guid><description>An unauthenticated attacker can trigger a denial-of-service condition in applications using the Faraday Ruby library by sending deeply nested query parameters (CVE-2026-54297), leading to `SystemStackError` and application crashes due to uncontrolled recursion.</description><content:encoded><![CDATA[<p>The <code>Faraday::NestedParamsEncoder</code> component within the Faraday Ruby HTTP client library, affecting versions up to <code>2.14.2</code>, contains a critical vulnerability (CVE-2026-54297) that allows for a denial-of-service (DoS) attack. This vulnerability stems from uncontrolled recursion in its <code>dehash</code> routine when processing deeply nested query parameters, such as <code>a[x][x][x]...[x]=1</code>. An attacker can send a specially crafted, relatively small (around 9.4 KB) HTTP request containing such a query string to an application that utilizes Faraday for parsing or building URLs. This input causes the Ruby process to build an excessively deep <code>Hash</code> structure, exhausting the call stack and leading to a <code>SystemStackError</code>, effectively crashing the calling thread or worker. This issue impacts the availability of affected applications and does not require authentication or user interaction to exploit.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An unauthenticated attacker crafts a malicious HTTP request containing an excessively deeply nested query parameter, for example, <code>GET /search?a[x][x][x]...[x]=1 HTTP/1.1</code>.</li>
<li>The vulnerable application receives the HTTP request and, as part of its processing, passes the attacker-controlled query string to a Faraday function like <code>Faraday::Utils.parse_nested_query</code> or <code>conn.build_url</code>.</li>
<li>Faraday's <code>NestedParamsEncoder</code>, specifically the <code>dehash</code> internal routine, begins recursively processing the deeply nested query parameter structure.</li>
<li>Due to the absence of a maximum nesting depth limit within the <code>dehash</code> function, the recursion depth is solely controlled by the attacker's input.</li>
<li>The deep recursion exhausts the Ruby process's call stack.</li>
<li>The Ruby interpreter raises an uncaught <code>SystemStackError</code> (indicating &quot;stack level too deep&quot;).</li>
<li>The <code>SystemStackError</code> causes the application's calling thread or worker to crash, leading to a denial-of-service condition for that specific process or the entire application.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-54297 results in a denial-of-service against the targeted application. A small, crafted query string of approximately 9.4 KB can trigger a <code>SystemStackError</code> in the Ruby runtime, crashing the process or thread handling the request. Repeated requests with such payloads can lead to a prolonged outage for any application that exposes Faraday's parameter parsing or URL-building paths to untrusted input. The vulnerability does not allow for remote code execution, authentication bypass, or data disclosure; its confirmed impact is limited to availability loss.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Upgrade Faraday:</strong> Immediately upgrade the Faraday gem to a patched version once available. Monitor the official Faraday GitHub repository and RubyGems for security advisories and releases addressing CVE-2026-54297.</li>
<li><strong>Implement web application firewall (WAF) rules:</strong> Deploy WAF rules to detect and block HTTP requests containing an excessive number of <code>[x]</code> or similar nested array/hash markers in query parameters, as indicated in the <code>Detects CVE-2026-54297 exploitation</code> Sigma rule.</li>
<li><strong>Application-level input validation:</strong> Implement strict input validation in applications that utilize Faraday to parse or build URLs from external input, specifically limiting the maximum depth of nested query parameters.</li>
<li><strong>Deploy the Sigma rules in this brief to your SIEM:</strong> Tune the <code>Detects CVE-2026-54297 exploitation</code> rule for your environment to identify attempts to exploit this vulnerability.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>denial-of-service</category><category>web-vulnerability</category><category>ruby</category><category>faraday</category><category>ghsa</category><category>cve</category></item></channel></rss>