CVE-2022-2048

7.5 HIGH

📋 TL;DR

This vulnerability in Eclipse Jetty's HTTP/2 server implementation allows attackers to cause denial of service by sending invalid HTTP/2 requests that trigger resource cleanup failures. The bug prevents proper cleanup of active connections and associated resources, eventually exhausting server capacity. Any system running vulnerable Jetty versions with HTTP/2 enabled is affected.

💻 Affected Systems

Products:
  • Eclipse Jetty
Versions: Jetty 9.4.0 through 9.4.48, Jetty 10.0.0 through 10.0.10, Jetty 11.0.0 through 11.0.10
Operating Systems: All operating systems running Jetty
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems with HTTP/2 enabled. HTTP/1.x connections are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete service unavailability as all server resources become exhausted, preventing legitimate requests from being processed.

🟠

Likely Case

Progressive degradation of service performance leading to partial or intermittent denial of service.

🟢

If Mitigated

Minimal impact with proper connection limits, monitoring, and quick detection of anomalous traffic patterns.

🌐 Internet-Facing: HIGH - Internet-facing HTTP/2 servers are directly exposed to malicious requests from untrusted sources.
🏢 Internal Only: MEDIUM - Internal servers are still vulnerable but have reduced attack surface from external actors.

🎯 Exploit Status

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

Exploitation requires sending malformed HTTP/2 requests, which can be automated. Public proof-of-concept code exists in security advisories.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Jetty 9.4.49, Jetty 10.0.11, Jetty 11.0.11

Vendor Advisory: https://github.com/eclipse/jetty.project/security/advisories/GHSA-wgmr-mf83-7x4j

Restart Required: Yes

Instructions:

1. Identify current Jetty version. 2. Upgrade to patched version (9.4.49, 10.0.11, or 11.0.11). 3. Restart Jetty server. 4. Verify upgrade with version check.

🔧 Temporary Workarounds

Disable HTTP/2

all

Temporarily disable HTTP/2 protocol support to eliminate the vulnerability vector

Configure Jetty to use only HTTP/1.x by removing HTTP/2 connector configuration from jetty.xml or equivalent configuration files

Implement Rate Limiting

all

Configure connection and request rate limits to mitigate resource exhaustion attacks

Configure connection limits in Jetty: <Set name="maxConnections">100</Set>
Implement request throttling at load balancer or reverse proxy level

🧯 If You Can't Patch

  • Implement network-level protections: Use WAF or reverse proxy to filter malformed HTTP/2 requests before they reach Jetty
  • Enable aggressive monitoring: Set up alerts for abnormal connection counts, memory usage spikes, or HTTP/2 error rate increases

🔍 How to Verify

Check if Vulnerable:

Check Jetty version: java -jar start.jar --version or examine server logs for version information. If version is between 9.4.0-9.4.48, 10.0.0-10.0.10, or 11.0.0-11.0.10 with HTTP/2 enabled, system is vulnerable.

Check Version:

java -jar start.jar --version 2>&1 | grep -i jetty || check WEB-INF/lib/jetty-*.jar version

Verify Fix Applied:

Verify Jetty version is 9.4.49, 10.0.11, or 11.0.11 or higher. Test with malformed HTTP/2 requests to confirm proper error handling and resource cleanup.

📡 Detection & Monitoring

Log Indicators:

  • Increased HTTP/2 protocol errors
  • Connection cleanup failures in logs
  • Resource exhaustion warnings
  • Abnormal increase in active connections

Network Indicators:

  • Spike in malformed HTTP/2 requests
  • Unusual patterns of small/incomplete HTTP/2 frames
  • Increased TCP connections without corresponding valid requests

SIEM Query:

source="jetty.log" AND ("HTTP/2 error" OR "connection cleanup" OR "resource exhaustion") | stats count by src_ip

🔗 References

📤 Share & Export