GitHub Advisoryadvisory · RubyGems
GHSA-h99w-9q5r-gjq9 Puma vulnerable to HTTP Request Smuggling
CRITICAL
Official page ↗
- Aliases
- CVE-2022-24790
- Ecosystem
- RubyGems
- Packages
- puma
- Severity
- Critical
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- Weaknesses
- CWE-444
- Reviewed
- 2022-03-30
Affected packages
• RubyGems puma: >= 5.0.0, < 5.6.4 → fixed in 5.6.4
• RubyGems puma: < 4.3.12 → fixed in 4.3.12
Description
When using Puma behind a proxy that does not properly validate that the incoming HTTP request matches the RFC7230 standard, Puma and the frontend proxy may disagree on where a request starts and ends. This would allow requests to be smuggled via the front-end proxy to Puma.
The following vulnerabilities are addressed by this advisory:
• Lenient parsing of `Transfer-Encoding` headers, when unsupported encodings should be rejected and the final encoding must be `chunked`.
• Lenient parsing of malformed `Content-Length` headers and chunk sizes, when only digits and hex digits should be allowed.
• Lenient parsing of duplicate `Content-Length` headers, when they should be rejected.
• Lenient parsing of the ending of chunked segments, when they should end with `\r\n`.
The vulnerability has been fixed in 5.6.4 and 4.3.12. When deploying a proxy in front of Puma, turning on any and all functionality to make sure that the request matches the RFC7230 standard.
These proxy servers are known to have "good" behavior re: this standard and upgrading Puma may not be necessary. Users are encouraged to validate for themselves.
• Nginx (latest)
• Apache (latest)
• Haproxy 2.5+
• Caddy (latest)
• Traefik (latest)
Related
Alias · CVE (1)
- CVE-2022-24790 Puma is a simple, fast, multi-threaded, parallel HTTP 1.1 server for Ruby/Rack applications. vulnerability
Weakness · CWE (1)
- CWE-444 Inconsistent Interpretation of HTTP Requests weakness
References
- https://github.com/puma/puma/security/advisories/GHSA-h99w-9q5r-gjq9 web
- https://nvd.nist.gov/vuln/detail/CVE-2022-24790 advisory
- https://github.com/puma/puma/commit/5bb7d202e24dec00a898dca4aa11db391d7787a5 web
- https://github.com/puma/puma package
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/puma/CVE-2022-24790.yml web
- https://lists.debian.org/debian-lts-announce/2022/08/msg00015.html web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/F6YWGIIKL7KKTS3ZOAYMYPC7D6WQ5OA5 web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/L7NESIBFCNSR3XH7LXDPKVMSUBNUB43G web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/TUBFJ44NCKJ34LECZRAP4N5VL6USJSIB web
- https://portswigger.net/web-security/request-smuggling web
- https://security.gentoo.org/glsa/202208-28 web
- https://www.debian.org/security/2022/dsa-5146 web