CVE-2026-32762
Medium · 4.8CVSS
4.8
EPSS
0.2%
Published
Apr 2, 2026
CISA due date
—
Cloudanix analysis
Some Ruby web applications may misunderstand a specially crafted web request header, allowing an attacker to mislead the application about where a request came from or how it reached the site.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
CVE-2026-32762 is an improper input validation flaw in Rack's parsing of the RFC 7239 Forwarded HTTP header. Affected Rack versions split Forwarded header values on semicolons before correctly accounting for quoted strings, even though semicolons are valid inside quoted values. As a result, a crafted header can cause Rack to interpret attacker-controlled text inside a quoted value as additional Forwarded parameters such as host, proto, for, or by. The impact depends heavily on how the application and its upstream proxy, CDN, WAF, or load balancer use Forwarded headers. In vulnerable deployments, this can lead to incorrect client IP attribution, scheme confusion, host confusion, logging inaccuracies, incorrect URL generation, or bypass of application logic that trusts proxy-normalized forwarding metadata.
Why it matters to the business
The most likely business impact is misrouting of trust decisions that depend on forwarded request metadata, such as identifying the original client IP, determining whether a request is HTTPS, or building absolute URLs. This may cause security controls, audit trails, rate limits, access rules, redirects, or application behavior to rely on attacker-influenced values. The CVSS score is moderate, EPSS is very low and stable at 0.0018 over 30 days, there is no known CISA KEV listing, no ransomware association, and no reported exploit maturity, so this should generally be treated as a controlled patching issue rather than an emergency response event. However, Rack is a common Ruby web interface used by many Ruby web applications and frameworks, so exposure may be widespread across application stacks even when Rack is not directly managed by application owners.
How an attack unfolds
An attacker sends an HTTP request containing a deliberately crafted RFC 7239 Forwarded header with a semicolon embedded inside a quoted-string value. An upstream proxy, WAF, CDN, or load balancer may consider the quoted value valid and either preserve it or validate it as a single parameter. The vulnerable Rack parser later splits the header on semicolons too early and treats portions of the quoted value as separate Forwarded directives. If the Ruby application or middleware trusts Rack's parsed forwarded values, the attacker may influence perceived client IP, original protocol, host, or proxy chain metadata. The practical outcome depends on application logic: possible effects include spoofed logging, incorrect secure/insecure request handling, host-based logic manipulation, bad redirect or URL generation, or bypass of controls that depend on trusted forwarded metadata. Successful exploitation generally requires a deployment-specific mismatch between upstream intermediary handling and Rack's parser behavior, which is why attack complexity is high.
How to fix it
Upgrade Rack to a patched version. Versions before 3.1.21 in the 3.1.x line should be upgraded to Rack 3.1.21 or later. Versions 3.2.0 through before 3.2.6 should be upgraded to Rack 3.2.6 or later. If using dependency managers, update the locked Rack dependency and rebuild/redeploy affected Ruby applications. If immediate upgrade is not possible, reduce risk by normalizing or rejecting ambiguous Forwarded headers at the edge, especially headers containing quoted values with semicolons; prefer a single trusted forwarding header strategy; ensure applications only trust forwarding metadata from known proxies; and avoid making authorization, host validation, or security-sensitive decisions directly from untrusted Forwarded header contents. Confirm that upstream proxies overwrite rather than append or preserve untrusted client-supplied Forwarded headers where appropriate.
How to confirm the fix worked
Confirm the deployed Rack version is 3.1.21 or later for the 3.1 branch, or 3.2.6 or later for the 3.2 branch. Review dependency lockfiles and runtime package inventories, not only top-level application manifests, because Rack is often a transitive dependency. Send benign validation requests containing RFC 7239 Forwarded headers with semicolons inside quoted values and verify that the application does not interpret embedded text as separate host, proto, for, or by parameters. Check edge proxy and application behavior together to ensure they parse or normalize Forwarded consistently. Validate that logs, request metadata, generated URLs, redirect behavior, and any access-control decisions remain unchanged when ambiguous Forwarded headers are supplied.
Typical attack path
- Identify a Ruby web application or service using an affected Rack version from 3.0.0.beta1 through versions before 3.1.21, or 3.2.0 through versions before 3.2.6.
- Determine whether the application or middleware consumes RFC 7239 Forwarded header values for client IP, scheme, host, proxy chain, redirects, logging, or authorization decisions.
- Send test requests containing Forwarded headers with quoted-string values that include semicolons and embedded parameter-looking text.
- Observe behavioral differences between upstream proxy handling and backend application behavior, such as changed perceived host, protocol, or client address.
- Use the parsing discrepancy to inject misleading forwarded metadata into application logic or logs.
- Leverage the influenced metadata to bypass weak trust controls, create misleading audit records, alter generated links, or affect routing and security decisions where the application relies on those values.
How to detect it
Look for signs of crafted Forwarded headers in HTTP access logs, reverse proxy logs, WAF logs, CDN request logs, application request logs, and any structured request-header telemetry. Focus on Forwarded header values where a quoted string contains a semicolon followed by text resembling another RFC 7239 parameter, such as host=, proto=, for=, or by=. Investigate requests where the edge device recorded one Forwarded interpretation but the backend application logged a different client IP, host, or scheme. Review authentication, authorization, rate-limit, redirect, and error logs for unusual behavior correlated with suspicious Forwarded headers. Because this vulnerability does not inherently create files, processes, registry keys, or persistent artifacts, detection is primarily log-based. No named threat actors, ransomware campaigns, or known public exploitation are currently associated with this issue based on the provided data.
- Forwarded: for=";host=
- Forwarded: for=";proto=
- Forwarded: for=";for=
- Forwarded: for=";by=
- Forwarded: host=";for=
- Forwarded: host=";proto=
- Forwarded: proto=";host=
- Forwarded: by=";for=
- Forwarded: for="_hidden;host=
- Forwarded: for="unknown;host=
- Forwarded: for="127.0.0.1;host=
- Forwarded: for="localhost;host=
What your security team should do
- Inventory Ruby applications, containers, and services that include Rack, including transitive dependencies through frameworks or middleware.
- Prioritize upgrading internet-facing applications and services that sit behind proxies, CDNs, WAFs, ingress controllers, or load balancers that preserve Forwarded headers.
- Upgrade affected Rack deployments to 3.1.21 or later on the 3.1 branch, or 3.2.6 or later on the 3.2 branch.
- At the edge, strip or overwrite untrusted client-supplied Forwarded headers unless they are explicitly required and normalized by a trusted proxy layer.
- Search access logs for Forwarded headers containing semicolons inside quoted strings, especially where embedded text resembles host=, proto=, for=, or by= parameters.
- Review application code and middleware for trust decisions based on Forwarded-derived host, scheme, or client IP values.
- Add regression tests for quoted Forwarded header parsing to prevent future parser/proxy inconsistencies.
- Treat this as moderate priority unless local evidence shows security-sensitive reliance on Forwarded metadata or active probing in logs.
The record
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21 and 3.2.0 to before 3.2.6, Rack::Utils.forwarded_values parses the RFC 7239 Forwarded header by splitting on semicolons before handling quoted-string values. Because quoted values may legally contain semicolons, a header can be interpreted by Rack as multiple Forwarded directives rather than as a single quoted for value. In deployments where an upstream proxy, WAF, or intermediary validates or preserves quoted Forwarded values differently, this discrepancy can allow an attacker to smuggle host, proto, for, or by parameters through a single header value. This issue has been patched in versions 3.1.21 and 3.2.6.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-114656 Traefik before 2.11.58 and 3.7.13 contains an authentication bypass vulnerability that… CWE-436
- CVE-2026-93750 http-cache-semantics through 4.2.0 contains a cache validation vulnerability in the… CWE-436
- CVE-2026-82537 Roo-Code through 3.54.0 contains an auto-approve bypass vulnerability that allows… CWE-436
- CVE-2026-81378 Interpretation conflict in Visual Studio Code allows an unauthorized attacker to bypass a… CWE-436
- CVE-2026-84394 fast-uri accepts a host that contains an unbalanced or misplaced authority bracket… CWE-436
- CVE-2026-63435 Mail is an internet library for Ruby designed to handle email generation, parsing, and… CWE-436
- CVE-2026-75931 fast-uri is a URI parser for Node.js. CWE-436
- CVE-2026-57580 authentik is an open-source identity provider. CWE-436