CVE-2020-11076

7.5 HIGH

📋 TL;DR

This vulnerability in Puma web server allows attackers to perform HTTP response smuggling by sending requests with invalid Transfer-Encoding headers. This could enable cache poisoning, session hijacking, or cross-site scripting attacks. All systems running vulnerable versions of Puma are affected.

💻 Affected Systems

Products:
  • Puma (Ruby web server)
Versions: Puma versions before 3.12.5 and before 4.3.4
Operating Systems: All operating systems running Ruby applications with Puma
Default Config Vulnerable: ⚠️ Yes
Notes: All Puma deployments using affected versions are vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could poison web caches, hijack user sessions, perform cross-site scripting attacks, or bypass security controls by smuggling malicious HTTP responses.

🟠

Likely Case

Cache poisoning leading to users receiving malicious content or session hijacking through response smuggling.

🟢

If Mitigated

Limited impact with proper WAF/IPS filtering of malformed HTTP headers and network segmentation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending specially crafted HTTP requests with invalid Transfer-Encoding headers.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Puma 3.12.5 or 4.3.4

Vendor Advisory: https://github.com/puma/puma/security/advisories/GHSA-x7jg-6pwg-fx5h

Restart Required: Yes

Instructions:

1. Update Gemfile to specify 'puma', '>= 3.12.5' or '>= 4.3.4'. 2. Run 'bundle update puma'. 3. Restart the Puma server.

🔧 Temporary Workarounds

WAF/IPS Rule Implementation

all

Configure web application firewall or intrusion prevention system to block requests with invalid Transfer-Encoding headers.

Reverse Proxy Filtering

all

Configure reverse proxy (nginx, Apache) to validate and sanitize Transfer-Encoding headers before forwarding to Puma.

🧯 If You Can't Patch

  • Implement strict HTTP header validation at reverse proxy or load balancer layer
  • Deploy WAF with rules to detect and block HTTP request smuggling attempts

🔍 How to Verify

Check if Vulnerable:

Check Puma version with 'bundle show puma' or 'gem list puma'. If version is below 3.12.5 (for 3.x) or below 4.3.4 (for 4.x), system is vulnerable.

Check Version:

bundle show puma | grep puma || gem list puma | grep puma

Verify Fix Applied:

After updating, verify version shows 3.12.5+ or 4.3.4+ and test with HTTP requests containing invalid Transfer-Encoding headers.

📡 Detection & Monitoring

Log Indicators:

  • HTTP requests with malformed Transfer-Encoding headers
  • Unusual response patterns or cache inconsistencies

Network Indicators:

  • HTTP requests with invalid Transfer-Encoding values
  • Response smuggling patterns in HTTP traffic

SIEM Query:

http.request.headers.transfer_encoding IN ("invalid_value", "chunked, chunked", "chunked, ")

🔗 References

📤 Share & Export