CVE-2019-17638

9.4 CRITICAL

📋 TL;DR

CVE-2019-17638 is a critical information disclosure vulnerability in Eclipse Jetty where improper buffer handling allows one client to see another client's sensitive data. When Jetty encounters oversized response headers, it double-releases a buffer that can then be reused by different threads, potentially exposing HTTP session IDs, authentication credentials, or other sensitive information. This affects Jetty servers running vulnerable versions that process HTTP requests.

💻 Affected Systems

Products:
  • Eclipse Jetty
Versions: 9.4.27.v20200227 to 9.4.29.v20200521
Operating Systems: All operating systems running Jetty
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects servers processing HTTP requests where response headers exceed configured limits. The vulnerability requires specific conditions to trigger.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of sensitive user data including authentication credentials, session tokens, and personal information belonging to multiple users, potentially leading to account takeover and data breaches.

🟠

Likely Case

Information leakage where one user sees fragments of another user's session data or request/response content, potentially exposing session IDs or partial sensitive data.

🟢

If Mitigated

Minimal impact with proper header size configuration and monitoring; potential for occasional buffer errors but no data leakage.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires sending requests that trigger oversized response headers, which can be done by unauthenticated clients. The timing aspect makes exploitation somewhat complex but feasible.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 9.4.30.v20200611 and later

Vendor Advisory: https://bugs.eclipse.org/bugs/show_bug.cgi?id=564984

Restart Required: Yes

Instructions:

1. Download Jetty version 9.4.30.v20200611 or later from https://jetty.eclipse.org/download.html. 2. Stop the Jetty server. 3. Replace the Jetty installation with the patched version. 4. Restart the Jetty server. 5. Verify the version is updated.

🔧 Temporary Workarounds

Configure Response Header Size

all

Set responseHeaderSize significantly larger than requestHeaderSize to reduce the likelihood of triggering the vulnerability

In jetty.xml or start.ini, add: --module=http,http2c
Set: jetty.httpConfig.responseHeaderSize=12288
Set: jetty.httpConfig.requestHeaderSize=8192

🧯 If You Can't Patch

  • Configure responseHeaderSize to 12KB and requestHeaderSize to 8KB as described in workarounds
  • Implement network segmentation and monitoring to detect oversized header attacks

🔍 How to Verify

Check if Vulnerable:

Check Jetty version with: java -jar start.jar --version or examine server logs for version information

Check Version:

java -jar start.jar --version | grep -i jetty

Verify Fix Applied:

Verify version is 9.4.30.v20200611 or later using the version check command

📡 Detection & Monitoring

Log Indicators:

  • HTTP 431 error responses
  • Exceptions related to buffer handling or oversized headers
  • Multiple threads accessing the same buffer

Network Indicators:

  • Unusual patterns of requests with large headers
  • Clients reporting seeing other users' data

SIEM Query:

source="jetty.log" AND ("HTTP 431" OR "response header too large" OR "ByteBufferPool" OR "double release")

🔗 References

📤 Share & Export