GitHub Advisoryadvisory · RubyGems

GHSA-9hf4-67fc-4vf4 Puma's header normalization allows for client to clobber proxy set headers

MEDIUM Published 2024-09-20 Modified 2025-11-04 Official page ↗
Aliases
CVE-2024-45614
Ecosystem
RubyGems
Packages
puma
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
Weaknesses
CWE-444, CWE-639
Reviewed
2024-09-20

Affected packages

• RubyGems puma: < 5.6.9 → fixed in 5.6.9 • RubyGems puma: >= 6.0.0, < 6.4.3 → fixed in 6.4.3

Description

Impact Clients could clobber values set by intermediate proxies (such as X-Forwarded-For) by providing a underscore version of the same header (X-Forwarded_For). Any users trusting headers set by their proxy may be affected. Attackers may be able to downgrade connections to HTTP (non-SSL) or redirect responses, which could cause confidentiality leaks if combined with a separate MITM attack. Patches v6.4.3/v5.6.9 now discards any headers using underscores if the non-underscore version also exists. Effectively, allowing the proxy defined headers to always win. Workarounds Nginx has a underscores_in_headers configuration variable to discard these headers at the proxy level. Any users that are implicitly trusting the proxy defined headers for security or availability should immediately cease doing so until upgraded to the fixed versions.

Related

Alias · CVE (1)

  • CVE-2024-45614 Puma is a Ruby/Rack web server built for parallelism. vulnerability

Weakness · CWE (2)

  • CWE-444 Inconsistent Interpretation of HTTP Requests weakness
  • CWE-639 Authorization Bypass Through User-Controlled Key weakness

References