CVE-2019-15605

9.8 CRITICAL

📋 TL;DR

CVE-2019-15605 is an HTTP request smuggling vulnerability in Node.js that allows attackers to bypass security controls and deliver malicious payloads by sending malformed Transfer-Encoding headers. This affects Node.js 10, 12, and 13 versions when handling HTTP requests. Applications using these Node.js versions as HTTP servers are vulnerable to request smuggling attacks.

💻 Affected Systems

Products:
  • Node.js
Versions: 10.x (before 10.17.0), 12.x (before 12.13.1), 13.x (before 13.0.1)
Operating Systems: All platforms running affected Node.js versions
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications using Node.js HTTP server functionality. Applications behind certain proxies or load balancers may be more vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could bypass security controls, poison caches, hijack user sessions, steal credentials, or perform cross-site scripting attacks by smuggling malicious requests through front-end proxies.

🟠

Likely Case

Request smuggling leading to cache poisoning, session hijacking, or credential theft in applications behind load balancers or reverse proxies.

🟢

If Mitigated

Limited impact with proper input validation and updated Node.js versions, though some risk remains if other vulnerable components are present.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires understanding of HTTP request smuggling techniques and the ability to send malformed HTTP requests to vulnerable servers.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Node.js 10.17.0, 12.13.1, 13.0.1 or later

Vendor Advisory: https://nodejs.org/en/blog/vulnerability/november-2019-security-releases/

Restart Required: Yes

Instructions:

1. Identify Node.js version using 'node --version'. 2. If version is 10.x (<10.17.0), 12.x (<12.13.1), or 13.x (<13.0.1), upgrade to patched version. 3. Update package.json dependencies. 4. Restart all Node.js applications and services.

🔧 Temporary Workarounds

HTTP Header Validation

all

Implement middleware to validate and normalize Transfer-Encoding headers before processing requests

Use Reverse Proxy with Strict Parsing

all

Deploy a reverse proxy (nginx, Apache) with strict HTTP parsing that rejects malformed Transfer-Encoding headers

🧯 If You Can't Patch

  • Implement WAF rules to block requests with malformed Transfer-Encoding headers
  • Monitor for unusual HTTP request patterns and implement rate limiting

🔍 How to Verify

Check if Vulnerable:

Check Node.js version with 'node --version'. If version is 10.x (<10.17.0), 12.x (<12.13.1), or 13.x (<13.0.1), system is vulnerable.

Check Version:

node --version

Verify Fix Applied:

After patching, verify version is 10.17.0+, 12.13.1+, or 13.0.1+ using 'node --version'. Test with HTTP requests containing malformed Transfer-Encoding headers.

📡 Detection & Monitoring

Log Indicators:

  • Unusual HTTP request patterns
  • Multiple requests from single connection with different content lengths
  • Requests with malformed Transfer-Encoding headers

Network Indicators:

  • HTTP requests with conflicting Content-Length and Transfer-Encoding headers
  • Requests with obfuscated Transfer-Encoding values

SIEM Query:

source="web_server" AND (http_header="Transfer-Encoding" AND http_header_value="chunked, chunked" OR http_header_value="chunked\r\nTransfer-Encoding: chunked")

🔗 References

📤 Share & Export