VYPR
Moderate severityNVD Advisory· Published May 22, 2020· Updated Aug 4, 2024

HTTP Smuggling via Transfer-Encoding Header in Puma

CVE-2020-11077

Description

In Puma (RubyGem) before 4.3.5 and 3.12.6, a client could smuggle a request through a proxy, causing the proxy to send a response back to another unknown client. If the proxy uses persistent connections and the client adds another request in via HTTP pipelining, the proxy may mistake it as the first request's body. Puma, however, would see it as two requests, and when processing the second request, send back a response that the proxy does not expect. If the proxy has reused the persistent connection to Puma to send another request for a different client, the second response from the first client will be sent to the second client. This is a similar but different vulnerability from CVE-2020-11076. The problem has been fixed in Puma 3.12.6 and Puma 4.3.5.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Puma before 4.3.5 and 3.12.6 allows HTTP request smuggling via persistent connections, enabling proxy to misdirect responses to unintended clients.

Vulnerability

Overview

Puma versions prior to 4.3.5 and 3.12.6 are vulnerable to HTTP request smuggling. The root cause lies in how Puma interprets incoming HTTP requests when a proxy uses persistent connections and the client employs HTTP pipelining. The proxy may mistake the second request as the body of the first request, but Puma treats it as two separate requests. This discrepancy allows a client to smuggle a request through the proxy, leading to a state where the proxy sends a response to an unintended client. This issue is similar to but distinct from CVE-2020-11076 [1][3].

Exploitation

Scenario

An attacker can exploit this by sending multiple requests over a single persistent connection. If the proxy reuses the same connection to Puma for another client's request, Puma's response to the smuggled second request from the first client will be sent to the second client. The attack requires the use of persistent connections and HTTP pipelining, but does not require authentication or a privileged network position [3][4].

Impact

Successful exploitation can result in response misdirection, potentially exposing sensitive data to the wrong client or enabling cache poisoning. This can compromise the confidentiality and integrity of communications between clients and the server.

Mitigation

The vulnerability has been fixed in Puma 3.12.6 and 4.3.5. Users running older versions should upgrade immediately. No workarounds are mentioned in the advisory, and the issue was published on 2020-05-22 [3][4]. It is not known to be listed in CISA's Known Exploited Vulnerabilities (KEV) catalog.

AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
pumaRubyGems
< 3.12.63.12.6
pumaRubyGems
>= 4.0.0, < 4.3.54.3.5

Affected products

215

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

10

News mentions

0

No linked articles in our index yet.